This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ipa/61548] [5 Regression] FAIL: gcc.dg/tls/alias-1.c
- From: "hubicka at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 08 Feb 2015 22:52:22 +0000
- Subject: [Bug ipa/61548] [5 Regression] FAIL: gcc.dg/tls/alias-1.c
- Auto-submitted: auto-generated
- References: <bug-61548-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61548
--- Comment #27 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Does the following patch fix the problem?
Index: tree-emutls.c
===================================================================
--- tree-emutls.c (revision 220509)
+++ tree-emutls.c (working copy)
@@ -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 ());
}