summaryrefslogtreecommitdiffstats
path: root/llvm/include
diff options
context:
space:
mode:
authorMandeep Singh Grang <mgrang@quicinc.org>2019-02-01 21:41:33 +0000
committerMandeep Singh Grang <mgrang@quicinc.org>2019-02-01 21:41:33 +0000
commit70d484d94e3ec1f6c563b3f2e85f88becb977a41 (patch)
tree22c4744f728a5db40148af9e0a6a474f6dfc4eff /llvm/include
parente95550f508b850c5144b7d1a63bad5680fe83f6d (diff)
downloadbcm5719-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.h4
-rw-r--r--llvm/include/llvm/CodeGen/TargetFrameLowering.h11
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
OpenPOWER on IntegriCloud