diff options
-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 |