[llvm] [RISCV] Add stack clash vector support (PR #119458)
Raphael Moreira Zinsly via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 18 07:32:21 PST 2024
================
@@ -2069,16 +2152,33 @@ static void emitStackProbeInline(MachineFunction &MF, MachineBasicBlock &MBB,
MBB.addSuccessor(LoopTestMBB);
// Update liveins.
fullyRecomputeLiveIns({ExitMBB, LoopTestMBB});
+
+ return ExitMBB;
}
void RISCVFrameLowering::inlineStackProbe(MachineFunction &MF,
MachineBasicBlock &MBB) const {
- auto Where = llvm::find_if(MBB, [](MachineInstr &MI) {
- return MI.getOpcode() == RISCV::PROBED_STACKALLOC;
- });
- if (Where != MBB.end()) {
- DebugLoc DL = MBB.findDebugLoc(Where);
- emitStackProbeInline(MF, MBB, Where, DL);
- Where->eraseFromParent();
+ // Get the instructions that need to be replaced. We emit at most two of
+ // these. Remember them in order to avoid complications coming from the need
+ // to traverse the block while potentially creating more blocks.
+ SmallVector<MachineInstr *, 4> ToReplace;
+ for (MachineInstr &MI : MBB) {
+ int Opc = MI.getOpcode();
----------------
rzinsly wrote:
Done
https://github.com/llvm/llvm-project/pull/119458
More information about the llvm-commits
mailing list