diff options
author | Jason Merrill <jason@redhat.com> | 2012-10-11 11:13:20 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-10-11 11:13:20 -0400 |
commit | e4cc27e5fb5dec11453797a3ba3515bc573839e4 (patch) | |
tree | 523e0b509df14a28125f5848825c23d5b2e97527 /gcc | |
parent | e8548a47e1230ae493a1b743154bfbc4b82d4a25 (diff) | |
download | gcc-e4cc27e5fb5dec11453797a3ba3515bc573839e4.zip gcc-e4cc27e5fb5dec11453797a3ba3515bc573839e4.tar.gz gcc-e4cc27e5fb5dec11453797a3ba3515bc573839e4.tar.bz2 |
decl.c (grokdeclarator): Set DECL_GNU_TLS_P for static data members, too.
* decl.c (grokdeclarator): Set DECL_GNU_TLS_P for static data
members, too.
From-SVN: r192366
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/tls-5.C | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tls/static2.C | 18 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tls/thread_local7.C | 2 |
6 files changed, 37 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a52b643..eadfb6e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-11 Jason Merrill <jason@redhat.com> + + * decl.c (grokdeclarator): Set DECL_GNU_TLS_P for static data + members, too. + 2012-10-09 Dodji Seketeli <dodji@redhat.com> PR c++/53540 - using fails to be equivalent to typedef diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 0b936ea..e78c664 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -10446,7 +10446,11 @@ grokdeclarator (const cp_declarator *declarator, DECL_EXTERNAL (decl) = 1; if (thread_p) - DECL_TLS_MODEL (decl) = decl_default_tls_model (decl); + { + DECL_TLS_MODEL (decl) = decl_default_tls_model (decl); + if (declspecs->gnu_thread_keyword_p) + DECL_GNU_TLS_P (decl) = true; + } if (constexpr_p && !initialized) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2bb8b92..a9ca341 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-10-11 Jason Merrill <jason@redhat.com> + + * g++.dg/gomp/tls-5.C: Require tls_native. + * g++.dg/tls/thread_local7.C: Require tls_native. + * g++.dg/tls/static2.C: New. + 2012-10-11 Paolo Carlini <paolo.carlini@oracle.com> PR c++/36107 diff --git a/gcc/testsuite/g++.dg/gomp/tls-5.C b/gcc/testsuite/g++.dg/gomp/tls-5.C index 74e4faa..f1dcdae 100644 --- a/gcc/testsuite/g++.dg/gomp/tls-5.C +++ b/gcc/testsuite/g++.dg/gomp/tls-5.C @@ -1,6 +1,7 @@ // The reference temp should be TLS, not normal data. // { dg-require-effective-target c++11 } -// { dg-final { scan-assembler-not "\\.data" } } +// { dg-require-alias } +// { dg-final { scan-assembler-not "\\.data" { target tls_native } } } extern int&& ir; #pragma omp threadprivate (ir) diff --git a/gcc/testsuite/g++.dg/tls/static2.C b/gcc/testsuite/g++.dg/tls/static2.C new file mode 100644 index 0000000..ab688dd --- /dev/null +++ b/gcc/testsuite/g++.dg/tls/static2.C @@ -0,0 +1,18 @@ +// { dg-final { scan-assembler-not "_ZTHN1A1iE" } } +// { dg-final { scan-assembler-not "_ZTWN1A1iE" } } +// { dg-require-effective-target tls } + +struct A +{ + static __thread int i; +}; + +int +test () +{ + if (A::i != 8) + return 1; + + A::i = 17; + return 0; +} diff --git a/gcc/testsuite/g++.dg/tls/thread_local7.C b/gcc/testsuite/g++.dg/tls/thread_local7.C index 77a1c05..f453b96 100644 --- a/gcc/testsuite/g++.dg/tls/thread_local7.C +++ b/gcc/testsuite/g++.dg/tls/thread_local7.C @@ -2,7 +2,7 @@ // { dg-require-effective-target tls } // The reference temp should be TLS, not normal data. -// { dg-final { scan-assembler-not "\\.data" } } +// { dg-final { scan-assembler-not "\\.data" { target tls_native } } } void f() { |