aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-inline-analysis.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-17 22:04:36 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-17 22:04:36 +0000
commitf21a87d84ae19eb85b088169a3b499e978904df1 (patch)
treea0d20c604d54f9af5b113f166f5c11a470e4b182 /gcc/ipa-inline-analysis.c
parente25f80fc2a71d34d7af787f2a49df2b7c5800237 (diff)
* ipa-cp.c (ipa_get_indirect_edge_target_1): Handle speculation.
(ipa_get_indirect_edge_target): Add SPECULATIVE argument. (devirtualization_time_bonus): Use it. (ipcp_discover_new_direct_edges): Likewise. * ipa-inline-analysis.c (estimate_edge_devirt_benefit): Update. * ipa-prop.h (ipa_get_indirect_edge_target): Update prototype. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217675 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-inline-analysis.c')
-rw-r--r--gcc/ipa-inline-analysis.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 69e06123fee..dace2fc78be 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -2986,6 +2986,7 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
struct cgraph_node *callee;
struct inline_summary *isummary;
enum availability avail;
+ bool speculative;
if (!known_vals.exists () && !known_contexts.exists ())
return false;
@@ -2993,8 +2994,8 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
return false;
target = ipa_get_indirect_edge_target (ie, known_vals, known_contexts,
- known_aggs);
- if (!target)
+ known_aggs, &speculative);
+ if (!target || speculative)
return false;
/* Account for difference in cost between indirect and direct calls. */