From: hubicka Date: Sat, 20 Sep 2014 03:11:04 +0000 (+0000) Subject: * ipa-visibility.c (varpool_node::externally_visible_p): Do not X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78eb5b700d6ef59c9357dfa56547b48fcc4d593a;p=thirdparty%2Fgcc.git * ipa-visibility.c (varpool_node::externally_visible_p): Do not privatize dynamic TLS variables. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215417 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4c03408368fe..87907fdd6fdf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-09-19 Jan Hubicka + + * ipa-visibility.c (varpool_node::externally_visible_p): Do not + privatize dynamic TLS variables. + 2014-09-19 Jan Hubicka * diagnostic.c (warning_n): New function. diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c index 32199af252f0..ea6052f8861f 100644 --- a/gcc/ipa-visibility.c +++ b/gcc/ipa-visibility.c @@ -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))