| // Valid __thread specifiers. | |
| // { dg-require-effective-target tls } | |
| __thread int g1; | |
| extern __thread int g2; | |
| static __thread int g3; | |
| void foo() | |
| { | |
| extern __thread int l1; | |
| static __thread int l2; | |
| } | |
| struct A { | |
| static __thread int i; | |
| }; | |
| __thread int A::i = 42; | |
| template <typename T> struct B { | |
| static __thread T t; | |
| }; | |
| template <typename T> | |
| __thread T B<T>::t = 42; | |
| void bar () | |
| { | |
| int j = B<int>::t; | |
| int k = B<const int>::t; | |
| } |