diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-01-12 10:24:18 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-01-12 09:24:18 +0000 |
commit | d8d5aef10080e5c96414ba48fa31e41e823a95f7 (patch) | |
tree | 993913a7158e643f48bf7e882b92891566a2049e /gcc/ipa-inline-analysis.c | |
parent | 0d2dd460fe627cf460536b80b99f56682775fe78 (diff) | |
download | gcc-d8d5aef10080e5c96414ba48fa31e41e823a95f7.zip gcc-d8d5aef10080e5c96414ba48fa31e41e823a95f7.tar.gz gcc-d8d5aef10080e5c96414ba48fa31e41e823a95f7.tar.bz2 |
re PR ipa/63470 (internal compiler error: in estimate_edge_growth, at ipa-inline.h:308)
PR ipa/63470
* ipa-inline-analysis.c (inline_edge_duplication_hook): Adjust
cost when edge becomes direct.
* ipa-prop.c (make_edge_direct): Do not adjust when speculation
is resolved or when introducing new speculation.
* testsuite/g++.dg/ipa/pr63470.C: New testcase.
From-SVN: r219451
Diffstat (limited to 'gcc/ipa-inline-analysis.c')
-rw-r--r-- | gcc/ipa-inline-analysis.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index 92858da..ec91d8e 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -1312,6 +1312,13 @@ inline_edge_duplication_hook (struct cgraph_edge *src, info->predicate = NULL; edge_set_predicate (dst, srcinfo->predicate); info->param = srcinfo->param.copy (); + if (!dst->indirect_unknown_callee && src->indirect_unknown_callee) + { + info->call_stmt_size -= (eni_size_weights.indirect_call_cost + - eni_size_weights.call_cost); + info->call_stmt_time -= (eni_time_weights.indirect_call_cost + - eni_time_weights.call_cost); + } } |