Maintaining LiveIn

I would like to maintain the livein information for physical registers
on basic blocks past register allocation, or recreate it if possible.
The goal is to be able to run a late pass of DeadMachineInstrElim, which
requires valid livein information.

The X86 target returns false for requiresRegisterScavenging so passes
like BranchFolding don't update the livein information. At that point I
gather that DeadMachineInstrElim will break.

What are the requirements to return true for requiresRegisterScavenging?
ARM does but I don't know if special care has been taken in that target
to allow it.

Alternatively, are there better ways to update or recreate the livein
information in a late pass? I don't want to run a whole dataflow
analysis if I don't have to.