From e72ad2cd524ff38f162a23d69da5f78494d337ae Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Fri, 28 Aug 2026 13:45:07 +0800 Subject: [CodeGen] Centralize machine instruction erasure --- backend/lib/Target/RISCV/RISCVPushPopOptimizer.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'backend/lib/Target/RISCV/RISCVPushPopOptimizer.cpp') diff --git a/backend/lib/Target/RISCV/RISCVPushPopOptimizer.cpp b/backend/lib/Target/RISCV/RISCVPushPopOptimizer.cpp index 16928fb..dc33ad1 100644 --- a/backend/lib/Target/RISCV/RISCVPushPopOptimizer.cpp +++ b/backend/lib/Target/RISCV/RISCVPushPopOptimizer.cpp @@ -127,11 +127,7 @@ struct PushPopOpcodes final { const std::optional Source = Copy->Source->registerValue(); if (Destination && Source && Destination->physicalRegister() == ReturnRegister && Source->physicalRegister() == ZeroRegister) { - MachineBasicBlock *Parent = Instruction->parent(); - if (Parent == nullptr) - return makeUnexpected(ErrorCode::InternalError, - "RISC-V return-value assignment became detached"); - if (auto Removed = Parent->removeInstruction(*Instruction); !Removed) + if (auto Removed = Instruction->eraseFromParent(); !Removed) return std::unexpected(Removed.error()); return true; } @@ -244,9 +240,9 @@ public: buildPopReturn(*PopInstruction, *Return, *ReturnZero, Opcodes, Function, Target); if (!NewReturn) return std::unexpected(NewReturn.error()); - if (auto Removed = Block->removeInstruction(*PopInstruction); !Removed) + if (auto Removed = PopInstruction->eraseFromParent(); !Removed) return std::unexpected(Removed.error()); - if (auto Removed = Block->removeInstruction(*Return); !Removed) + if (auto Removed = Return->eraseFromParent(); !Removed) return std::unexpected(Removed.error()); Result.Changes.add(MachinePassChange::Instructions); Result.Changes.add(MachinePassChange::Operands); -- cgit v1.2.3