diff options
author | Jason Merrill <jason@redhat.com> | 2014-05-28 12:38:23 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-05-28 12:38:23 -0400 |
commit | d67ff7b75deab58eaac2edccafbc55d32f60ed0d (patch) | |
tree | 53efc05fb878998b2cf66e3d30efe41a6bfd5650 /gcc/cp/mangle.c | |
parent | a41acf5f3e06afa2790ff826b16ccccf1959842c (diff) | |
download | gcc-d67ff7b75deab58eaac2edccafbc55d32f60ed0d.zip gcc-d67ff7b75deab58eaac2edccafbc55d32f60ed0d.tar.gz gcc-d67ff7b75deab58eaac2edccafbc55d32f60ed0d.tar.bz2 |
re PR c++/47202 (Endless recursion during mangling)
PR c++/47202
gcc/cp/
* decl.c (cxx_comdat_group): Return a decl.
* optimize.c (cdtor_comdat_group): Get its DECL_ASSEMBLER_NAME.
gcc/
* cgraph.h (symtab_node::get_comdat_group_id): New.
* cgraphunit.c (analyze_functions): Call it.
* symtab.c (dump_symtab_node): Likewise.
* tree.c (decl_comdat_group_id): New.
* tree.h: Declare it.
* lto-streamer-out.c (write_symbol): Use it.
* trans-mem.c (ipa_tm_create_version_alias): Likewise.
From-SVN: r211026
Diffstat (limited to 'gcc/cp/mangle.c')
-rw-r--r-- | gcc/cp/mangle.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 4205fec..1b2c2cd 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -3520,7 +3520,11 @@ mangle_decl (const tree decl) if (vague_linkage_p (decl)) DECL_WEAK (alias) = 1; if (TREE_CODE (decl) == FUNCTION_DECL) - cgraph_same_body_alias (cgraph_get_create_node (decl), alias, decl); + { + /* Don't create an alias to an unreferenced function. */ + if (struct cgraph_node *n = cgraph_get_node (decl)) + cgraph_same_body_alias (n, alias, decl); + } else varpool_extra_name_alias (alias, decl); #endif |