| Index: src/IceTargetLoweringX86Base.h
|
| diff --git a/src/IceTargetLoweringX86Base.h b/src/IceTargetLoweringX86Base.h
|
| index d23e35b7f3d41bdedd50c4bbbfe7c418569b6a9d..90bbed27ac8ecb6f6ced71101be76d35e0cf7754 100644
|
| --- a/src/IceTargetLoweringX86Base.h
|
| +++ b/src/IceTargetLoweringX86Base.h
|
| @@ -89,9 +89,9 @@ public:
|
| bool hasFramePointer() const override { return IsEbpBasedFrame; }
|
| void setHasFramePointer() override { IsEbpBasedFrame = true; }
|
| SizeT getStackReg() const override { return Traits::RegisterSet::Reg_esp; }
|
| + SizeT getFrameReg() const override { return Traits::RegisterSet::Reg_ebp; }
|
| SizeT getFrameOrStackReg() const override {
|
| - return IsEbpBasedFrame ? Traits::RegisterSet::Reg_ebp
|
| - : Traits::RegisterSet::Reg_esp;
|
| + return IsEbpBasedFrame ? getFrameReg() : getStackReg();
|
| }
|
| size_t typeWidthInBytesOnStack(Type Ty) const override {
|
| // Round up to the next multiple of WordType bytes.
|
| @@ -101,6 +101,16 @@ public:
|
| uint32_t getStackAlignment() const override {
|
| return Traits::X86_STACK_ALIGNMENT_BYTES;
|
| }
|
| + void reserveFixedAllocaArea(size_t Size, size_t Align) override {
|
| + FixedAllocaSizeBytes = Size;
|
| + assert(llvm::isPowerOf2_32(Align));
|
| + FixedAllocaAlignBytes = Align;
|
| + PrologEmitsFixedAllocas = true;
|
| + }
|
| + /// Returns the (negative) offset from ebp/rbp where the fixed Allocas start.
|
| + int32_t getFrameFixedAllocaOffset() const override {
|
| + return FixedAllocaSizeBytes - SpillAreaSizeBytes;
|
| + }
|
|
|
| bool shouldSplitToVariable64On32(Type Ty) const override {
|
| return Traits::Is64Bit ? false : Ty == IceType_i64;
|
| @@ -691,6 +701,8 @@ protected:
|
| bool NeedsStackAlignment = false;
|
| size_t SpillAreaSizeBytes = 0;
|
| size_t FixedAllocaSizeBytes = 0;
|
| + size_t FixedAllocaAlignBytes = 0;
|
| + bool PrologEmitsFixedAllocas = false;
|
| static std::array<llvm::SmallBitVector, RCX86_NUM> TypeToRegisterSet;
|
| static std::array<llvm::SmallBitVector, Traits::RegisterSet::Reg_NUM>
|
| RegisterAliases;
|
|
|