Skip to content

Commit e1a2e90

Browse files
committedMar 31, 2016
Change eliminateCallFramePseudoInstr() to return an iterator
This will become necessary in a subsequent change to make this method merge adjacent stack adjustments, i.e. it might erase the previous and/or next instruction. It also greatly simplifies the calls to this function from Prolog- EpilogInserter. Previously, that had a bunch of logic to resume iteration after the call; now it just continues with the returned iterator. Note that this changes the behaviour of PEI a little. Previously, it attempted to re-visit the new instruction created by eliminateCallFramePseudoInstr(). That code was added in r36625, but I can't see any reason for it: the new instructions will obviously not be pseudo instructions, they will not have FrameIndex operands, and we have already accounted for the stack adjustment. Differential Revision: http://reviews.llvm.org/D18627 llvm-svn: 265036
1 parent 19cb947 commit e1a2e90

33 files changed

+85
-96
lines changed
 

‎llvm/docs/ReleaseNotes.rst

+4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ Non-comprehensive list of changes in this release
5252
* The C API function LLVMGetDataLayout is deprecated
5353
in favor of LLVMGetDataLayoutStr.
5454

55+
* ``TargetFrameLowering::eliminateCallFramePseudoInstr`` now returns an
56+
iterator to the next instruction instead of ``void``. Targets that previously
57+
did ``MBB.erase(I); return;`` now probably want ``return MBB.erase(I);``.
58+
5559
.. NOTE
5660
For small 1-3 sentence descriptions, just add an entry at the end of
5761
this list. If your description won't fit comfortably in one bullet

‎llvm/include/llvm/Target/TargetFrameLowering.h

+7-8
Original file line numberDiff line numberDiff line change
@@ -273,14 +273,13 @@ class TargetFrameLowering {
273273
report_fatal_error("WinEH not implemented for this target");
274274
}
275275

276-
/// eliminateCallFramePseudoInstr - This method is called during prolog/epilog
277-
/// code insertion to eliminate call frame setup and destroy pseudo
278-
/// instructions (but only if the Target is using them). It is responsible
279-
/// for eliminating these instructions, replacing them with concrete
280-
/// instructions. This method need only be implemented if using call frame
281-
/// setup/destroy pseudo instructions.
282-
///
283-
virtual void
276+
/// This method is called during prolog/epilog code insertion to eliminate
277+
/// call frame setup and destroy pseudo instructions (but only if the Target
278+
/// is using them). It is responsible for eliminating these instructions,
279+
/// replacing them with concrete instructions. This method need only be
280+
/// implemented if using call frame setup/destroy pseudo instructions.
281+
/// Returns an iterator pointing to the instruction after the replaced one.
282+
virtual MachineBasicBlock::iterator
284283
eliminateCallFramePseudoInstr(MachineFunction &MF,
285284
MachineBasicBlock &MBB,
286285
MachineBasicBlock::iterator MI) const {

‎llvm/lib/CodeGen/PrologEpilogInserter.cpp

+1-9
Original file line numberDiff line numberDiff line change
@@ -891,15 +891,7 @@ void PEI::replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &Fn,
891891
InsideCallSequence = (I->getOpcode() == FrameSetupOpcode);
892892
SPAdj += TII.getSPAdjust(I);
893893

894-
MachineBasicBlock::iterator PrevI = BB->end();
895-
if (I != BB->begin()) PrevI = std::prev(I);
896-
TFI->eliminateCallFramePseudoInstr(Fn, *BB, I);
897-
898-
// Visit the instructions created by eliminateCallFramePseudoInstr().
899-
if (PrevI == BB->end())
900-
I = BB->begin(); // The replaced instr was the first in the block.
901-
else
902-
I = std::next(PrevI);
894+
I = TFI->eliminateCallFramePseudoInstr(Fn, *BB, I);
903895
continue;
904896
}
905897

‎llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ AArch64FrameLowering::hasReservedCallFrame(const MachineFunction &MF) const {
153153
return !MF.getFrameInfo()->hasVarSizedObjects();
154154
}
155155

156-
void AArch64FrameLowering::eliminateCallFramePseudoInstr(
156+
MachineBasicBlock::iterator AArch64FrameLowering::eliminateCallFramePseudoInstr(
157157
MachineFunction &MF, MachineBasicBlock &MBB,
158158
MachineBasicBlock::iterator I) const {
159159
const AArch64InstrInfo *TII =
@@ -196,7 +196,7 @@ void AArch64FrameLowering::eliminateCallFramePseudoInstr(
196196
emitFrameOffset(MBB, I, DL, AArch64::SP, AArch64::SP, -CalleePopAmount,
197197
TII);
198198
}
199-
MBB.erase(I);
199+
return MBB.erase(I);
200200
}
201201

202202
void AArch64FrameLowering::emitCalleeSavedFrameMoves(

‎llvm/lib/Target/AArch64/AArch64FrameLowering.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ class AArch64FrameLowering : public TargetFrameLowering {
2727
void emitCalleeSavedFrameMoves(MachineBasicBlock &MBB,
2828
MachineBasicBlock::iterator MBBI) const;
2929

30-
void eliminateCallFramePseudoInstr(MachineFunction &MF,
31-
MachineBasicBlock &MBB,
32-
MachineBasicBlock::iterator I) const override;
30+
MachineBasicBlock::iterator
31+
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
32+
MachineBasicBlock::iterator I) const override;
3333

3434
/// emitProlog/emitEpilog - These methods insert prolog and epilog code into
3535
/// the function.

‎llvm/lib/Target/ARM/ARMFrameLowering.cpp

+4-5
Original file line numberDiff line numberDiff line change
@@ -1726,10 +1726,9 @@ void ARMFrameLowering::determineCalleeSaves(MachineFunction &MF,
17261726
}
17271727
}
17281728

1729-
1730-
void ARMFrameLowering::
1731-
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
1732-
MachineBasicBlock::iterator I) const {
1729+
MachineBasicBlock::iterator ARMFrameLowering::eliminateCallFramePseudoInstr(
1730+
MachineFunction &MF, MachineBasicBlock &MBB,
1731+
MachineBasicBlock::iterator I) const {
17331732
const ARMBaseInstrInfo &TII =
17341733
*static_cast<const ARMBaseInstrInfo *>(MF.getSubtarget().getInstrInfo());
17351734
if (!hasReservedCallFrame(MF)) {
@@ -1769,7 +1768,7 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
17691768
}
17701769
}
17711770
}
1772-
MBB.erase(I);
1771+
return MBB.erase(I);
17731772
}
17741773

17751774
/// Get the minimum constant for ARM that is greater than or equal to the

‎llvm/lib/Target/ARM/ARMFrameLowering.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class ARMFrameLowering : public TargetFrameLowering {
7474
bool(*Func)(unsigned, bool),
7575
unsigned NumAlignedDPRCS2Regs) const;
7676

77-
void
77+
MachineBasicBlock::iterator
7878
eliminateCallFramePseudoInstr(MachineFunction &MF,
7979
MachineBasicBlock &MBB,
8080
MachineBasicBlock::iterator MI) const override;

‎llvm/lib/Target/ARM/Thumb1FrameLowering.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ emitSPUpdate(MachineBasicBlock &MBB,
4949
}
5050

5151

52-
void Thumb1FrameLowering::
52+
MachineBasicBlock::iterator Thumb1FrameLowering::
5353
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
5454
MachineBasicBlock::iterator I) const {
5555
const Thumb1InstrInfo &TII =
@@ -80,7 +80,7 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
8080
}
8181
}
8282
}
83-
MBB.erase(I);
83+
return MBB.erase(I);
8484
}
8585

8686
void Thumb1FrameLowering::emitPrologue(MachineFunction &MF,

‎llvm/lib/Target/ARM/Thumb1FrameLowering.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class Thumb1FrameLowering : public ARMFrameLowering {
4141

4242
bool hasReservedCallFrame(const MachineFunction &MF) const override;
4343

44-
void
44+
MachineBasicBlock::iterator
4545
eliminateCallFramePseudoInstr(MachineFunction &MF,
4646
MachineBasicBlock &MBB,
4747
MachineBasicBlock::iterator MI) const override;

‎llvm/lib/Target/BPF/BPFFrameLowering.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ class BPFFrameLowering : public TargetFrameLowering {
3131
void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,
3232
RegScavenger *RS) const override;
3333

34-
void
34+
MachineBasicBlock::iterator
3535
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
3636
MachineBasicBlock::iterator MI) const override {
37-
MBB.erase(MI);
37+
return MBB.erase(MI);
3838
}
3939
};
4040
}

‎llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1060,15 +1060,15 @@ bool HexagonFrameLowering::insertCSRRestoresInBlock(MachineBasicBlock &MBB,
10601060
return true;
10611061
}
10621062

1063-
1064-
void HexagonFrameLowering::eliminateCallFramePseudoInstr(MachineFunction &MF,
1065-
MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const {
1063+
MachineBasicBlock::iterator HexagonFrameLowering::eliminateCallFramePseudoInstr(
1064+
MachineFunction &MF, MachineBasicBlock &MBB,
1065+
MachineBasicBlock::iterator I) const {
10661066
MachineInstr &MI = *I;
10671067
unsigned Opc = MI.getOpcode();
10681068
(void)Opc; // Silence compiler warning.
10691069
assert((Opc == Hexagon::ADJCALLSTACKDOWN || Opc == Hexagon::ADJCALLSTACKUP) &&
10701070
"Cannot handle this call frame pseudo instruction");
1071-
MBB.erase(I);
1071+
return MBB.erase(I);
10721072
}
10731073

10741074

‎llvm/lib/Target/Hexagon/HexagonFrameLowering.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@ class HexagonFrameLowering : public TargetFrameLowering {
4242
return true;
4343
}
4444

45-
void eliminateCallFramePseudoInstr(MachineFunction &MF,
46-
MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const override;
45+
MachineBasicBlock::iterator
46+
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
47+
MachineBasicBlock::iterator I) const override;
4748
void processFunctionBeforeFrameFinalized(MachineFunction &MF,
4849
RegScavenger *RS = nullptr) const override;
4950
void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,

‎llvm/lib/Target/Lanai/LanaiFrameLowering.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,11 @@ void LanaiFrameLowering::emitPrologue(MachineFunction &MF,
139139
replaceAdjDynAllocPseudo(MF);
140140
}
141141

142-
void LanaiFrameLowering::eliminateCallFramePseudoInstr(
142+
MachineBasicBlock::iterator LanaiFrameLowering::eliminateCallFramePseudoInstr(
143143
MachineFunction &MF, MachineBasicBlock &MBB,
144144
MachineBasicBlock::iterator I) const {
145145
// Discard ADJCALLSTACKDOWN, ADJCALLSTACKUP instructions.
146-
MBB.erase(I);
146+
return MBB.erase(I);
147147
}
148148

149149
// The function epilogue should not depend on the current stack pointer!

‎llvm/lib/Target/Lanai/LanaiFrameLowering.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class LanaiFrameLowering : public TargetFrameLowering {
4242
void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
4343
void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
4444

45-
void
45+
MachineBasicBlock::iterator
4646
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
4747
MachineBasicBlock::iterator I) const override;
4848

‎llvm/lib/Target/MSP430/MSP430FrameLowering.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,9 @@ MSP430FrameLowering::restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
224224
return true;
225225
}
226226

227-
void MSP430FrameLowering::
228-
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
229-
MachineBasicBlock::iterator I) const {
227+
MachineBasicBlock::iterator MSP430FrameLowering::eliminateCallFramePseudoInstr(
228+
MachineFunction &MF, MachineBasicBlock &MBB,
229+
MachineBasicBlock::iterator I) const {
230230
const MSP430InstrInfo &TII =
231231
*static_cast<const MSP430InstrInfo *>(MF.getSubtarget().getInstrInfo());
232232
unsigned StackAlign = getStackAlignment();
@@ -283,7 +283,7 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
283283
}
284284
}
285285

286-
MBB.erase(I);
286+
return MBB.erase(I);
287287
}
288288

289289
void

‎llvm/lib/Target/MSP430/MSP430FrameLowering.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ class MSP430FrameLowering : public TargetFrameLowering {
3030
void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
3131
void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
3232

33-
void eliminateCallFramePseudoInstr(MachineFunction &MF,
34-
MachineBasicBlock &MBB,
35-
MachineBasicBlock::iterator I) const override;
33+
MachineBasicBlock::iterator
34+
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
35+
MachineBasicBlock::iterator I) const override;
3636

3737
bool spillCalleeSavedRegisters(MachineBasicBlock &MBB,
3838
MachineBasicBlock::iterator MI,

‎llvm/lib/Target/Mips/MipsFrameLowering.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ uint64_t MipsFrameLowering::estimateStackSize(const MachineFunction &MF) const {
143143
}
144144

145145
// Eliminate ADJCALLSTACKDOWN, ADJCALLSTACKUP pseudo instructions
146-
void MipsFrameLowering::
146+
MachineBasicBlock::iterator MipsFrameLowering::
147147
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
148148
MachineBasicBlock::iterator I) const {
149149
unsigned SP = STI.getABI().IsN64() ? Mips::SP_64 : Mips::SP;
@@ -156,5 +156,5 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
156156
STI.getInstrInfo()->adjustStackPtr(SP, Amount, MBB, I);
157157
}
158158

159-
MBB.erase(I);
159+
return MBB.erase(I);
160160
}

‎llvm/lib/Target/Mips/MipsFrameLowering.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class MipsFrameLowering : public TargetFrameLowering {
3636

3737
bool isFPCloseToIncomingSP() const override { return false; }
3838

39-
void
39+
MachineBasicBlock::iterator
4040
eliminateCallFramePseudoInstr(MachineFunction &MF,
4141
MachineBasicBlock &MBB,
4242
MachineBasicBlock::iterator I) const override;

‎llvm/lib/Target/NVPTX/NVPTXFrameLowering.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ void NVPTXFrameLowering::emitEpilogue(MachineFunction &MF,
7070

7171
// This function eliminates ADJCALLSTACKDOWN,
7272
// ADJCALLSTACKUP pseudo instructions
73-
void NVPTXFrameLowering::eliminateCallFramePseudoInstr(
73+
MachineBasicBlock::iterator NVPTXFrameLowering::eliminateCallFramePseudoInstr(
7474
MachineFunction &MF, MachineBasicBlock &MBB,
7575
MachineBasicBlock::iterator I) const {
7676
// Simply discard ADJCALLSTACKDOWN,
7777
// ADJCALLSTACKUP instructions.
78-
MBB.erase(I);
78+
return MBB.erase(I);
7979
}

‎llvm/lib/Target/NVPTX/NVPTXFrameLowering.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class NVPTXFrameLowering : public TargetFrameLowering {
2626
void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
2727
void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
2828

29-
void
29+
MachineBasicBlock::iterator
3030
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
3131
MachineBasicBlock::iterator I) const override;
3232
};

‎llvm/lib/Target/PowerPC/PPCFrameLowering.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1770,7 +1770,7 @@ restoreCRs(bool isPPC64, bool is31,
17701770
.addReg(MoveReg, getKillRegState(true)));
17711771
}
17721772

1773-
void PPCFrameLowering::
1773+
MachineBasicBlock::iterator PPCFrameLowering::
17741774
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
17751775
MachineBasicBlock::iterator I) const {
17761776
const TargetInstrInfo &TII = *Subtarget.getInstrInfo();
@@ -1807,7 +1807,7 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
18071807
}
18081808
}
18091809
// Simply discard ADJCALLSTACKDOWN, ADJCALLSTACKUP instructions.
1810-
MBB.erase(I);
1810+
return MBB.erase(I);
18111811
}
18121812

18131813
bool

‎llvm/lib/Target/PowerPC/PPCFrameLowering.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ class PPCFrameLowering: public TargetFrameLowering {
9393
const std::vector<CalleeSavedInfo> &CSI,
9494
const TargetRegisterInfo *TRI) const override;
9595

96-
void eliminateCallFramePseudoInstr(MachineFunction &MF,
97-
MachineBasicBlock &MBB,
98-
MachineBasicBlock::iterator I) const override;
96+
MachineBasicBlock::iterator
97+
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
98+
MachineBasicBlock::iterator I) const override;
9999

100100
bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
101101
MachineBasicBlock::iterator MI,

‎llvm/lib/Target/Sparc/SparcFrameLowering.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ void SparcFrameLowering::emitPrologue(MachineFunction &MF,
183183
}
184184
}
185185

186-
void SparcFrameLowering::
186+
MachineBasicBlock::iterator SparcFrameLowering::
187187
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
188188
MachineBasicBlock::iterator I) const {
189189
if (!hasReservedCallFrame(MF)) {
@@ -195,7 +195,7 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
195195
if (Size)
196196
emitSPAdjustment(MF, MBB, I, Size, SP::ADDrr, SP::ADDri);
197197
}
198-
MBB.erase(I);
198+
return MBB.erase(I);
199199
}
200200

201201

‎llvm/lib/Target/Sparc/SparcFrameLowering.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class SparcFrameLowering : public TargetFrameLowering {
2929
void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
3030
void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
3131

32-
void
32+
MachineBasicBlock::iterator
3333
eliminateCallFramePseudoInstr(MachineFunction &MF,
3434
MachineBasicBlock &MBB,
3535
MachineBasicBlock::iterator I) const override;

‎llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ SystemZFrameLowering::hasReservedCallFrame(const MachineFunction &MF) const {
511511
return true;
512512
}
513513

514-
void SystemZFrameLowering::
514+
MachineBasicBlock::iterator SystemZFrameLowering::
515515
eliminateCallFramePseudoInstr(MachineFunction &MF,
516516
MachineBasicBlock &MBB,
517517
MachineBasicBlock::iterator MI) const {
@@ -520,7 +520,7 @@ eliminateCallFramePseudoInstr(MachineFunction &MF,
520520
case SystemZ::ADJCALLSTACKUP:
521521
assert(hasReservedCallFrame(MF) &&
522522
"ADJSTACKDOWN and ADJSTACKUP should be no-ops");
523-
MBB.erase(MI);
523+
return MBB.erase(MI);
524524
break;
525525

526526
default:

‎llvm/lib/Target/SystemZ/SystemZFrameLowering.h

+3-4
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,9 @@ class SystemZFrameLowering : public TargetFrameLowering {
4646
int getFrameIndexReference(const MachineFunction &MF, int FI,
4747
unsigned &FrameReg) const override;
4848
bool hasReservedCallFrame(const MachineFunction &MF) const override;
49-
void eliminateCallFramePseudoInstr(MachineFunction &MF,
50-
MachineBasicBlock &MBB,
51-
MachineBasicBlock::iterator MI) const
52-
override;
49+
MachineBasicBlock::iterator
50+
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
51+
MachineBasicBlock::iterator MI) const override;
5352

5453
// Return the number of bytes in the callee-allocated part of the frame.
5554
uint64_t getAllocatedStackSize(const MachineFunction &MF) const;

‎llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ static void writeSPToMemory(unsigned SrcReg, MachineFunction &MF,
100100
MF.getInfo<WebAssemblyFunctionInfo>()->stackifyVReg(SPAddr);
101101
}
102102

103-
void WebAssemblyFrameLowering::eliminateCallFramePseudoInstr(
103+
MachineBasicBlock::iterator
104+
WebAssemblyFrameLowering::eliminateCallFramePseudoInstr(
104105
MachineFunction &MF, MachineBasicBlock &MBB,
105106
MachineBasicBlock::iterator I) const {
106107
assert(!I->getOperand(0).getImm() && hasFP(MF) &&
@@ -111,7 +112,7 @@ void WebAssemblyFrameLowering::eliminateCallFramePseudoInstr(
111112
DebugLoc DL = I->getDebugLoc();
112113
writeSPToMemory(WebAssembly::SP32, MF, MBB, I, I, DL);
113114
}
114-
MBB.erase(I);
115+
return MBB.erase(I);
115116
}
116117

117118
void WebAssemblyFrameLowering::emitPrologue(MachineFunction &MF,

0 commit comments

Comments
 (0)
Please sign in to comment.