This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug ipa/61548] [5 Regression] FAIL: gcc.dg/tls/alias-1.c


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 ());
       }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]