From 7d0aa05b9ead1b114958d8230377c2c25ef54876 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 7 Aug 2014 22:58:17 +0200 Subject: ipa-devirt.c: Include gimple-pretty-print.h * ipa-devirt.c: Include gimple-pretty-print.h (referenced_from_vtable_p): Exclude DECL_EXTERNAL from further tests. (decl_maybe_in_construction_p): Fix conditional on cdtor check (get_polymorphic_call_info): Fix return value (type_change_info): New sturcture based on ipa-prop variant. (noncall_stmt_may_be_vtbl_ptr_store): New predicate based on ipa-prop variant. (extr_type_from_vtbl_ptr_store): New function based on ipa-prop variant. (record_known_type): New function. (check_stmt_for_type_change): New function. (get_dynamic_type): New function. * ipa-prop.c (ipa_analyze_call_uses): Use get_dynamic_type. * tree-ssa-pre.c: ipa-utils.h (eliminate_dom_walker::before_dom_children): Use ipa-devirt machinery; sanity check with ipa-prop devirtualization. * trans-mem.c (ipa_tm_insert_gettmclone_call): Clear polymorphic flag. * g++.dg/ipa/devirt-35.C: New testcase. * g++.dg/ipa/devirt-36.C: New testcase. From-SVN: r213739 --- gcc/trans-mem.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gcc/trans-mem.c') diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c index 5633398..3641231 100644 --- a/gcc/trans-mem.c +++ b/gcc/trans-mem.c @@ -5042,6 +5042,9 @@ ipa_tm_insert_gettmclone_call (struct cgraph_node *node, } update_stmt (stmt); + cgraph_edge *e = cgraph_node::get (current_function_decl)->get_edge (stmt); + if (e && e->indirect_info) + e->indirect_info->polymorphic = false; return true; } -- cgit v1.1