Message ID | 20120831144134.GB6468@virgil.arch.suse.de |
---|---|
State | New |
Headers | show |
On Fri, Aug 31, 2012 at 7:41 AM, Martin Jambor <mjambor@suse.cz> wrote: > 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. > > This caused: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55564
On Mon, Dec 3, 2012 at 9:50 AM, H.J. Lu <hjl.tools@gmail.com> wrote: > On Fri, Aug 31, 2012 at 7:41 AM, Martin Jambor <mjambor@suse.cz> wrote: >> 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. >> >> > > This caused: > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55564 > Oops. Wrong link. Please ignore this.
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");