// If we can see the definition at the use site, we don't need to bother
// with a wrapper.
-// { dg-require-effective-target tls }
// { dg-do compile { target c++11 } }
+// { dg-require-effective-target tls }
// { dg-final { scan-assembler-not "_ZTW1i" } }
thread_local int i = 42;
// If we can't see the definition at the use site, but it's in this translation
// unit, we build a wrapper but don't bother with an init function.
-// { dg-require-effective-target tls }
// { dg-do compile { target c++11 } }
+// { dg-require-effective-target tls }
// { dg-final { scan-assembler "_ZTW1i" } }
// { dg-final { scan-assembler-not "_ZTH1i" } }
// If we can't see the definition at all, we need to assume there might be
// an init function.
+// { dg-do compile { target c++11 } }
// { dg-require-alias "" }
// { dg-require-effective-target tls }
-// { dg-do compile { target c++11 } }
// { dg-final { scan-assembler "_ZTW1i" } }
// { dg-final { scan-assembler "_ZTH1i" } }
// We don't need to call the wrapper through the PLT; we can use a separate
// copy per shared object.
+// { dg-do compile { target c++11 } }
// { dg-require-effective-target tls }
// { dg-require-effective-target fpic }
-// { dg-do compile { target c++11 } }
// { dg-options "-fPIC" }
// { dg-final { scan-assembler-not "_ZTW1i@PLT" { target i?86-*-* x86_64-*-* } } }