http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58127
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED --- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> --- The secret plan was to not use TLS for emutls. I did not introduce new use of TLS, just use what was already in tree-profile.c: if (targetm.have_tls) DECL_TLS_MODEL (ic_void_ptr_var) = decl_default_tls_model (ic_void_ptr_var); and I think have_tls should be true only for non-emutls targets. on libgcov time we use #ifdef HAVE_CC_TLS __thread #endif There seems to be macro USE_EMUTLS specifying if we have real TLS or emuTLS. I am not sure what of the two tests passes. Perhaps it will help to replace #ifdef HAVE_CC_TLS __thread #endif #if defined(HAVE_CC_TLS) && !defined (USE_EMUTLS) __thread #endif