diff options
| author | 2019-01-27 16:42:12 +0000 | |
|---|---|---|
| committer | 2019-01-27 16:42:12 +0000 | |
| commit | b773203fb58f3ef282fb69c832d8710cab5bc82d (patch) | |
| tree | e75913f147570fbd75169647b144df85b88a038c /gnu/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h | |
| parent | tweak errno in previous (diff) | |
| download | wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.tar.xz wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.zip | |
Import LLVM 7.0.1 release including clang, lld and lldb.
Diffstat (limited to 'gnu/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h')
| -rw-r--r-- | gnu/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/gnu/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h b/gnu/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h index a9b6073106e..8a3f50aa956 100644 --- a/gnu/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h +++ b/gnu/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h @@ -29,7 +29,7 @@ class PPCFunctionInfo : public MachineFunctionInfo { /// stored. Also used as an anchor for instructions that need to be altered /// when using frame pointers (dyna_add, dyna_sub.) int FramePointerSaveIndex = 0; - + /// ReturnAddrSaveIndex - Frame index of where the return address is stored. /// int ReturnAddrSaveIndex = 0; @@ -45,6 +45,11 @@ class PPCFunctionInfo : public MachineFunctionInfo { /// PEI. bool MustSaveLR; + /// Do we have to disable shrink-wrapping? This has to be set if we emit any + /// instructions that clobber LR in the entry block because discovering this + /// in PEI is too late (happens after shrink-wrapping); + bool ShrinkWrapDisabled = false; + /// Does this function have any stack spills. bool HasSpills = false; @@ -123,7 +128,7 @@ public: int getFramePointerSaveIndex() const { return FramePointerSaveIndex; } void setFramePointerSaveIndex(int Idx) { FramePointerSaveIndex = Idx; } - + int getReturnAddrSaveIndex() const { return ReturnAddrSaveIndex; } void setReturnAddrSaveIndex(int idx) { ReturnAddrSaveIndex = idx; } @@ -147,6 +152,12 @@ public: void setMustSaveLR(bool U) { MustSaveLR = U; } bool mustSaveLR() const { return MustSaveLR; } + /// We certainly don't want to shrink wrap functions if we've emitted a + /// MovePCtoLR8 as that has to go into the entry, so the prologue definitely + /// has to go into the entry block. + void setShrinkWrapDisabled(bool U) { ShrinkWrapDisabled = U; } + bool shrinkWrapDisabled() const { return ShrinkWrapDisabled; } + void setHasSpills() { HasSpills = true; } bool hasSpills() const { return HasSpills; } @@ -185,11 +196,11 @@ public: LiveInAttrs.push_back(std::make_pair(VReg, Flags)); } - /// This function returns true if the spesified vreg is + /// This function returns true if the specified vreg is /// a live-in register and sign-extended. bool isLiveInSExt(unsigned VReg) const; - /// This function returns true if the spesified vreg is + /// This function returns true if the specified vreg is /// a live-in register and zero-extended. bool isLiveInZExt(unsigned VReg) const; |
