diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-17 22:04:36 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-17 22:04:36 +0000 |
commit | f21a87d84ae19eb85b088169a3b499e978904df1 (patch) | |
tree | a0d20c604d54f9af5b113f166f5c11a470e4b182 /gcc/ipa-inline-analysis.c | |
parent | e25f80fc2a71d34d7af787f2a49df2b7c5800237 (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.c | 5 |
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. */ |