Patch to fix unintentional(?) pessimisation in dbr_schedule
Richard Henderson
rth@redhat.com
Mon Apr 5 22:37:00 GMT 2004
On Mon, Apr 05, 2004 at 11:13:44PM +0100, Richard Sandiford wrote:
> [A] if always_true()
> / \
> [B] x = foo() eventually_abort_but_not_marked_noreturn () [C]
> \ /
> [D] blah(x)
[...]
> (2) A: if always_true () goto B else goto PC
> C: eventually_abort_but_not_marked_noreturn ()
> goto D
> barrier
> B: x = foo ()
> D: blah(x)
[...]
> Which statement and rtl expansion will get the wrong liveness
> info with IOR? Assuming that the cfg code correctly marks
> "x" as live on entry to and exit from A and C, I think both
> techniques will correctly detect whether "x" is live.
Why should it? Recall that this is after reload, and x might
live in a call-clobbered register. So it's live between foo
and blah.
r~
More information about the Gcc-patches
mailing list