This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PR rtl-optimization/49710 (segfault in loop peeling)


2012/1/4 Jan Hubicka <hubicka@ucw.cz>:
>> > + ? l = e->src->loop_father;
>> > + ? while (l && loop_outer (l))
>> > + ? ? {
>> > + ? ? ? while (loop_outer (loop_outer (l))
>> > + ? ? ? ? ? ?&& dominated_by_p (CDI_DOMINATORS,
>> > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? loop_outer (l)->latch, e->dest))
>> > + ? ? ? ? unloop (loop_outer (l), &irred_invalidated);
>> > + ? ? ? l = loop_outer (l);
>> > + ? ? }
>>
>> It must be possible to merge the two loops, no? ?And it asks for a
>> comment.
>
> The problem is that unloop can cascade, so looking up loop_father for the
> innermost loop and looking at loop_outer pointer elsewhere is the only up to
> date way to get to the next unlooping candidate, so I did not see any natural
> way to really merge the loops.
>
> The comment before the two loops is still correct, just implementation was
> buggy.

I see.  Patch is ok then.

Richard.

> Honza
>>
>> > ? ?/* Identify the path. ?*/
>> > ? ?nrem = find_path (e, &rem_bbs);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]