diff options
| author | Mandeep Singh Grang <mgrang@quicinc.org> | 2019-02-01 21:41:33 +0000 |
|---|---|---|
| committer | Mandeep Singh Grang <mgrang@quicinc.org> | 2019-02-01 21:41:33 +0000 |
| commit | 70d484d94e3ec1f6c563b3f2e85f88becb977a41 (patch) | |
| tree | 22c4744f728a5db40148af9e0a6a474f6dfc4eff /llvm/include | |
| parent | e95550f508b850c5144b7d1a63bad5680fe83f6d (diff) | |
| download | bcm5719-llvm-70d484d94e3ec1f6c563b3f2e85f88becb977a41.tar.gz bcm5719-llvm-70d484d94e3ec1f6c563b3f2e85f88becb977a41.zip | |
[COFF, ARM64] Fix localaddress to handle stack realignment and variable size objects
Summary: This fixes using the correct stack registers for SEH when stack realignment is needed or when variable size objects are present.
Reviewers: rnk, efriedma, ssijaric, TomTan
Reviewed By: rnk, efriedma
Subscribers: javed.absar, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D57183
llvm-svn: 352923
Diffstat (limited to 'llvm/include')
| -rw-r--r-- | llvm/include/llvm/CodeGen/MachineFunction.h | 4 | ||||
| -rw-r--r-- | llvm/include/llvm/CodeGen/TargetFrameLowering.h | 11 |
2 files changed, 11 insertions, 4 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h index 670b2d501af..34ceb15aebd 100644 --- a/llvm/include/llvm/CodeGen/MachineFunction.h +++ b/llvm/include/llvm/CodeGen/MachineFunction.h @@ -328,7 +328,6 @@ class MachineFunction { bool CallsUnwindInit = false; bool HasEHScopes = false; bool HasEHFunclets = false; - bool HasLocalEscape = false; /// List of C++ TypeInfo used. std::vector<const GlobalValue *> TypeInfos; @@ -811,9 +810,6 @@ public: bool hasEHFunclets() const { return HasEHFunclets; } void setHasEHFunclets(bool V) { HasEHFunclets = V; } - bool hasLocalEscape() const { return HasLocalEscape; } - void setHasLocalEscape(bool V) { HasLocalEscape = V; } - /// Find or create an LandingPadInfo for the specified MachineBasicBlock. LandingPadInfo &getOrCreateLandingPadInfo(MachineBasicBlock *LandingPad); diff --git a/llvm/include/llvm/CodeGen/TargetFrameLowering.h b/llvm/include/llvm/CodeGen/TargetFrameLowering.h index 021f7d2a269..754ee5cba01 100644 --- a/llvm/include/llvm/CodeGen/TargetFrameLowering.h +++ b/llvm/include/llvm/CodeGen/TargetFrameLowering.h @@ -261,6 +261,17 @@ public: return getFrameIndexReference(MF, FI, FrameReg); } + /// getNonLocalFrameIndexReference - This method returns the offset used to + /// reference a frame index location. The offset can be from either FP/BP/SP + /// based on which base register is returned by llvm.localaddress. + virtual int getNonLocalFrameIndexReference(const MachineFunction &MF, + int FI) const { + // By default, dispatch to getFrameIndexReference. Interested targets can + // override this. + unsigned FrameReg; + return getFrameIndexReference(MF, FI, FrameReg); + } + /// This method determines which of the registers reported by /// TargetRegisterInfo::getCalleeSavedRegs() should actually get saved. /// The default implementation checks populates the \p SavedRegs bitset with |

