On 09/14/2016 04:11 PM, Segher Boessenkool wrote:
On Wed, Sep 14, 2016 at 01:33:04PM -0600, Jeff Law wrote:
On 09/14/2016 01:03 PM, Segher Boessenkool wrote:
If you think about it, conceptually we want the return insn to make the
callee saved registers "used" so that DCE, regrename and friends don't
muck with them. The fact that we don't is as much never having to care
all that much until recently.
(There is no return insn at those exits; these are exits *without*
successor block, not the exit block).
Ugh. Anywhere we could attach this stuff in the insn chain? If not,
the DF side of this problem gets uglier.
I put the USEs at the start of that noreturn basic block.
Just naked USEs of the REG? For some reason I was uneasy about this,
but I can't recall why, maybe I just latched onto
CALL_INSN_FUNCTION_USAGE and wanted to use the same model.
Seems like we should just go with the naked USE of the REGs.
While it is just a reachability problem, I don't think we need to solve
it if we mark anything that was separately shrink wrapped as live at all
the exit points.
Agreed, but why does it work if not separately shrink-wrapping anything?
And why does it break on things that are *not* separately wrapped *anywhere*?
That I don't know... It's a hell of a mystery.
Jeff