[llvm] [RISCV] Use OrigTy from InputArg/OutputArg (NFCI) (PR #154095)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 18 04:12:52 PDT 2025
https://github.com/nikic created https://github.com/llvm/llvm-project/pull/154095
The InputArg/OutputArg now contains the OrigTy, so directly use that instead of trying to recover it.
CC_RISCV is now *nearly* a normal CC assignment function. However, it still differs by having an IsRet flag.
>From 2e175b81a6172728ea086cf6276c7d40a3590ac6 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Mon, 18 Aug 2025 13:06:42 +0200
Subject: [PATCH] [RISCV] Use OrigTy from InputArg/OutputArg (NFCI)
The InputArg/OutputArg now contains the OrigTy, so directly use
that instead of trying to recover it.
CC_RISCV is now *nearly* a normal CC assignment function. However,
it still differs by having an IsRet flag.
---
llvm/lib/Target/RISCV/RISCVISelLowering.cpp | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index aedba7e52e3ab..b86c240a4371c 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -22335,20 +22335,12 @@ void RISCVTargetLowering::analyzeInputArgs(
MachineFunction &MF, CCState &CCInfo,
const SmallVectorImpl<ISD::InputArg> &Ins, bool IsRet,
RISCVCCAssignFn Fn) const {
- FunctionType *FType = MF.getFunction().getFunctionType();
-
for (const auto &[Idx, In] : enumerate(Ins)) {
MVT ArgVT = In.VT;
ISD::ArgFlagsTy ArgFlags = In.Flags;
- Type *ArgTy = nullptr;
- if (IsRet)
- ArgTy = FType->getReturnType();
- else if (In.isOrigArg())
- ArgTy = FType->getParamType(In.getOrigArgIndex());
-
if (Fn(Idx, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, CCInfo, IsRet,
- ArgTy)) {
+ In.OrigTy)) {
LLVM_DEBUG(dbgs() << "InputArg #" << Idx << " has unhandled type "
<< ArgVT << '\n');
llvm_unreachable(nullptr);
@@ -22363,10 +22355,9 @@ void RISCVTargetLowering::analyzeOutputArgs(
for (const auto &[Idx, Out] : enumerate(Outs)) {
MVT ArgVT = Out.VT;
ISD::ArgFlagsTy ArgFlags = Out.Flags;
- Type *OrigTy = CLI ? CLI->getArgs()[Out.OrigArgIndex].Ty : nullptr;
if (Fn(Idx, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, CCInfo, IsRet,
- OrigTy)) {
+ Out.OrigTy)) {
LLVM_DEBUG(dbgs() << "OutputArg #" << Idx << " has unhandled type "
<< ArgVT << "\n");
llvm_unreachable(nullptr);
@@ -23148,7 +23139,7 @@ bool RISCVTargetLowering::CanLowerReturn(
MVT VT = Outs[i].VT;
ISD::ArgFlagsTy ArgFlags = Outs[i].Flags;
if (CC_RISCV(i, VT, VT, CCValAssign::Full, ArgFlags, CCInfo,
- /*IsRet=*/true, nullptr))
+ /*IsRet=*/true, Outs[i].OrigTy))
return false;
}
return true;
More information about the llvm-commits
mailing list