summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/ARMBaseRegisterInfo.h
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2010-08-17 22:41:55 +0000
committerJim Grosbach <grosbach@apple.com>2010-08-17 22:41:55 +0000
commitdc140c6e7b8350ca51aa1d408c10e25a27826e2c (patch)
tree8e765076d7d76778bf3621e93456bc6405628111 /lib/Target/ARM/ARMBaseRegisterInfo.h
parentb9072fdaad6f36c96fe294c523dca048fd50c36f (diff)
downloadllvm-dc140c6e7b8350ca51aa1d408c10e25a27826e2c.tar.gz
llvm-dc140c6e7b8350ca51aa1d408c10e25a27826e2c.tar.bz2
llvm-dc140c6e7b8350ca51aa1d408c10e25a27826e2c.tar.xz
Add materialization of virtual base registers for frame indices allocated into
the local block. Resolve references to those indices to a new base register. For simplification and testing purposes, a new virtual base register is allocated for each frame index being resolved. The result is truly horrible, but correct, code that's good for exercising the new code paths. Next up is adding thumb1 support, which should be very simple. Following that will be adding base register re-use and implementing a reasonable ARM heuristic for when a virtual base register should be generated at all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111315 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMBaseRegisterInfo.h')
-rw-r--r--lib/Target/ARM/ARMBaseRegisterInfo.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMBaseRegisterInfo.h b/lib/Target/ARM/ARMBaseRegisterInfo.h
index f3ccfb4cc4..7570d1fd16 100644
--- a/lib/Target/ARM/ARMBaseRegisterInfo.h
+++ b/lib/Target/ARM/ARMBaseRegisterInfo.h
@@ -106,6 +106,10 @@ public:
bool canRealignStack(const MachineFunction &MF) const;
bool needsStackRealignment(const MachineFunction &MF) const;
bool needsFrameBaseReg(MachineInstr *MI, unsigned operand) const;
+ void materializeFrameBaseRegister(MachineBasicBlock::iterator I,
+ unsigned BaseReg, int FrameIdx) const;
+ void resolveFrameIndex(MachineBasicBlock::iterator I,
+ unsigned BaseReg, int64_t Offset) const;
bool cannotEliminateFrame(const MachineFunction &MF) const;