aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-inline.h
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-03-28 20:50:28 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2014-03-28 19:50:28 +0000
commit4cd8957f51341faaacdbc573b1698ede90895bc3 (patch)
tree2fd5928dd4a0a5449b5d3be2dd387d5f444ae009 /gcc/ipa-inline.h
parentff76f4e2c026de44df33189825ae3f2b7d582f1a (diff)
downloadgcc-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.h3
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);