diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-03-28 20:50:28 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-03-28 19:50:28 +0000 |
commit | 4cd8957f51341faaacdbc573b1698ede90895bc3 (patch) | |
tree | 2fd5928dd4a0a5449b5d3be2dd387d5f444ae009 /gcc/ipa-inline.h | |
parent | ff76f4e2c026de44df33189825ae3f2b7d582f1a (diff) | |
download | gcc-4cd8957f51341faaacdbc573b1698ede90895bc3.zip gcc-4cd8957f51341faaacdbc573b1698ede90895bc3.tar.gz gcc-4cd8957f51341faaacdbc573b1698ede90895bc3.tar.bz2 |
re PR ipa/60243 (IPA is slow on large cgraph tree)
PR ipa/60243
* ipa-inline.c (want_inline_small_function_p): Short circuit large
functions; reorganize to make cheap checks first.
(inline_small_functions): Do not estimate growth when dumping;
it is expensive.
* ipa-inline.h (inline_summary): Add min_size.
(growth_likely_positive): New function.
* ipa-inline-analysis.c (dump_inline_summary): Add min_size.
(set_cond_stmt_execution_predicate): Cleanup.
(estimate_edge_size_and_time): Compute min_size.
(estimate_calls_size_and_time): Likewise.
(estimate_node_size_and_time): Likewise.
(inline_update_overall_summary): Update min_size.
(do_estimate_edge_time): Likewise.
(do_estimate_edge_size): Update.
(do_estimate_edge_hints): Update.
(growth_likely_positive): New function.
From-SVN: r208916
Diffstat (limited to 'gcc/ipa-inline.h')
-rw-r--r-- | gcc/ipa-inline.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h index 48136d2..8ee075f 100644 --- a/gcc/ipa-inline.h +++ b/gcc/ipa-inline.h @@ -117,6 +117,8 @@ struct GTY(()) inline_summary int self_size; /* Time of the function body. */ int self_time; + /* Minimal size increase after inlining. */ + int min_size; /* False when there something makes inlining impossible (such as va_arg). */ unsigned inlinable : 1; @@ -220,6 +222,7 @@ void estimate_ipcp_clone_size_and_time (struct cgraph_node *, vec<ipa_agg_jump_function_p>, int *, int *, inline_hints *); int do_estimate_growth (struct cgraph_node *); +bool growth_likely_positive (struct cgraph_node *, int); void inline_merge_summary (struct cgraph_edge *edge); void inline_update_overall_summary (struct cgraph_node *node); int do_estimate_edge_size (struct cgraph_edge *edge); |