summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-31 13:13:03 +0000
committerjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-31 13:13:03 +0000
commit4b209fe798bc04bcef1ee7b29cf7af29c407931e (patch)
tree11419ed71064e5fbaf382f6ad4d7be597d993f46
parent288dc77b2d56b82ca7872b4b7f126b02d5c771e6 (diff)
downloadgcc-4b209fe798bc04bcef1ee7b29cf7af29c407931e.tar.gz
2012-08-31 Martin Jambor <mjambor@suse.cz>
PR middle-end/54394 * ipa-inline-analysis.c (estimate_function_body_sizes): Compute dominance info and loops whenever optimizing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190831 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-inline-analysis.c15
2 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 40a2444c1d8..e1413eb19d7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-08-31 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/54394
+ * ipa-inline-analysis.c (estimate_function_body_sizes): Compute
+ dominance info and loops whenever optimizing.
+
2012-08-29 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Richard Earnshaw <richard.earnshaw@arm.com>
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index ca80a8b88ba..a3f0a8eccf9 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -2102,6 +2102,11 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
info->conds = 0;
info->entry = 0;
+ if (optimize && !early)
+ {
+ calculate_dominance_info (CDI_DOMINATORS);
+ loop_optimizer_init (LOOPS_NORMAL | LOOPS_HAVE_RECORDED_EXITS);
+ }
if (dump_file)
fprintf (dump_file, "\nAnalyzing function body size: %s\n",
@@ -2270,9 +2275,6 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
loop_iterator li;
predicate loop_iterations = true_predicate ();
- calculate_dominance_info (CDI_DOMINATORS);
- loop_optimizer_init (LOOPS_NORMAL
- | LOOPS_HAVE_RECORDED_EXITS);
if (dump_file && (dump_flags & TDF_DETAILS))
flow_loops_dump (dump_file, NULL, 0);
scev_initialize ();
@@ -2305,12 +2307,15 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
*inline_summary (node)->loop_iterations = loop_iterations;
}
scev_finalize ();
- loop_optimizer_finalize ();
- free_dominance_info (CDI_DOMINATORS);
}
inline_summary (node)->self_time = time;
inline_summary (node)->self_size = size;
VEC_free (predicate_t, heap, nonconstant_names);
+ if (optimize && !early)
+ {
+ loop_optimizer_finalize ();
+ free_dominance_info (CDI_DOMINATORS);
+ }
if (dump_file)
{
fprintf (dump_file, "\n");