This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, PR 54394] Compute loops when generating inline summaries
Hi,
On Fri, Aug 31, 2012 at 12:06:33PM +0200, Jan Hubicka wrote:
> >
> > This is not required to make hints working, it is necessary because of
> > the following line a in estimate_function_body_sizes:
> >
> > es->loop_depth = bb_loop_depth (bb);
> >
> > which always yields zero if we don't have loops computed. So I can
> > skip the computation only if we don't care about loop depths in early
> > inlining either. Should I skip it?
>
> Only place we care is the badness computation and only if profile guessing is off,
> so just initialize it to 0 for early inliner.
>
Thanks. For the record, this is what I have committed.
Martin
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.
Index: src/gcc/ipa-inline-analysis.c
===================================================================
--- src.orig/gcc/ipa-inline-analysis.c
+++ src/gcc/ipa-inline-analysis.c
@@ -2102,6 +2102,11 @@ estimate_function_body_sizes (struct cgr
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 cgr
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 cgr
*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");