aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/CodeGen/MachineFunctionCloner.cpp
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-03 18:31:58 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-03 18:31:58 +0800
commit6580ac1c05bd1cbccd2dcd71fd9c2a384ae3db56 (patch)
tree3bea5331666575eb6a9cc7aa26842c7387cb372b /backend/lib/CodeGen/MachineFunctionCloner.cpp
parenta8a9d7d926202450645deae872d4d9dc11d63215 (diff)
downloadrcc-project-6580ac1c05bd1cbccd2dcd71fd9c2a384ae3db56.tar.gz
rcc-project-6580ac1c05bd1cbccd2dcd71fd9c2a384ae3db56.tar.xz
[CodeGen] Model complete MIR operands
Diffstat (limited to 'backend/lib/CodeGen/MachineFunctionCloner.cpp')
-rw-r--r--backend/lib/CodeGen/MachineFunctionCloner.cpp12
1 files changed, 12 insertions, 0 deletions
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<MachineFunctionCloneResult> 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);