diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-09-20 05:11:04 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-09-20 03:11:04 +0000 |
commit | 8e1ba78f1b8eedd6c65c6f0e6d6d09a801de5d3d (patch) | |
tree | 747bbde9edb99ee3266d883a819aa1c7fa43e116 /gcc/ipa-visibility.c | |
parent | 26e82579383ea5d8fcf2149eaba65708893f58dc (diff) | |
download | gcc-8e1ba78f1b8eedd6c65c6f0e6d6d09a801de5d3d.zip gcc-8e1ba78f1b8eedd6c65c6f0e6d6d09a801de5d3d.tar.gz gcc-8e1ba78f1b8eedd6c65c6f0e6d6d09a801de5d3d.tar.bz2 |
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
Diffstat (limited to 'gcc/ipa-visibility.c')
-rw-r--r-- | gcc/ipa-visibility.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c index 32199af..ea6052f 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)) |