mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-18 12:25:47 +00:00
Add hasLoadFromStackSlot and hasStoreToStackSlot to return whether a
machine instruction loads or stores from/to a stack slot. Unlike isLoadFromStackSlot and isStoreFromStackSlot, the instruction may be something other than a pure load/store (e.g. it may be an arithmetic operation with a memory operand). This helps AsmPrinter determine when to print a spill/reload comment. This is only a hint since we may not be able to figure this out in all cases. As such, it should not be relied upon for correctness. Implement for X86. Return false by default for other architectures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87026 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -170,6 +170,17 @@ public:
|
||||
int &FrameIndex) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// hasLoadFromStackSlot - If the specified machine instruction has
|
||||
/// a load from a stack slot, return true along with the FrameIndex
|
||||
/// of the loaded stack slot. If not, return false. Unlike
|
||||
/// isLoadFromStackSlot, this returns true for any instructions that
|
||||
/// loads from the stack. This is just a hint, as some cases may be
|
||||
/// missed.
|
||||
virtual bool hasLoadFromStackSlot(const MachineInstr *MI,
|
||||
int &FrameIndex) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// isStoreToStackSlot - If the specified machine instruction is a direct
|
||||
/// store to a stack slot, return the virtual or physical register number of
|
||||
@@ -181,6 +192,17 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// hasStoreToStackSlot - If the specified machine instruction has a
|
||||
/// store to a stack slot, return true along with the FrameIndex of
|
||||
/// the loaded stack slot. If not, return false. Unlike
|
||||
/// isStoreToStackSlot, this returns true for any instructions that
|
||||
/// loads from the stack. This is just a hint, as some cases may be
|
||||
/// missed.
|
||||
virtual bool hasStoreToStackSlot(const MachineInstr *MI,
|
||||
int &FrameIndex) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// reMaterialize - Re-issue the specified 'original' instruction at the
|
||||
/// specific location targeting a new destination register.
|
||||
virtual void reMaterialize(MachineBasicBlock &MBB,
|
||||
|
Reference in New Issue
Block a user