From fc09d2213407d3b7cfcf306368aff9916e359a2d Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Tue, 11 Aug 2026 18:27:54 +0800 Subject: [RISCV] Preserve live constants when folding extensions --- backend/lib/Target/RISCV/RISCVCodeGen.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'backend/lib/Target/RISCV/RISCVCodeGen.cpp') diff --git a/backend/lib/Target/RISCV/RISCVCodeGen.cpp b/backend/lib/Target/RISCV/RISCVCodeGen.cpp index 9cf7b53..bc437c0 100644 --- a/backend/lib/Target/RISCV/RISCVCodeGen.cpp +++ b/backend/lib/Target/RISCV/RISCVCodeGen.cpp @@ -127,7 +127,8 @@ extendIntegerImmediate(const IntegerImmediate &Value, std::uint32_t DestinationW return makeUnexpected(ErrorCode::VerificationError, "RISC-V constant extension requires virtual-register operands"); } - const MachineOperand *SourceDefinition = Function.registerInfo().getUniqueVRegDef(*Source); + const Register SourceRegister = *Source; + const MachineOperand *SourceDefinition = Function.registerInfo().getUniqueVRegDef(SourceRegister); const MachineInstr *SourceDef = SourceDefinition == nullptr ? nullptr : SourceDefinition->parent(); if (SourceDef == nullptr || SourceDef->opcode() != opcode(GenericOpcode::G_CONSTANT)) return makeUnexpected(ErrorCode::Unsupported, @@ -161,7 +162,7 @@ extendIntegerImmediate(const IntegerImmediate &Value, std::uint32_t DestinationW if (!Added) return std::unexpected(Added.error()); - if (Function.registerInfo().useEmpty(*Source)) { + if (Function.registerInfo().useEmpty(SourceRegister)) { MachineInstr *Def = const_cast(SourceDef); MachineBasicBlock *Parent = Def->parent(); if (Parent == nullptr) -- cgit v1.2.3