// PR c++/58624
// { dg-do run { target c++11 } }
// { dg-add-options tls }
// { dg-require-effective-target tls_runtime }
int i;
template <typename> struct A
{
  static thread_local int s;
  A () { i = s; }
};
int f() { return 42; }
template <typename T> thread_local int A<T>::s = f();
int main () {
  A<void> a;
  if (i != 42)
    __builtin_abort();
}