OSDN Git Service

RegScavenging: Add scavengeRegisterBackwards()
authorMatthias Braun <matze@braunis.de>
Tue, 19 Jul 2016 22:37:09 +0000 (22:37 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 19 Jul 2016 22:37:09 +0000 (22:37 +0000)
commitc5e14e0478d048cd50773f56f05eccd59ed835a1
tree6570b5a98329a7601e36775d3abf0a7a251eb3a3
parente07c066cdd9974a40a5d8fd505c212a9404d5317
RegScavenging: Add scavengeRegisterBackwards()

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@276044 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/RegisterScavenging.h
lib/CodeGen/PrologEpilogInserter.cpp
lib/CodeGen/RegisterScavenging.cpp
test/CodeGen/AMDGPU/captured-frame-index.ll
test/CodeGen/Mips/emergency-spill-slot-near-fp.ll
test/CodeGen/PowerPC/dyn-alloca-aligned.ll
test/CodeGen/SystemZ/frame-13.ll
test/CodeGen/SystemZ/frame-14.ll
test/CodeGen/SystemZ/frame-15.ll
test/CodeGen/SystemZ/frame-16.ll
test/CodeGen/Thumb/large-stack.ll