[llvm] [GISel][RISCV]Implement indirect parameter passing for large scalars (PR #95429)
Gábor Spaits via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 14 02:23:42 PDT 2024
================
@@ -790,6 +804,36 @@ bool CallLowering::handleAssignments(ValueHandler &Handler,
CCValAssign &VA = ArgLocs[j + Idx];
const ISD::ArgFlagsTy Flags = Args[i].Flags[Part];
+ // We found an indirect parameter passing and we are at the first part of
+ // the value being passed. In this case copy the incoming pointer into a
+ // virtual register so later we can load it.
+ if (VA.getLocInfo() == CCValAssign::Indirect && Flags.isSplit()) {
----------------
spaits wrote:
So basically checking `isSplit` is just a safety check. Maybe it should be also enough info, that we have an indirectly passed argument and we are in the first "part" of it, so we should handle the indirect passing.
https://github.com/llvm/llvm-project/pull/95429
More information about the llvm-commits
mailing list