Hi,

I think we can pretty easily fix the remaining minor issue in the thread_local meta-bug: the ICE happens because, after the error, we end up calling cgraph_same_body_alias from handle_tls_init with a null second argument (returned by get_tls_init_fn), thus cgraph_create_function_alias crashes immediately on the line (the whole function doesn't make sense for null alias):

    gcc_assert (TREE_CODE (alias) == FUNCTION_DECL);

Tested x86_64-linux.

Thanks,
Paolo.

////////////////////////
/cp
2014-01-31  Paolo Carlini  <paolo.carl...@oracle.com>

        PR c++/58672
        * decl2.c (handle_tls_init): Don't call cgraph_same_body_alias
        with a null second argument.

/testsuite
2014-01-31  Paolo Carlini  <paolo.carl...@oracle.com>

        PR c++/58672
        * g++.dg/tls/thread_local9.C: New.
Index: cp/decl2.c
===================================================================
--- cp/decl2.c  (revision 207361)
+++ cp/decl2.c  (working copy)
@@ -4036,10 +4036,13 @@ handle_tls_init (void)
       if (TREE_PUBLIC (var))
        {
           tree single_init_fn = get_tls_init_fn (var);
-         cgraph_node *alias
-           = cgraph_same_body_alias (cgraph_get_create_node (fn),
-                                     single_init_fn, fn);
-         gcc_assert (alias != NULL);
+         if (single_init_fn)
+           {
+             cgraph_node *alias
+               = cgraph_same_body_alias (cgraph_get_create_node (fn),
+                                         single_init_fn, fn);
+             gcc_assert (alias != NULL);
+           }
        }
 #endif
     }
Index: testsuite/g++.dg/tls/thread_local9.C
===================================================================
--- testsuite/g++.dg/tls/thread_local9.C        (revision 0)
+++ testsuite/g++.dg/tls/thread_local9.C        (working copy)
@@ -0,0 +1,11 @@
+// PR c++/58672
+// { dg-options "-std=c++11" }
+// { dg-require-effective-target tls }
+
+struct A
+{
+  A(int);
+  i;  // { dg-error "does not name a type" }
+};
+
+thread_local A a(0);

Reply via email to