aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-inline-analysis.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-11-17 23:04:36 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2014-11-17 22:04:36 +0000
commit231b4916bf2636a02ede685b996b2bfb7773d639 (patch)
treea0d20c604d54f9af5b113f166f5c11a470e4b182 /gcc/ipa-inline-analysis.c
parenta19faae31ea866598ad4738a511ed81b01e3d58e (diff)
downloadgcc-231b4916bf2636a02ede685b996b2bfb7773d639.zip
gcc-231b4916bf2636a02ede685b996b2bfb7773d639.tar.gz
gcc-231b4916bf2636a02ede685b996b2bfb7773d639.tar.bz2
ipa-cp.c (ipa_get_indirect_edge_target_1): Handle speculation.
* 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. From-SVN: r217675
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 69e0612..dace2fc 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. */