re PR c++/63942 (constexpr conflicts with previous declaration)
authorJason Merrill <jason@redhat.com>
Mon, 24 Nov 2014 12:49:08 +0000 (07:49 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 24 Nov 2014 12:49:08 +0000 (07:49 -0500)
PR c++/63942
* mangle.c (mangle_decl): If we aren't going to create a symbol
alias, don't build the alias DECL either.

From-SVN: r218016

gcc/cp/ChangeLog
gcc/cp/mangle.c

index aaa4f29dbfdedcd08c9dca623efd33deb24901bf..d23bad5b9143381f5dcaf43ab5e431a9bf3ec2bb 100644 (file)
@@ -1,3 +1,9 @@
+2014-11-24  Jason Merrill  <jason@redhat.com>
+
+       PR c++/63942
+       * mangle.c (mangle_decl): If we aren't going to create a symbol
+       alias, don't build the alias DECL either.
+
 2014-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/63905
index a24466994f0dd1d504a78ff4ad9758934f1a59aa..71a6e3bf6efbb77681bc1356ce46a7d7f8d68be5 100644 (file)
@@ -3518,6 +3518,12 @@ mangle_decl (const tree decl)
       if (IDENTIFIER_GLOBAL_VALUE (id2))
        return;
 
+      struct cgraph_node *n = NULL;
+      if (TREE_CODE (decl) == FUNCTION_DECL
+         && !(n = cgraph_node::get (decl)))
+       /* Don't create an alias to an unreferenced function.  */
+       return;
+
       tree alias = make_alias_for (decl, id2);
       SET_IDENTIFIER_GLOBAL_VALUE (id2, alias);
       DECL_IGNORED_P (alias) = 1;
@@ -3526,11 +3532,7 @@ mangle_decl (const tree decl)
       if (vague_linkage_p (decl))
        DECL_WEAK (alias) = 1;
       if (TREE_CODE (decl) == FUNCTION_DECL)
-       {
-         /* Don't create an alias to an unreferenced function.  */
-         if (struct cgraph_node *n = cgraph_node::get (decl))
-           n->create_same_body_alias (alias, decl);
-       }
+       n->create_same_body_alias (alias, decl);
       else
        varpool_node::create_extra_name_alias (alias, decl);
 #endif