[PATCH] Fix -fcrossjumping at -O1 (PR rtl-optimization/48156)

Jakub Jelinek jakub@redhat.com
Sat Mar 19 12:16:00 GMT 2011


On Sat, Mar 19, 2011 at 08:08:48AM -0400, Kenneth Zadeck wrote:
> 
> On 03/19/2011 05:19 AM, Paolo Bonzini wrote:
> >On Fri, Mar 18, 2011 at 19:18, Kenneth Zadeck<zadeck@naturalbridge.com>  wrote:
> >>yes, but i think that the reason this is a pr is that it seems to be needed
> >>for correctness.
> >Note that df_get_bb_dirty is defaulting to "return false", not
> >"abort".  This is what tricked crossjumping and caused the bug.
> >
> where does the compiler fail if you change it to abort, (after doing
> the check from jakub's patch)?

With neither of the patches of mine for this issue, df_get_bb_dirty
would ICE with added gcc_assert (df && df_live);
The point is that df_get_bb_dirty was silently returning false even for
blocks which had lr not recumputed when live wasn't computed at all.

So live isn't needed for crossjumping correctness, assuming df_get_bb_dirty
is compatible with what df_get_live_out does (the first patch).

	Jakub



More information about the Gcc-patches mailing list