aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.h
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2013-01-17 11:43:14 +0000
committerMartin Jambor <mjambor@suse.cz>2013-01-17 11:43:14 +0000
commit2f72907613032a75336a1eb7fb06b68ed8798d53 (patch)
tree6eb8a1715d592561febe771539bf683003e002a1 /gcc/cgraph.h
parent5190023f4f41d17aef7877ccf46864c90cde3016 (diff)
2013-01-17 Martin Jambor <mjambor@suse.cz>
PR tree-optimizations/55264 * ipa-inline-transform.c (can_remove_node_now_p_1): Never return true for virtual methods. * ipa.c (symtab_remove_unreachable_nodes): Never return true for virtual methods before inlining is over. * cgraph.h (cgraph_only_called_directly_or_aliased_p): Return false for virtual functions. * cgraphclones.c (cgraph_create_virtual_clone): Mark clones as non-virtual. testsuite/ * g++.dg/ipa/pr55264.C: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@195262 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cgraph.h')
-rw-r--r--gcc/cgraph.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 87595701654..5df7fb478b4 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -1164,6 +1164,7 @@ cgraph_only_called_directly_or_aliased_p (struct cgraph_node *node)
gcc_assert (!node->global.inlined_to);
return (!node->symbol.force_output && !node->symbol.address_taken
&& !node->symbol.used_from_other_partition
+ && !DECL_VIRTUAL_P (node->symbol.decl)
&& !DECL_STATIC_CONSTRUCTOR (node->symbol.decl)
&& !DECL_STATIC_DESTRUCTOR (node->symbol.decl)
&& !node->symbol.externally_visible);