mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-29 13:24:25 +00:00
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
This commit is contained in:
@ -644,6 +644,22 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
/// materializeFrameBaseRegister - Insert defining instruction(s) for
|
||||
/// BaseReg to be a pointer to FrameIdx before insertion point I.
|
||||
virtual void materializeFrameBaseRegister(MachineBasicBlock::iterator I,
|
||||
unsigned BaseReg,
|
||||
int FrameIdx) const {
|
||||
assert(0 && "materializeFrameBaseRegister does not exist on this target");
|
||||
}
|
||||
|
||||
/// resolveFrameIndex - Resolve a frame index operand of an instruction
|
||||
/// to reference the indicated base register plus offset instead.
|
||||
virtual void resolveFrameIndex(MachineBasicBlock::iterator I,
|
||||
unsigned BaseReg, int64_t Offset) const {
|
||||
assert(0 && "resolveFrameIndex does not exist on this target");
|
||||
}
|
||||
|
||||
|
||||
/// getCallFrameSetup/DestroyOpcode - These methods return the opcode of the
|
||||
/// frame setup/destroy instructions if they exist (-1 otherwise). Some
|
||||
/// targets use pseudo instructions in order to abstract away the difference
|
||||
|
Reference in New Issue
Block a user