]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2007-09-18 Sandra Loosemore <sandra@codesourcery.com>
authorsandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Sep 2007 02:35:29 +0000 (02:35 +0000)
committersandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Sep 2007 02:35:29 +0000 (02:35 +0000)
gcc/testsuite
Restore detection of unsupported TLS.

Revert this patch:
2007-02-10  Richard Henderson  <rth@redhat.com>

* lib/target-supports.exp (check_effective_target_tls): Redefine
to mean non-emulated tls.
* gcc.dg/tls/alias-1.c: Remove tls requirement.
* gcc.dg/tls/asm-1.c, gcc.dg/tls/debug-1.c, gcc.dg/tls/diag-1.c,
gcc.dg/tls/diag-2.c, gcc.dg/tls/diag-3.c, gcc.dg/tls/diag-4.c,
gcc.dg/tls/diag-5.c, gcc.dg/tls/init-1.c, gcc.dg/tls/nonpic-1.c,
gcc.dg/tls/opt-10.c, gcc.dg/tls/opt-5.c, gcc.dg/tls/opt-6.c,
gcc.dg/tls/opt-8.c, gcc.dg/tls/opt-9.c, gcc.dg/tls/pic-1.c,
gcc.dg/tls/struct-1.c, gcc.dg/tls/trivial.c: Likewise.

And then:
* lib/target-supports.exp (check_effective_target_tls): Use
stronger test for compiler support for TLS.
(check_effective_target_tls_native): New, to test for non-emulated
TLS support.
* g++.dg/gomp/clause-3.C: Use dg-require-effective-target tls_native
instead of dg-require-effective-target tls.
* g++.dg/gomp/copyin-1.C: Likewise.
* g++.dg/gomp/sharing-1.C: Likewise.
* g++.dg/gomp/tls-1.C: Likewise.
* g++.dg/gomp/tls-2.C: Likewise.
* g++.dg/gomp/tls-3.C: Likewise.
* g++.dg/tls/diag-1.C: Likewise.
* g++.dg/tls/diag-2.C: Likewise.
* g++.dg/tls/diag-3.C: Likewise.
* g++.dg/tls/diag-4.C: Likewise.
* g++.dg/tls/diag-5.C: Likewise.
* g++.dg/tls/init-1.C: Likewise.
* g++.dg/tls/init-2.C: Likewise.
* g++.dg/tls/trivial.C: Likewise.
* gcc.dg/gomp/appendix-a/a.22.1.c: Likewise.
* gcc.dg/gomp/appendix-a/a.22.2.c: Likewise.
* gcc.dg/gomp/appendix-a/a.24.1.c: Likewise.
* gcc.dg/gomp/appendix-a/a.32.1.c: Likewise.
* gcc.dg/gomp/appendix-a/a.33.1.c: Likewise.
* gcc.dg/gomp/clause-1.c: Likewise.
* gcc.dg/gomp/copyin-1.c: Likewise.
* gcc.dg/gomp/sharing-1.c: Likewise.
* gcc.dg/gomp/tls-1.c: Likewise.
* gcc.dg/gomp/tls-2.c: Likewise.
* gcc.dg/tls/alpha-1.c: Likewise.
* gcc.dg/tls/opt-1.c: Likewise.
* gcc.dg/tls/opt-13.c: Likewise.
* gcc.dg/tls/opt-14.c: Likewise.
* gcc.dg/tls/opt-2.c: Likewise.
* gcc.dg/tls/opt-3.c: Likewise.
* gcc.dg/tls/opt-4.c: Likewise.
* gcc.dg/tls/opt-7.c: Likewise.
* gcc.dg/tls/section-1.c: Likewise.
* gfortran.dg/gomp/appendix-a/a.22.1.f90: Likewise.
* gfortran.dg/gomp/appendix-a/a.22.4.f90: Likewise.
* gfortran.dg/gomp/appendix-a/a.22.5.f90: Likewise.
* gfortran.dg/gomp/appendix-a/a.22.6.f90: Likewise.
* gfortran.dg/gomp/appendix-a/a.24.1.f90: Likewise.
* gfortran.dg/gomp/appendix-a/a.32.1.f90: Likewise.
* gfortran.dg/gomp/appendix-a/a.33.1.f90: Likewise.
* gfortran.dg/gomp/crayptr2.f90: Likewise.
* gfortran.dg/gomp/fixed-1.f: Likewise.
* gfortran.dg/gomp/free-1.f90: Likewise.
* gfortran.dg/gomp/omp_threadprivate1.f90: Likewise.
* gfortran.dg/gomp/omp_threadprivate2.f90: Likewise.
* gfortran.dg/gomp/reduction1.f90: Likewise.
* gfortran.dg/gomp/sharing-1.f90: Likewise.

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

67 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/gomp/clause-3.C
gcc/testsuite/g++.dg/gomp/copyin-1.C
gcc/testsuite/g++.dg/gomp/sharing-1.C
gcc/testsuite/g++.dg/gomp/tls-1.C
gcc/testsuite/g++.dg/gomp/tls-2.C
gcc/testsuite/g++.dg/gomp/tls-3.C
gcc/testsuite/g++.dg/tls/diag-1.C
gcc/testsuite/g++.dg/tls/diag-2.C
gcc/testsuite/g++.dg/tls/diag-3.C
gcc/testsuite/g++.dg/tls/diag-4.C
gcc/testsuite/g++.dg/tls/diag-5.C
gcc/testsuite/g++.dg/tls/init-1.C
gcc/testsuite/g++.dg/tls/init-2.C
gcc/testsuite/g++.dg/tls/trivial.C
gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c
gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c
gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c
gcc/testsuite/gcc.dg/gomp/appendix-a/a.32.1.c
gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.1.c
gcc/testsuite/gcc.dg/gomp/clause-1.c
gcc/testsuite/gcc.dg/gomp/copyin-1.c
gcc/testsuite/gcc.dg/gomp/sharing-1.c
gcc/testsuite/gcc.dg/gomp/tls-1.c
gcc/testsuite/gcc.dg/gomp/tls-2.c
gcc/testsuite/gcc.dg/tls/alias-1.c
gcc/testsuite/gcc.dg/tls/alpha-1.c
gcc/testsuite/gcc.dg/tls/asm-1.c
gcc/testsuite/gcc.dg/tls/debug-1.c
gcc/testsuite/gcc.dg/tls/diag-1.c
gcc/testsuite/gcc.dg/tls/diag-2.c
gcc/testsuite/gcc.dg/tls/diag-3.c
gcc/testsuite/gcc.dg/tls/diag-4.c
gcc/testsuite/gcc.dg/tls/diag-5.c
gcc/testsuite/gcc.dg/tls/init-1.c
gcc/testsuite/gcc.dg/tls/nonpic-1.c
gcc/testsuite/gcc.dg/tls/opt-1.c
gcc/testsuite/gcc.dg/tls/opt-10.c
gcc/testsuite/gcc.dg/tls/opt-13.c
gcc/testsuite/gcc.dg/tls/opt-14.c
gcc/testsuite/gcc.dg/tls/opt-2.c
gcc/testsuite/gcc.dg/tls/opt-3.c
gcc/testsuite/gcc.dg/tls/opt-4.c
gcc/testsuite/gcc.dg/tls/opt-5.c
gcc/testsuite/gcc.dg/tls/opt-6.c
gcc/testsuite/gcc.dg/tls/opt-7.c
gcc/testsuite/gcc.dg/tls/opt-8.c
gcc/testsuite/gcc.dg/tls/opt-9.c
gcc/testsuite/gcc.dg/tls/pic-1.c
gcc/testsuite/gcc.dg/tls/section-1.c
gcc/testsuite/gcc.dg/tls/struct-1.c
gcc/testsuite/gcc.dg/tls/trivial.c
gcc/testsuite/gfortran.dg/gomp/appendix-a/a.22.1.f90
gcc/testsuite/gfortran.dg/gomp/appendix-a/a.22.4.f90
gcc/testsuite/gfortran.dg/gomp/appendix-a/a.22.5.f90
gcc/testsuite/gfortran.dg/gomp/appendix-a/a.22.6.f90
gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90
gcc/testsuite/gfortran.dg/gomp/appendix-a/a.32.1.f90
gcc/testsuite/gfortran.dg/gomp/appendix-a/a.33.1.f90
gcc/testsuite/gfortran.dg/gomp/crayptr2.f90
gcc/testsuite/gfortran.dg/gomp/fixed-1.f
gcc/testsuite/gfortran.dg/gomp/free-1.f90
gcc/testsuite/gfortran.dg/gomp/omp_threadprivate1.f90
gcc/testsuite/gfortran.dg/gomp/omp_threadprivate2.f90
gcc/testsuite/gfortran.dg/gomp/reduction1.f90
gcc/testsuite/gfortran.dg/gomp/sharing-1.f90
gcc/testsuite/lib/target-supports.exp

index b0e1b9fa6cd1ce8f37825dac85cb400feca76af9..0f7b6af0e9f8fcca5cf8fdbae8af159f3263bcec 100644 (file)
@@ -1,3 +1,74 @@
+2007-09-18  Sandra Loosemore  <sandra@codesourcery.com>
+
+       Restore detection of unsupported TLS.
+
+       Revert this patch:
+       2007-02-10  Richard Henderson  <rth@redhat.com>
+
+       * lib/target-supports.exp (check_effective_target_tls): Redefine
+       to mean non-emulated tls.
+       * gcc.dg/tls/alias-1.c: Remove tls requirement.
+       * gcc.dg/tls/asm-1.c, gcc.dg/tls/debug-1.c, gcc.dg/tls/diag-1.c,
+       gcc.dg/tls/diag-2.c, gcc.dg/tls/diag-3.c, gcc.dg/tls/diag-4.c,
+       gcc.dg/tls/diag-5.c, gcc.dg/tls/init-1.c, gcc.dg/tls/nonpic-1.c,
+       gcc.dg/tls/opt-10.c, gcc.dg/tls/opt-5.c, gcc.dg/tls/opt-6.c,
+       gcc.dg/tls/opt-8.c, gcc.dg/tls/opt-9.c, gcc.dg/tls/pic-1.c,
+       gcc.dg/tls/struct-1.c, gcc.dg/tls/trivial.c: Likewise.
+
+       And then:
+       * lib/target-supports.exp (check_effective_target_tls): Use
+       stronger test for compiler support for TLS.
+       (check_effective_target_tls_native): New, to test for non-emulated
+       TLS support.
+       * g++.dg/gomp/clause-3.C: Use dg-require-effective-target tls_native
+       instead of dg-require-effective-target tls.
+       * g++.dg/gomp/copyin-1.C: Likewise.
+       * g++.dg/gomp/sharing-1.C: Likewise.
+       * g++.dg/gomp/tls-1.C: Likewise.
+       * g++.dg/gomp/tls-2.C: Likewise.
+       * g++.dg/gomp/tls-3.C: Likewise.
+       * g++.dg/tls/diag-1.C: Likewise.
+       * g++.dg/tls/diag-2.C: Likewise.
+       * g++.dg/tls/diag-3.C: Likewise.
+       * g++.dg/tls/diag-4.C: Likewise.
+       * g++.dg/tls/diag-5.C: Likewise.
+       * g++.dg/tls/init-1.C: Likewise.
+       * g++.dg/tls/init-2.C: Likewise.
+       * g++.dg/tls/trivial.C: Likewise.
+       * gcc.dg/gomp/appendix-a/a.22.1.c: Likewise.
+       * gcc.dg/gomp/appendix-a/a.22.2.c: Likewise.
+       * gcc.dg/gomp/appendix-a/a.24.1.c: Likewise.
+       * gcc.dg/gomp/appendix-a/a.32.1.c: Likewise.
+       * gcc.dg/gomp/appendix-a/a.33.1.c: Likewise.
+       * gcc.dg/gomp/clause-1.c: Likewise.
+       * gcc.dg/gomp/copyin-1.c: Likewise.
+       * gcc.dg/gomp/sharing-1.c: Likewise.
+       * gcc.dg/gomp/tls-1.c: Likewise.
+       * gcc.dg/gomp/tls-2.c: Likewise.
+       * gcc.dg/tls/alpha-1.c: Likewise.
+       * gcc.dg/tls/opt-1.c: Likewise.
+       * gcc.dg/tls/opt-13.c: Likewise.
+       * gcc.dg/tls/opt-14.c: Likewise.
+       * gcc.dg/tls/opt-2.c: Likewise.
+       * gcc.dg/tls/opt-3.c: Likewise.
+       * gcc.dg/tls/opt-4.c: Likewise.
+       * gcc.dg/tls/opt-7.c: Likewise.
+       * gcc.dg/tls/section-1.c: Likewise.
+       * gfortran.dg/gomp/appendix-a/a.22.1.f90: Likewise.
+       * gfortran.dg/gomp/appendix-a/a.22.4.f90: Likewise.
+       * gfortran.dg/gomp/appendix-a/a.22.5.f90: Likewise.
+       * gfortran.dg/gomp/appendix-a/a.22.6.f90: Likewise.
+       * gfortran.dg/gomp/appendix-a/a.24.1.f90: Likewise.
+       * gfortran.dg/gomp/appendix-a/a.32.1.f90: Likewise.
+       * gfortran.dg/gomp/appendix-a/a.33.1.f90: Likewise.
+       * gfortran.dg/gomp/crayptr2.f90: Likewise.
+       * gfortran.dg/gomp/fixed-1.f: Likewise.
+       * gfortran.dg/gomp/free-1.f90: Likewise.
+       * gfortran.dg/gomp/omp_threadprivate1.f90: Likewise.
+       * gfortran.dg/gomp/omp_threadprivate2.f90: Likewise.
+       * gfortran.dg/gomp/reduction1.f90: Likewise.
+       * gfortran.dg/gomp/sharing-1.f90: Likewise.
+
 2007-09-18  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
        PR fortran/31119
index 6b3d410a9334c442405287bd8889526dcd6ee69c..055c189a5587952162405c2fd437df4ad7b9a2a7 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 #define p parallel
 
index 117f82f8134f75d3ff67a8d53132f3769fbdb003..f984d10b47182f9cfe4902c97b8c9cccd3b06498 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 int i, j;
 
index 83b818098342580e903b64b4d17a26ba2ef74b7e..25626ff2028949bfa5f577981db65108a335afa9 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 int thrglobalvar;
 #pragma omp threadprivate (thrglobalvar)
index bfe62cb009b300d6f9c5c575af695517d87f97ef..13d2c0d3979656dec807f835f6c61c4ed740bdc0 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 int tp1;
 static int tp2;
index 80275f9081c20e98be4166769c4df415b167e3a6..26dbc53e5f8051ec4d5f08b86e048af4059778d0 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 extern char buf[];
 #pragma omp threadprivate (buf)        /* { dg-error "has incomplete type" } */
index c42d74c4d5770f667fc1ba4796e070dfffc8717e..96baec9453eef93cec59adb0ea4c3442acf2e837 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 #define thr threadprivate
 
index af538719d243732d3ef9fe3580346bae57a54f46..beeeccb0c0bd2e710fcfb1a60cef15597f40e97c 100644 (file)
@@ -1,5 +1,5 @@
 // Valid __thread specifiers.
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 __thread int g1;
 extern __thread int g2;
index 484b18845150cb90346061b3a14ffd99818190e7..b48b7d72fdff62b1dbccc402eb03958de2ad0e55 100644 (file)
@@ -1,5 +1,5 @@
 /* Invalid __thread specifiers.  */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 __thread extern int g1;                /* { dg-error "'__thread' before 'extern'" } */
 __thread static int g2;                /* { dg-error "'__thread' before 'static'" } */
index ea5158b898fff486c82664677636391e03e5bb72..0a05cff186e053640d81e35d1a1dcc7b47a2a506 100644 (file)
@@ -1,5 +1,5 @@
 // Report invalid extern and __thread combinations.
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 extern int j;          // { dg-error "previously declared here" }
 __thread int j;                // { dg-error "follows non-thread-local" }
index 55e985e9261da7029b5b23d7f5284ea4bf117e5f..6fb9215a668eb6718c7940554d65d0d45cb08496 100644 (file)
@@ -1,5 +1,5 @@
 /* Invalid __thread specifiers.  */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 __thread typedef int g4;       /* { dg-error "multiple storage classes" } */
 
index ca92b3074288ae1ce4a425a0602798e510b74ca3..5859a3d127c109ff3d05500f1d7570edf216347e 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/30536
 // Invalid __thread specifiers.
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 struct A { __thread register int i; }; // { dg-error "multiple storage classes|storage class specified" }
index 97867123a95f70f0aab0c8c10b46dea0b0d095cb..91a3afe87e41792d40d489f6398cf76a3b5d8190 100644 (file)
@@ -1,5 +1,5 @@
 /* Valid initializations.  */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 __thread int i = 42;
 
index c9f646d3a1d93db2f4f1dbd71ea5304131be0fb5..b4407d33a715f42d95ab739a56e7a07fc263e0f1 100644 (file)
@@ -1,5 +1,5 @@
 /* Invalid initializations.  */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 extern __thread int i;
 __thread int *p = &i;  /* { dg-error "dynamically initialized" } */
index e2b8f45b84543d3b1ccce19342d915e195b7d1b5..6c30da7274744611f4295e59ca8573c3fec90f1f 100644 (file)
@@ -1,3 +1,3 @@
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 __thread int i;
index e3586838a34086ff082afbdf439fcdc0674beacb..2cc14888c5c426a60488b44aea78a8b5d8146587 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 int counter = 0;
 #pragma omp threadprivate(counter)
index 7a6e901a8c73806ae5a337900480820a78df0ac7..171bc2094c54d1009d8a69633a3f8d6dcc6b0baa 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 int
 increment_counter_2 ()
index 9d8baa37f2341a87618be3e56a03ec96d9b30144..5662e70c54fd0aadc17dcf011a2e799001bd9435 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 extern int omp_get_num_threads (void);
 int x, y, t, z[1000];
index d2cb316f3cc0ec4cb15b898a7fcb4756f67f6a45..89d841c7956547de09038cb15eb7e37306c3d298 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 #include <stdlib.h>
 float *work;
index 99c06da6a5dc305f2153c7b5950c75b983091fba..364a71e22a0c6442ce1c8c66d413903b8859be69 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 #include <stdio.h>
 float x, y;
index ace9738043a98016e8f6ed24653e3398f79f3ec6..cfab168af91ede09746ec1ed96e77fb8d2039f44 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 #define p parallel
 
index 117f82f8134f75d3ff67a8d53132f3769fbdb003..f984d10b47182f9cfe4902c97b8c9cccd3b06498 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 int i, j;
 
index 90d389b7292592fcb53f02997f5d8d07dde48d39..6b53efe4e4ef6a1c73e02e254697a5f30bc90889 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 #include <stdlib.h>
 
index 9dc102e7e61db44454bca6484931faf94b5c50c9..7a36c2db65ee7269fe8b14ef761346a022f85021 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_native }
 
 int tp1;
 static int tp2;
index 80275f9081c20e98be4166769c4df415b167e3a6..26dbc53e5f8051ec4d5f08b86e048af4059778d0 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 extern char buf[];
 #pragma omp threadprivate (buf)        /* { dg-error "has incomplete type" } */
index 1098190ebd04acb16f6b7a7f690f28048b39601b..28cb47e504190dcac02a68636152c250eb1ad0f9 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do link } */
 /* { dg-require-alias "" } */
 /* { dg-require-visibility "" } */
+/* { dg-require-effective-target tls } */
 /* Test that encode_section_info handles the change from externally
    defined to locally defined (via hidden).   Extracted from glibc.  */
 
index 1d15cb1681cbc1a8f83c65906999dfd795280ae2..1f0d6eda1d884fa4420cb1386a5cbe81e68ea5fe 100644 (file)
@@ -1,7 +1,7 @@
 /* Make sure that we honor initial-exec.  */
 /* { dg-do compile { target alpha*-*-* } } */
 /* { dg-options "" } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 static __thread int xyzzy __attribute__ ((tls_model ("initial-exec")));
 int foo(void) { return xyzzy; }
index 476fe7cbb72e5c792cdd0f1a8a15f05081d60d25..b77e550d7bf7f29976b3f5e8d6242182379a1170 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-options "-Werror" } */
+/* { dg-require-effective-target tls } */
 __thread int i;
 
 int foo ()
index 719f0645771ae608dbe6dbb655163f86f4e74938..67d7be69cc50c8be3658c30440dce591e61b3449 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do assemble } */
 /* { dg-options "-g" } */
+/* { dg-require-effective-target tls } */
 
 __thread int i;
index ae4f3d4a3c28c7e9b21f58724078572f5fc2b020..56b570c94a5c74803232ad254ba9e661fe429a34 100644 (file)
@@ -1,4 +1,5 @@
 /* Valid __thread specifiers.  */
+/* { dg-require-effective-target tls } */
 
 __thread int g1;
 extern __thread int g2;
index 5e7e17bee5ab64144f2c64ef8bff08a66fa364f9..8276cb3be4902553c2da9b5d64685480bcf9e51a 100644 (file)
@@ -1,4 +1,5 @@
 /* Invalid __thread specifiers.  */
+/* { dg-require-effective-target tls } */
 
 __thread extern int g1;                /* { dg-error "'__thread' before 'extern'" } */
 __thread static int g2;                /* { dg-error "'__thread' before 'static'" } */
index f1ce06b70d8f8e6c406a0e19b0fc4a928b89c11c..45d89b43722b74566620b43767408c45282fb043 100644 (file)
@@ -1,4 +1,5 @@
 /* Report invalid extern and __thread combinations.  */
+/* { dg-require-effective-target tls } */
 
 extern int j;          /* { dg-error "previous declaration" } */
 __thread int j;                /* { dg-error "follows non-thread-local" } */
index df3705d04ee2f1f3c6f4ff621cff7016ccf1efe9..fed2f3accd33fcfd9e9a341b479b8ac302df760f 100644 (file)
@@ -1,5 +1,6 @@
 /* Invalid __thread specifiers.  As diag-4.c but some cases in
    different orders.  */
+/* { dg-require-effective-target tls } */
 
 __thread typedef int g4;       /* { dg-error "'__thread' used with 'typedef'" } */
 
index d86046f500c2245503a53c6eae32c989056e561e..ac78cb2951d5e6bbb4010b8b112a2ebf0c78c31c 100644 (file)
@@ -1,3 +1,4 @@
 /* __thread specifiers on empty declarations.  */
+/* { dg-require-effective-target tls } */
 
 __thread struct foo; /* { dg-warning "useless '__thread' in empty declaration" } */
index 97258643bf2807b56996fb09c72f594501489947..fa4208dce0c1cac31e44f54446e70bfb5ef69678 100644 (file)
@@ -1,4 +1,5 @@
 /* Invalid initializations.  */
+/* { dg-require-effective-target tls } */
 
 extern __thread int i;
 int *p = &i;   /* { dg-error "initializer element is not constant" } */
index 0896df60b56533c9ca475f02e4c4479d71973450..9c592a985563850b4ab8158c8aefa3294155860f 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -ftls-model=initial-exec" } */
+/* { dg-require-effective-target tls } */
 
 extern __thread long e1;
 extern __thread int e2;
index f9399e04a88e4717e7a2b7253345f597f17e10a3..f96bb676838cf8679a8cc8bef2af154e01c78fbb 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fPIC" } */
 /* { dg-options "-O2 -fPIC -mtune=i686" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 /* { dg-require-effective-target fpic } */
 
 extern __thread int thr;
index 777e585569a0d41a0240cc83dff0c0d131794b34..15dc6861042fb0690b6d84a84b888fd3aeb814bc 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target fpic } */
 /* { dg-options "-O3 -fpic" } */
+/* { dg-require-effective-target tls } */
 
 /* The web pass was creating unrecognisable pic_load_dot_plus_four insns
    on ARM.  */
index 8eea76b68ab5f72cac09a8f7efedf37962e736ff..aadfb288f3fa248fe1c2972da826c85930044451 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 __thread struct
 {
index 5abeacea7d31e9e67a66be9ee870d22ff4244489..2549c896742c7ae06466f0b6c46fa47b1090cbd4 100644 (file)
@@ -3,7 +3,7 @@
    used.  */
 /* { dg-do assemble } */
 /* { dg-options "-O2" } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 struct __res_state
 {
index b4cabd483478ba979d8836532dca6e26b70262a4..8038d1c6ffb74e42f95cf544bdef7d004d41d4ee 100644 (file)
@@ -5,7 +5,7 @@
 /* { dg-do link } */
 /* { dg-options "-O2 -ftls-model=initial-exec" } */
 /* { dg-options "-O2 -ftls-model=initial-exec -march=i686" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 __thread int thr;
 
index dd37dbc828a954d0da57b7e57dabf53342607506..61f5bdbbaf245369687d8c74a125ed1f45a29b3c 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fpic" } */
 /* { dg-options "-O2 -fpic -mregparm=3" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 /* { dg-require-effective-target fpic } */
 
 extern __thread int i, j, k;
index aa59ee7fabf083780814b0276965bc6a8c9769dd..3d7953b47efdae1cea565d5aad87b0c0147f6573 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 struct A
 {
index ee71cad3c02bf257b29df4df906019679ab29128..0ae9f075d7ae50d26bdddcb1411334e05151c0fb 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
+/* { dg-require-effective-target tls } */
 /* Sched1 moved {load_tp} pattern between strlen call and the copy
    of the hard return value to its pseudo.  This resulted in a
    reload abort, since the hard register was not spillable.  */
index de04c1cb3fc494822ef279b9f1fc124919dfbe76..8a01c019c10b99cc4e9080ea268ff8fa7d59b94e 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
+/* { dg-require-effective-target tls } */
 
 extern void abort (void);
 extern void exit (int);
index 44b900f542a72ea0708f70ba7dc15f55c5e224d5..d3e81f45e1d978057ce31848b7b09a5dede47419 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fPIC" } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 /* { dg-require-effective-target fpic } */
 
 static __thread void *baz [4] __attribute__((tls_model ("initial-exec")));
index dec0eabcb4ce749ebeb4dbb356cc3113bbc800eb..a7331115352c632de00727174fa651717fac326d 100644 (file)
@@ -1,6 +1,7 @@
 /* PR 18910 */
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
+/* { dg-require-effective-target tls } */
 
 static __thread void *foo [2];
 void
index 4cc16313b1c5569523cbf53c5a0798837084610e..49aa9085fddd0a3837cf5c2cbfb43fa4be2f198a 100644 (file)
@@ -2,6 +2,7 @@
 /* { dg-do compile */
 /* { dg-require-effective-target fpic } */
 /* { dg-options "-O2 -fPIC" } */
+/* { dg-require-effective-target tls } */
 
 struct S { int x[10]; };
 extern __thread struct S s;
index f40267c10a3f9d26f85adc8298b8e4bad7ff59f9..9108b58aa5034e487ed90e46fae26e70a4c598fe 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target fpic } */
 /* { dg-options "-O2 -fpic -ftls-model=global-dynamic" } */
+/* { dg-require-effective-target tls } */
 
 extern __thread long e1;
 extern __thread int e2;
index 4fc5066b90dcb71b8620aa9d13fb06ffc1c6f3f0..1ca2ffb907062bb42e198085b3c718916184d4dc 100644 (file)
@@ -1,6 +1,6 @@
 /* Verify that we get errors for trying to put TLS data in 
    sections which can't work.  */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
 
 #define A(X)   __attribute__((section(X)))
 
index cf931bf9e62ca2ef1792a6605e66116ef9646c18..fbe3e3c102e6d671c3bc75239199356c8d910db9 100644 (file)
@@ -3,6 +3,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target fpic } */
 /* { dg-options "-O2 -fpic" } */
+/* { dg-require-effective-target tls } */
 
 struct S {
   int s0, s1, s2, s3;
index 1fd70631f33b78379c81232b8e5e8f8ab1094618..96b8e49a665c4bd2323ef28269c01ac120e98824 100644 (file)
@@ -1 +1,3 @@
+/* { dg-require-effective-target tls } */
+
 __thread int i;
index cc94b140384c55e9fdfd20f1ae1d0ab2f6f5e4ae..96b6abc9187d6458747ef661353be13eda0303b7 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
       INTEGER FUNCTION INCREMENT_COUNTER()
         COMMON/A22_COMMON/COUNTER
index 2a637580ba7ade20bf3a37b220845d7f548ac510..a272af5c7051c2342ad6d0fe64adbcfc3c9210d5 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
       MODULE A22_MODULE
       COMMON /T/ A
index 6531d826c576d8a77bfc59f89f062a7ca8200a4f..abd911fa687effc79487120f16ead0c650ead439 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
       SUBROUTINE A22_5_WRONG()
         COMMON /T/ A
index 0a2e6a6836f88d07797700ffd3f9a24bb619c094..1d745932c8fc126c74aca69cfcc6a8362fea1d1a 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
        SUBROUTINE A22_6_GOOD()
              COMMON /T/ A
index e5b95450d28bbba2cfd7e49836cc108adc37b63e..87388e3ec9f61375046d58c7e8e7a835a2e87be1 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
       SUBROUTINE A24(A)
       INTEGER A
index 498a6d324a6bf6cc10c5b5eb876fcbfbb551fa01..8bf2010a4379c705cc5a9cbf9f09a411df0a2d6d 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
       MODULE M
         REAL, POINTER, SAVE :: WORK(:)
index 05145b1715f460339ff61ecca233361d64f303bf..a161d5441d5c5c7d99f0cc243628ab9637aef1f8 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
       SUBROUTINE INIT(A,B)
       REAL A, B
index 476d7b9e771c2fabaf236620f44f370eba601865..0032080c792337df1179b715d6a723a74e53f4c5 100644 (file)
@@ -1,6 +1,6 @@
 ! { dg-do compile }
 ! { dg-options "-fopenmp -fcray-pointer" }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
 module crayptr2
   integer :: e         ! { dg-error "CRAY POINTEE attribute conflicts with THREADPRIVATE" }
index d61f2ba638d7fa8731bfd59077886071e471724e..83233567fca5b4195a8ecda6add2f25e9e3f10b0 100644 (file)
@@ -1,6 +1,6 @@
 C PR fortran/24493
 C { dg-do compile }
-C { dg-require-effective-target tls }
+C { dg-require-effective-target tls_native }
       INTEGER I, J, K, L, M
 C$OMP THREADPRIVATE(I)
 C SOME COMMENT
index f6f9de4441bc6b8bf22a7a087b13648ae0927e38..3503389cea0ba702107ffcb2ab788d534b3e7b54 100644 (file)
@@ -1,4 +1,4 @@
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
 subroutine foo
 integer, save :: i ! Some comment
index 2ccf93caca56d5a3c653ce5bbec1ed2f273bf667..2380e3bbface1001b74dd71fee87a6edb69de3cd 100644 (file)
@@ -1,4 +1,4 @@
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
       module omp_threadprivate1
        common /T/ a
       end module omp_threadprivate1
index cd1ab5cd60a3fc248c78b3c568454e002c13573a..3112afd1bf1695c555f45a7e38923b6daf942e32 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
       subroutine bad1
        double precision :: d   ! { dg-error "isn't SAVEd" }
 !$omp threadprivate (d)
index b6575063c36eb5198bab227fcf759bc0f9979073..108e5dc4155a943aeaba85294da5a878f3251525 100644 (file)
@@ -1,6 +1,6 @@
 ! { dg-do compile }
 ! { dg-options "-fopenmp -fmax-errors=100" }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
 subroutine foo (ia1)
 integer :: i1, i2, i3
index 7a107ffe7cbd9a61e8ef0530000a1cdaeb925966..89bc6a8e397ab94739570e84b0355bebb4884fdc 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-require-effective-target tls }
+! { dg-require-effective-target tls_native }
 
   integer :: thrpriv, thr, i, j, s, g1, g2, m
   integer, dimension (6) :: p
index 0a74b3d9e79e9cc7d62c784a8a56792cad32ed36..5a39b8608d21b2ebe1b7bda08a6520160e787ef6 100644 (file)
@@ -411,7 +411,7 @@ proc check_effective_target_pcc_bitfield_type_matters { } {
     }]
 }
 
-# Return 1 if *native* thread local storage (TLS) is supported, 0 otherwise.
+# Return 1 if thread local storage (TLS) is supported, 0 otherwise.
 #
 # This won't change for different subtargets so cache the result.
 
@@ -422,35 +422,75 @@ proc check_effective_target_tls {} {
     if [info exists et_tls_saved] {
        verbose "check_effective_target_tls: using cached result" 2
     } else {
-       set et_tls_saved 1
+       set et_tls_saved 0
 
        set src tls[pid].c
        set asm tls[pid].S
        verbose "check_effective_target_tls: compiling testfile $src" 2
        set f [open $src "w"]
-       # Compile a small test program.
+       # Compile a small test program.  Make sure that we test accesses
+       # as well as declarations.  
+       puts $f "__thread int i;\n"
+       puts $f "int f (void) { return i; }\n"
+       puts $f "void g (int j) { i = j; }\n"
+       close $f
+
+       # Test for thread-local data supported by the platform.
+       set comp_output \
+           [${tool}_target_compile $src $asm assembly ""]
+       file delete $src
+       if { [string match "" $comp_output] } {
+           # No error messages, everything is OK.
+           set et_tls_saved 1
+       }
+       remove-build-file $asm
+    }
+    verbose "check_effective_target_tls: returning $et_tls_saved" 2
+    return $et_tls_saved
+}
+
+# Return 1 if *native* thread local storage (TLS) is supported, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_tls_native {} {
+    global et_tls_native_saved
+    global tool
+
+    if [info exists et_tls_saved] {
+       verbose "check_effective_target_tls_native: using cached result" 2
+    } else {
+       set et_tls_native_saved 0
+
+       set src tls[pid].c
+       set asm tls[pid].S
+       verbose "check_effective_target_tls_native: compiling testfile $src" 2
+       set f [open $src "w"]
+       # Compile a small test program.  Make sure that we test accesses
+       # as well as declarations.  
        puts $f "__thread int i;\n"
+       puts $f "int f (void) { return i; }\n"
+       puts $f "void g (int j) { i = j; }\n"
        close $f
 
        # Test for thread-local data supported by the platform.
        set comp_output [${tool}_target_compile $src $asm assembly ""]
        file delete $src
-       if { [string match "*not supported*" $comp_output] } {
-           set et_tls_saved 0
-       } else {
+       if { [string match "" $comp_output] } {
+           # No error messages, everything is OK.
            set fd [open $asm r]
            set text [read $fd]
            close $fd
            if { [string match "*emutls*" $text]} {
-               set et_tls_saved 0
+               set et_tls_native_saved 0
            } else {
-               set et_tls_saved 1
+               set et_tls_native_saved 1
            }
        }
        remove-build-file $asm
     }
-    verbose "check_effective_target_tls: returning $et_tls_saved" 2
-    return $et_tls_saved
+    verbose "check_effective_target_tls_native: returning $et_tls_native_saved" 2
+    return $et_tls_native_saved
 }
 
 # Return 1 if TLS executables can run correctly, 0 otherwise.