| Index: src/IceTargetLoweringMIPS32.h
|
| diff --git a/src/IceTargetLoweringMIPS32.h b/src/IceTargetLoweringMIPS32.h
|
| index 842f266e2be730aced312e48437e56d3910393bb..664f6b126096dbe7500873a0149e24018d086c7e 100644
|
| --- a/src/IceTargetLoweringMIPS32.h
|
| +++ b/src/IceTargetLoweringMIPS32.h
|
| @@ -103,7 +103,9 @@ public:
|
| PrologEmitsFixedAllocas = true;
|
| }
|
| int32_t getFrameFixedAllocaOffset() const override {
|
| - return FixedAllocaSizeBytes - (SpillAreaSizeBytes - MaxOutArgsSizeBytes);
|
| + int32_t FixedAllocaOffset =
|
| + Utils::applyAlignment(CurrentAllocaOffset, FixedAllocaAlignBytes);
|
| + return FixedAllocaOffset - MaxOutArgsSizeBytes;
|
| }
|
|
|
| uint32_t maxOutArgsSizeBytes() const override { return MaxOutArgsSizeBytes; }
|
| @@ -700,10 +702,7 @@ protected:
|
| void lowerSwitch(const InstSwitch *Instr) override;
|
| void lowerUnreachable(const InstUnreachable *Instr) override;
|
| void prelowerPhis() override;
|
| - uint32_t getCallStackArgumentsSizeBytes(const InstCall *Instr) override {
|
| - (void)Instr;
|
| - return 0;
|
| - }
|
| + uint32_t getCallStackArgumentsSizeBytes(const InstCall *Instr) override;
|
| void genTargetHelperCallFor(Inst *Instr) override;
|
| void doAddressOptLoad() override;
|
| void doAddressOptStore() override;
|
| @@ -749,6 +748,7 @@ protected:
|
| bool VariableAllocaUsed = false;
|
| uint32_t MaxOutArgsSizeBytes = 0;
|
| uint32_t TotalStackSizeBytes = 0;
|
| + uint32_t CurrentAllocaOffset = 0;
|
| static SmallBitVector TypeToRegisterSet[RCMIPS32_NUM];
|
| static SmallBitVector TypeToRegisterSetUnfiltered[RCMIPS32_NUM];
|
| static SmallBitVector RegisterAliases[RegMIPS32::Reg_NUM];
|
|
|