This is the mail archive of the
mailing list for the GCC project.
Re: [RFA] Fix Ada bootstrap (was: 16: EH redirection)
On Mon, Apr 27, 2009 at 4:28 PM, Jan Hubicka <email@example.com> 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
> 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. */
cse_main (rtx f ATTRIBUTE_UNUSED, int nregs)
If CSE introduces unreachable basic blocks and cse_main does *not*
return non-zero, then cse_main is broken.