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 <mjam...@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");