From f9b1eec21582f7801a8ca57463080331db95f2fb Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 24 Nov 2014 07:49:08 -0500 Subject: [PATCH] re PR c++/63942 (constexpr conflicts with previous declaration) 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 | 6 ++++++ gcc/cp/mangle.c | 12 +++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index aaa4f29dbfd..d23bad5b914 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-11-24 Jason Merrill + + 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 PR c++/63905 diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index a24466994f0..71a6e3bf6ef 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -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 -- 2.30.2