diff options
author | Jason Merrill <jason@redhat.com> | 2014-11-24 07:49:08 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-11-24 07:49:08 -0500 |
commit | f9b1eec21582f7801a8ca57463080331db95f2fb (patch) | |
tree | 52c9152dc1591fb04a2175e3c1536f43a2855c8c /gcc | |
parent | 691b9fb7a2a752995591b9e1196d0e8588401d51 (diff) | |
download | gcc-f9b1eec21582f7801a8ca57463080331db95f2fb.zip gcc-f9b1eec21582f7801a8ca57463080331db95f2fb.tar.gz gcc-f9b1eec21582f7801a8ca57463080331db95f2fb.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/mangle.c | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index aaa4f29..d23bad5 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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 diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index a244669..71a6e3b 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 |