Backwards frame index elimination uses backwards register scavenging,
which is preferred because it does not rely on accurate kill flags.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Would it be possible to add a test that shows benefit from this? All the test changes in this diff seem to merely renumber virtual registers.
Comment Actions
Probably not, any improvement implies there's a bug somewhere from not setting a kill flag. This avoids that maintenance cost
Comment Actions
Thanks. I am not aware of a good overall summary, but there are various comments scattered around like:
include/llvm/CodeGen/MachinePassRegistry.def 71-// LiveVariables currently requires pure SSA form. 72:// FIXME: Once TwoAddressInstruction pass no longer uses kill flags, 73-// LiveVariables can be removed completely, and LiveIntervals can be directly 74-// computed. (We still either need to regenerate kill flags after regalloc, or 75-// preferably fix the scavenger to not depend on them).