HomePhabricator

RegScavenging: Add scavengeRegisterBackwards()

Description

RegScavenging: Add scavengeRegisterBackwards()

Re-apply r276044/r279124/r305516. Fixed a problem where we would refuse
to place spills as the very first instruciton of a basic block and thus
artifically increase pressure (test in
test/CodeGen/PowerPC/scavenging.mir:spill_at_begin)

This is a variant of scavengeRegister() that works for
enterBasicBlockEnd()/backward(). The benefit of the backward mode is
that it is not affected by incomplete kill flags.

This patch also changes
PrologEpilogInserter::doScavengeFrameVirtualRegs() to use the register
scavenger in backwards mode.

Differential Revision: http://reviews.llvm.org/D21885

Details

Committed
matzeJun 16 2017, 7:08 PM
Differential Revision
D21885: RegScavenging: Add scavengeRegisterBackwards()
Parents
rL305624: [PPC] Remove isBarrier from CFENCE8's definition.
Branches
Unknown
Tags
Unknown