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: [RFA] Fix Ada bootstrap (was: 16: EH redirection)


On Mon, Apr 27, 2009 at 6:16 PM, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
> On Mon, Apr 27, 2009 at 4:28 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
>>> This is the patch I am testing (x86_64-linux) and will commit once
>>> passes. ?The problem here is that removing dead TRY region imply need to
>>> update prev_try pointers in the subregions. ?This is actually ages old
>>> bug, I am surprised it did not lead to any wrong code issues.
>>>
>>> There is still one ICE on ada testsuite in my run. ?This one is caused
>>> by dominance calcuation being called in forprop2 on CFG containing dead
>>> code. ?Seems weird since preceeding CCP calls cfgcleanup.
>>
>> Actually it is RTL fwprop2 ?and problem seems to be introduced by fact
>> that CSE calls cleanup_cfg only conditionally while it can produce dead
>> BBs.
>>
>> Steven, since I think you are responsible for the conditional cfgcleanup
>> here, do you have any preferrences how to fix this?
>
> CSE should cleanup_cfg when cse_main modifies jumps. cse_main returns
> non-zero in this case. From cse.c:cse_main():
>
> /* Perform cse on the instructions of a function.
> ? F is the first instruction.
> ? NREGS is one plus the highest pseudo-reg number used in the instruction.
>
> ? Return 2 if jump optimizations should be redone due to simplifications
> ? in conditional jump instructions.
> ? Return 1 if the CFG should be cleaned up because it has been modified.
> ? Return 0 otherwise. ?*/
>
> int
> cse_main (rtx f ATTRIBUTE_UNUSED, int nregs)
> {
> (...etc...)
>
> If CSE introduces unreachable basic blocks and cse_main does *not*
> return non-zero, then cse_main is broken.

This issue is now triggered during bootstrap by some Ada RTS changes,
thus Ada bootstrap is now broken on at least x86_64-linux.

Richard.


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