diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-02-09 22:06:35 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-02-09 21:06:35 +0000 |
commit | 6248441777104cf224e58669aaeb858310b9f668 (patch) | |
tree | 0e603acc6dfe85375a6f585b86a993cc49626d12 /gcc | |
parent | 106b54666459294e68b176e2f2e811e488158880 (diff) | |
download | gcc-6248441777104cf224e58669aaeb858310b9f668.zip gcc-6248441777104cf224e58669aaeb858310b9f668.tar.gz gcc-6248441777104cf224e58669aaeb858310b9f668.tar.bz2 |
re PR ipa/61548 (FAIL: gcc.dg/tls/alias-1.c)
PR ipa/61548
* tree-emutls.c (ipa_lower_emutls): Avoid duplicates in TLS_VARS.
From-SVN: r220549
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-emutls.c | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5f7c621..2791de6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2015-02-08 Jan Hubicka <hubicka@ucw.cz> + PR ipa/61548 + * tree-emutls.c (ipa_lower_emutls): Avoid duplicates in TLS_VARS. + +2015-02-08 Jan Hubicka <hubicka@ucw.cz> + PR ipa/63566 * ipa-icf.c (set_local): New function. (sem_function::merge): Use it. diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c index 68b2aae..b4711a5 100644 --- a/gcc/tree-emutls.c +++ b/gcc/tree-emutls.c @@ -753,17 +753,19 @@ ipa_lower_emutls (void) cgraph_node *func; bool any_aliases = false; tree ctor_body = NULL; - + hash_set <varpool_node *> visited; auto_vec <varpool_node *> tls_vars; /* Examine all global variables for TLS variables. */ FOR_EACH_VARIABLE (var) - if (DECL_THREAD_LOCAL_P (var->decl)) + if (DECL_THREAD_LOCAL_P (var->decl) + && !visited.add (var)) { gcc_checking_assert (TREE_STATIC (var->decl) || DECL_EXTERNAL (var->decl)); tls_vars.safe_push (var); - if (var->alias && var->definition) + if (var->alias && var->definition + && !visited.add (var->ultimate_alias_target ())) tls_vars.safe_push (var->ultimate_alias_target ()); } |