diff mbox

[PR,54394] Compute loops when generating inline summaries

Message ID 20120831144134.GB6468@virgil.arch.suse.de
State New
Headers show

Commit Message

Martin Jambor Aug. 31, 2012, 2:41 p.m. UTC
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.

Comments

H.J. Lu Dec. 3, 2012, 5:50 p.m. UTC | #1
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
H.J. Lu Dec. 3, 2012, 6:07 p.m. UTC | #2
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.
diff mbox

Patch

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");