[llvm-dev] live-in lists during register allocation

Jonas Paulsson via llvm-dev
2019-06-19T05:12:45Z

Hi,

I wonder if live-in lists can be trusted to be accurate during register
allocation / foldMemoryOperandImp().

On SystemZ, a compare register-register which has one of the registers
spilled can fold that reload into a compare register-memory instruction.
In order to do this also with the first (LHS) register, the operands
must be swapped. This can only reasonably be done when all the CC users
are in the same basic block and so can be found in order to reverse
their condition operands, which must be done. The first check for this
is to know if the CC register is live into any successor block.

I know there has been corrupt live-in lists in the past found, but I
think that was some passes after register allocation.

Would it be safe to rely on live-in lists in foldMemoryOperandImpl()?

Thanks,

Jonas