aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/Target/RISCV
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-11 20:37:03 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-11 20:37:03 +0800
commit234d7d3bec020103e46daaff39d207d978479730 (patch)
treec3fe4f23416b0f37e9fe77366884983dbba15125 /backend/lib/Target/RISCV
parent38626ed37c9ea78c76c12dae4806b750881fd910 (diff)
downloadrcc-project-234d7d3bec020103e46daaff39d207d978479730.tar.gz
rcc-project-234d7d3bec020103e46daaff39d207d978479730.tar.xz
[RISCV] Order call operands like LLVM MIR
Diffstat (limited to 'backend/lib/Target/RISCV')
-rw-r--r--backend/lib/Target/RISCV/RISCVCallLowering.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/backend/lib/Target/RISCV/RISCVCallLowering.cpp b/backend/lib/Target/RISCV/RISCVCallLowering.cpp
index 4780edb..60bf6f2 100644
--- a/backend/lib/Target/RISCV/RISCVCallLowering.cpp
+++ b/backend/lib/Target/RISCV/RISCVCallLowering.cpp
@@ -1352,6 +1352,14 @@ emitOutgoingArguments(MachineIRBuilder &Builder, const CallLoweringPlan &Plan,
if (!Mask)
return std::unexpected(Mask.error());
+ std::unordered_set<PhysicalRegister> DynamicUses;
+ for (const CCAssignment &Assignment : Plan.argumentAssignments()) {
+ if (Assignment.LocationRegister && DynamicUses.insert(*Assignment.LocationRegister).second) {
+ auto Use = Instruction->addImplicitUse(Register::fromPhysical(*Assignment.LocationRegister));
+ if (!Use)
+ return std::unexpected(Use.error());
+ }
+ }
std::unordered_set<PhysicalRegister> DynamicDefs;
if (!IsTail) {
for (const CCAssignment &Assignment : Plan.returnAssignments()) {
@@ -1363,14 +1371,6 @@ emitOutgoingArguments(MachineIRBuilder &Builder, const CallLoweringPlan &Plan,
}
}
}
- std::unordered_set<PhysicalRegister> DynamicUses;
- for (const CCAssignment &Assignment : Plan.argumentAssignments()) {
- if (Assignment.LocationRegister && DynamicUses.insert(*Assignment.LocationRegister).second) {
- auto Use = Instruction->addImplicitUse(Register::fromPhysical(*Assignment.LocationRegister));
- if (!Use)
- return std::unexpected(Use.error());
- }
- }
auto Built = Instruction->build();
if (!Built)
return std::unexpected(Built.error());