From 6580ac1c05bd1cbccd2dcd71fd9c2a384ae3db56 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Mon, 3 Aug 2026 18:31:58 +0800 Subject: [CodeGen] Model complete MIR operands --- backend/lib/CodeGen/MachineFunctionCloner.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'backend/lib/CodeGen/MachineFunctionCloner.cpp') diff --git a/backend/lib/CodeGen/MachineFunctionCloner.cpp b/backend/lib/CodeGen/MachineFunctionCloner.cpp index dcf9712..b769f7d 100644 --- a/backend/lib/CodeGen/MachineFunctionCloner.cpp +++ b/backend/lib/CodeGen/MachineFunctionCloner.cpp @@ -126,13 +126,21 @@ struct CloneState final { return MachineOperand::jumpTable(Position->second, SourceOperand.targetFlags()); } case MachineOperand::Kind::Immediate: + case MachineOperand::Kind::IntegerImmediate: case MachineOperand::Kind::FloatingImmediate: case MachineOperand::Kind::GlobalSymbol: case MachineOperand::Kind::ExternalSymbol: case MachineOperand::Kind::RegisterMask: + case MachineOperand::Kind::LiveOutRegisterMask: case MachineOperand::Kind::Metadata: case MachineOperand::Kind::TargetIndex: case MachineOperand::Kind::MCSymbol: + case MachineOperand::Kind::CFIIndex: + case MachineOperand::Kind::Intrinsic: + case MachineOperand::Kind::Predicate: + case MachineOperand::Kind::ShuffleMask: + case MachineOperand::Kind::DebugInstrRef: + case MachineOperand::Kind::LaneMask: return SourceOperand.cloneDetached(); case MachineOperand::Kind::Count: return makeUnexpected(ErrorCode::VerificationError, "source operand has an invalid kind"); @@ -636,6 +644,10 @@ Expected cloneMachineFunction(const MachineFunction if (!Metadata) return std::unexpected(Metadata.error()); Result.ClonedFunction->metadata() = std::move(*Metadata); + auto CFIInfo = Source.cfiInfo().clone(); + if (!CFIInfo) + return std::unexpected(CFIInfo.error()); + Result.ClonedFunction->cfiInfo() = std::move(*CFIInfo); Result.ClonedFunction->properties() = Source.properties(); Result.ClonedFunction->attributes() = Source.attributes(); auto DestinationVerification = MachineVerifier::verify(*Result.ClonedFunction, Target); -- cgit v1.2.3