// { dg-options "-std=c++11 -O2 --param=lipo-sampling-period=1" } #include #include #include #include "tls.h" TLSClass* NextTLSClass() { return new TLSClass(); } int NextId() { static int id = 0; return id++; } void *SetTLSClassHere(TLSClass *a) { current_tls_ = a; } thread_local TLSClass* current_tls2_ = NextTLSClass(); void *SetTLSClass2(TLSClass *a) { current_tls2_ = a; } int main() { int i = 0; if (GetTLSClass()->id != i++) abort(); TLSClass *A = NextTLSClass(); SetTLSClass(A); if (GetTLSClass()->id != i++) abort(); A = NextTLSClass(); SetTLSClassHere(A); if (GetTLSClass()->id != i++) abort(); if (current_tls2_->id != i++) abort(); A = NextTLSClass(); SetTLSClass2(A); if (current_tls2_->id != i++) abort(); }