[llvm] [GISel][RISCV]Implement indirect parameter passing (PR #95429)

Sergei Barannikov via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 17 08:39:44 PDT 2024


=?utf-8?q?Gábor?= Spaits <gaborspaits1 at gmail.com>,Gabor Spaits
 <Gabor.Spaits at hightec-rt.com>,Gabor Spaits <Gabor.Spaits at hightec-rt.com>,Gabor
 Spaits <Gabor.Spaits at hightec-rt.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/95429 at github.com>


================
@@ -845,32 +908,49 @@ bool CallLowering::handleAssignments(ValueHandler &Handler,
                                      DstMPO, DstAlign, SrcMPO, SrcAlign,
                                      MemSize, VA);
         }
-        continue;
-      }
-
-      assert(!VA.needsCustom() && "custom loc should have been handled already");
-
-      if (i == 0 && !ThisReturnRegs.empty() &&
-          Handler.isIncomingArgumentHandler() &&
-          isTypeIsValidForThisReturn(ValVT)) {
+        // QUESTION: How to keep this assert with the new if then else
+        // structured code?
+        // assert(!VA.needsCustom() && "custom loc should have been handled
+        // already");
+
+      } else if (i == 0 && !ThisReturnRegs.empty() &&
+                 Handler.isIncomingArgumentHandler() &&
+                 isTypeIsValidForThisReturn(ValVT) && VA.isRegLoc()) {
         Handler.assignValueToReg(ArgReg, ThisReturnRegs[Part], VA);
-        continue;
-      }
-
-      if (Handler.isIncomingArgumentHandler())
+      } else if (Handler.isIncomingArgumentHandler() && VA.isRegLoc()) {
         Handler.assignValueToReg(ArgReg, VA.getLocReg(), VA);
-      else {
+      } else if (VA.isRegLoc()) {
----------------
s-barannikov wrote:

To me it's fine, don't know for others.


https://github.com/llvm/llvm-project/pull/95429


More information about the llvm-commits mailing list