]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
config:
authoriains <iains@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Jun 2010 09:27:04 +0000 (09:27 +0000)
committeriains <iains@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Jun 2010 09:27:04 +0000 (09:27 +0000)
PR bootstrap/43170
* tls.m4 (GCC_CHECK_TLS): Add volatile qualifier to the test
references.  Move the main () test reference ahead of
pthread_create().  Add a comment to explain the requirements
of the test.
libgomp:
PR bootstrap/43170
* configure: Regenerate.
libjava:
PR bootstrap/43170
* configure: Regenerate.
libmudflap:
PR bootstrap/43170
* configure: Regenerate.
libstdc++-v3:
PR bootstrap/43170
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160457 138bc75d-0d04-0410-961f-82ee72b054a4

config/ChangeLog
config/tls.m4
libgomp/ChangeLog
libgomp/configure
libjava/ChangeLog
libjava/configure
libmudflap/ChangeLog
libmudflap/configure
libstdc++-v3/ChangeLog
libstdc++-v3/configure

index a211292c15e6cf6f086878b1d64d750fd9234f79..27f49c2ee6a0a7fcfa09306a4bf6aebb0f328eeb 100644 (file)
@@ -1,3 +1,11 @@
+2010-06-09  Iain Sandoe  <iains@gcc.gnu.org>
+
+       PR bootstrap/43170
+       * tls.m4 (GCC_CHECK_TLS): Add volatile qualifier to the test 
+       references.  Move the main () test reference ahead of 
+       pthread_create().  Add a comment to explain the requirements
+       of the test.
+
 2010-06-03  Joern Rennecke <joern.rennecke@embecosm.com>
            Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
index ef7e6d0b555bad6dc41a8de4a13683115686f978..4e170c8d6aec3194bc1124b7726ae478b0fcdbff 100644 (file)
@@ -38,11 +38,16 @@ AC_DEFUN([GCC_CHECK_TLS], [
        CFLAGS="$chktls_save_CFLAGS"
        if test "X$thread_CFLAGS" != Xfailed; then
          CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
+         dnl Test for an old glibc bug that violated the __thread property.
+         dnl Use volatile to ensure the compiler won't optimize away pointer
+         dnl accesses it might otherwise assume to be redundant, or reorder 
+         dnl them and reuse storage, which might lead to them pointing to
+         dnl the same location.
          AC_RUN_IFELSE(
            [AC_LANG_PROGRAM(
               [#include <pthread.h>
                __thread int a;
-               static int *a_in_other_thread;
+               static int *volatile a_in_other_thread;
                static void *
                thread_func (void *arg)
                {
@@ -51,11 +56,11 @@ AC_DEFUN([GCC_CHECK_TLS], [
                }],
               [pthread_t thread;
                void *thread_retval;
-               int *a_in_main_thread;
+               int *volatile a_in_main_thread;
+               a_in_main_thread = &a;
                if (pthread_create (&thread, (pthread_attr_t *)0,
                                    thread_func, (void *)0))
                  return 0;
-               a_in_main_thread = &a;
                if (pthread_join (thread, &thread_retval))
                  return 0;
                return (a_in_other_thread == a_in_main_thread);])],
index c298ce95743daf91b65ec74d09542b028b0376db..c2dfeb147eb915dfd89c416151fc61ac7cc3e633 100644 (file)
@@ -1,3 +1,8 @@
+2010-06-09  Iain Sandoe  <iains@gcc.gnu.org>
+
+       PR bootstrap/43170
+       * configure: Regenerate.
+
 2010-05-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        PR other/43620
index 3b5b3494798d0743aa44f43377e2bebdc804f8f6..e9b3a656291ec280520a5f8c5c73b4fbb9a83285 100755 (executable)
@@ -15380,7 +15380,7 @@ else
 /* end confdefs.h.  */
 #include <pthread.h>
                __thread int a;
-               static int *a_in_other_thread;
+               static int *volatile a_in_other_thread;
                static void *
                thread_func (void *arg)
                {
@@ -15392,11 +15392,11 @@ main ()
 {
 pthread_t thread;
                void *thread_retval;
-               int *a_in_main_thread;
+               int *volatile a_in_main_thread;
+               a_in_main_thread = &a;
                if (pthread_create (&thread, (pthread_attr_t *)0,
                                    thread_func, (void *)0))
                  return 0;
-               a_in_main_thread = &a;
                if (pthread_join (thread, &thread_retval))
                  return 0;
                return (a_in_other_thread == a_in_main_thread);
index 47caffe0438d320b2a186ce4221dc5d547396f84..55d384b146cc63fd4c333904f40b6b65a7a13b08 100644 (file)
@@ -1,3 +1,8 @@
+2010-06-09  Iain Sandoe  <iains@gcc.gnu.org>
+
+       PR bootstrap/43170
+       * configure: Regenerate.
+
 2010-06-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        * configure: Regenerate.
index c0bfdea19dc2f6c99b3dae8d1956bedd50bb91e2..c20480912da8d23d15cc9da0a7a9f4519fbd394f 100755 (executable)
@@ -24390,7 +24390,7 @@ else
 /* end confdefs.h.  */
 #include <pthread.h>
                __thread int a;
-               static int *a_in_other_thread;
+               static int *volatile a_in_other_thread;
                static void *
                thread_func (void *arg)
                {
@@ -24402,11 +24402,11 @@ main ()
 {
 pthread_t thread;
                void *thread_retval;
-               int *a_in_main_thread;
+               int *volatile a_in_main_thread;
+               a_in_main_thread = &a;
                if (pthread_create (&thread, (pthread_attr_t *)0,
                                    thread_func, (void *)0))
                  return 0;
-               a_in_main_thread = &a;
                if (pthread_join (thread, &thread_retval))
                  return 0;
                return (a_in_other_thread == a_in_main_thread);
index 8ea482cd37da2ee56c72c15951f2768a195e4803..aa88a7326eb80a5c73adb33b0bfb6ef6c4cbfb42 100644 (file)
@@ -1,3 +1,8 @@
+2010-06-09  Iain Sandoe  <iains@gcc.gnu.org>
+
+       PR bootstrap/43170
+       * configure: Regenerate.
+
 2010-05-16  Uros Bizjak  <ubizjak@gmail.com>
 
        * testsuite/libmudflap.c/pass46-frag.c (dg-options): Remove -Wall.
index 65b2daa397975b0868750912e94975866b221d5e..03aec3f37294d17f6c298b5bab768ca1d06792db 100755 (executable)
@@ -11479,7 +11479,7 @@ else
 /* end confdefs.h.  */
 #include <pthread.h>
                __thread int a;
-               static int *a_in_other_thread;
+               static int *volatile a_in_other_thread;
                static void *
                thread_func (void *arg)
                {
@@ -11491,11 +11491,11 @@ main ()
 {
 pthread_t thread;
                void *thread_retval;
-               int *a_in_main_thread;
+               int *volatile a_in_main_thread;
+               a_in_main_thread = &a;
                if (pthread_create (&thread, (pthread_attr_t *)0,
                                    thread_func, (void *)0))
                  return 0;
-               a_in_main_thread = &a;
                if (pthread_join (thread, &thread_retval))
                  return 0;
                return (a_in_other_thread == a_in_main_thread);
index edb1519046cc98f9673054058e367d767d762fd8..43d13543169a6df30c35fc369d0787cd9050bdc2 100644 (file)
@@ -1,3 +1,8 @@
+2010-06-09  Iain Sandoe  <iains@gcc.gnu.org>
+
+       PR bootstrap/43170
+       * configure: Regenerate.
+
 2010-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR libstdc++/44413
index 53f0ce3a7f0c0bf14000ef79c1a06145302e2e22..06504044fa0bdd1983a5526886c193188ee09b58 100755 (executable)
@@ -25548,7 +25548,7 @@ else
 /* end confdefs.h.  */
 #include <pthread.h>
                __thread int a;
-               static int *a_in_other_thread;
+               static int *volatile a_in_other_thread;
                static void *
                thread_func (void *arg)
                {
@@ -25560,11 +25560,11 @@ main ()
 {
 pthread_t thread;
                void *thread_retval;
-               int *a_in_main_thread;
+               int *volatile a_in_main_thread;
+               a_in_main_thread = &a;
                if (pthread_create (&thread, (pthread_attr_t *)0,
                                    thread_func, (void *)0))
                  return 0;
-               a_in_main_thread = &a;
                if (pthread_join (thread, &thread_retval))
                  return 0;
                return (a_in_other_thread == a_in_main_thread);
@@ -44486,7 +44486,7 @@ else
 /* end confdefs.h.  */
 #include <pthread.h>
                __thread int a;
-               static int *a_in_other_thread;
+               static int *volatile a_in_other_thread;
                static void *
                thread_func (void *arg)
                {
@@ -44498,11 +44498,11 @@ main ()
 {
 pthread_t thread;
                void *thread_retval;
-               int *a_in_main_thread;
+               int *volatile a_in_main_thread;
+               a_in_main_thread = &a;
                if (pthread_create (&thread, (pthread_attr_t *)0,
                                    thread_func, (void *)0))
                  return 0;
-               a_in_main_thread = &a;
                if (pthread_join (thread, &thread_retval))
                  return 0;
                return (a_in_other_thread == a_in_main_thread);
@@ -50571,7 +50571,7 @@ else
 /* end confdefs.h.  */
 #include <pthread.h>
                __thread int a;
-               static int *a_in_other_thread;
+               static int *volatile a_in_other_thread;
                static void *
                thread_func (void *arg)
                {
@@ -50583,11 +50583,11 @@ main ()
 {
 pthread_t thread;
                void *thread_retval;
-               int *a_in_main_thread;
+               int *volatile a_in_main_thread;
+               a_in_main_thread = &a;
                if (pthread_create (&thread, (pthread_attr_t *)0,
                                    thread_func, (void *)0))
                  return 0;
-               a_in_main_thread = &a;
                if (pthread_join (thread, &thread_retval))
                  return 0;
                return (a_in_other_thread == a_in_main_thread);