summaryrefslogtreecommitdiff
path: root/gcc/ipa-inline-analysis.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-16 10:10:28 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-16 10:10:28 +0000
commit46729204a4bd1c5aad4856d9a4f20da54c586241 (patch)
tree2fad4cf8e62a6fa8390658fc1bb6621e961d826e /gcc/ipa-inline-analysis.c
parent82da2d0eca8e0001702631abf275cd9ad63f25e0 (diff)
downloadgcc-46729204a4bd1c5aad4856d9a4f20da54c586241.tar.gz
* ipa-inline-analysis.c (compute_inline_parameters): Be more reailistic
on estimating thunk bodies; do not set inline_failed to CIF_THUNK for calls from thunk. * ipa-inline-transform.c (inline_call): When inlining into thunk produce gimple body. (preserve_function_body_p): No need to preserve function body * cif-codes.def (CIF_THUNK): Remove. * cgraphclones.c (duplicate_thunk_for_node): Thunks calls are inlinable. * g++.dg/ipa/ivinline-7.C: Do not xfail. * g++.dg/ipa/ivinline-9.C: Do not xfail. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236274 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-inline-analysis.c')
-rw-r--r--gcc/ipa-inline-analysis.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 17b21d17c5f..82d1774abcb 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -2932,11 +2932,13 @@ compute_inline_parameters (struct cgraph_node *node, bool early)
struct inline_edge_summary *es = inline_edge_summary (node->callees);
struct predicate t = true_predicate ();
- node->callees->inline_failed = CIF_THUNK;
node->local.can_change_signature = false;
- es->call_stmt_size = INLINE_SIZE_SCALE;
- es->call_stmt_time = INLINE_TIME_SCALE;
- account_size_time (info, INLINE_SIZE_SCALE * 2, INLINE_TIME_SCALE * 2, &t);
+ es->call_stmt_size = eni_size_weights.call_cost;
+ es->call_stmt_time = eni_time_weights.call_cost;
+ account_size_time (info, INLINE_SIZE_SCALE * 2,
+ INLINE_TIME_SCALE * 2, &t);
+ t = not_inlined_predicate ();
+ account_size_time (info, 2 * INLINE_SIZE_SCALE, 0, &t);
inline_update_overall_summary (node);
info->self_size = info->size;
info->self_time = info->time;