diff options
Diffstat (limited to 'gcc/lto-symtab.c')
-rw-r--r-- | gcc/lto-symtab.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c index f9bf37c..9bebd09 100644 --- a/gcc/lto-symtab.c +++ b/gcc/lto-symtab.c @@ -599,6 +599,13 @@ lto_symtab_merge_symbols (void) && (cnode2 = cgraph_get_node (node->symbol.decl)) && cnode2 != cnode) lto_cgraph_replace_node (cnode2, cnode); + + /* Abstract functions may have duplicated cgraph nodes attached; + remove them. */ + else if (cnode && DECL_ABSTRACT (cnode->symbol.decl) + && (cnode2 = cgraph_get_node (node->symbol.decl)) + && cnode2 != cnode) + cgraph_remove_node (cnode2); symtab_insert_node_to_hashtable ((symtab_node)node); } } |