re PR bootstrap/43170 (gcc 4.5 20100218 bootstrap compare fails on os x 10.6)
authorIain Sandoe <iains@gcc.gnu.org>
Wed, 9 Jun 2010 09:27:04 +0000 (09:27 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Wed, 9 Jun 2010 09:27:04 +0000 (09:27 +0000)
config:
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.

From-SVN: r160457

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

index a211292..27f49c2 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 ef7e6d0..4e170c8 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 c298ce9..c2dfeb1 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 3b5b349..e9b3a65 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 47caffe..55d384b 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 c0bfdea..c204809 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 8ea482c..aa88a73 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 65b2daa..03aec3f 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 edb1519..43d1354 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 53f0ce3..0650404 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);