ipa-visibility.c (varpool_node::externally_visible_p): Do not privatize dynamic TLS variables.

* ipa-visibility.c (varpool_node::externally_visible_p): Do not
	privatize dynamic TLS variables.

From-SVN: r215417
This commit is contained in:
Jan Hubicka 2014-09-20 05:11:04 +02:00 committed by Jan Hubicka
parent 26e8257938
commit 8e1ba78f1b
2 changed files with 12 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2014-09-19 Jan Hubicka <hubicka@ucw.cz>
* ipa-visibility.c (varpool_node::externally_visible_p): Do not
privatize dynamic TLS variables.
2014-09-19 Jan Hubicka <hubicka@ucw.cz>
* diagnostic.c (warning_n): New function.

View File

@ -277,6 +277,13 @@ varpool_node::externally_visible_p (void)
if (used_from_object_file_p ())
return true;
/* Bringing TLS variables local may cause dynamic linker failures
on limits of static TLS vars. */
if (DECL_THREAD_LOCAL_P (decl)
&& (DECL_TLS_MODEL (decl) != TLS_MODEL_EMULATED
&& DECL_TLS_MODEL (decl) != TLS_MODEL_INITIAL_EXEC))
return true;
if (DECL_HARD_REGISTER (decl))
return true;
if (DECL_PRESERVE_P (decl))