[PATCH] D66180: [GlobalISel][CallLowering] Add support for splitting types according to calling conventions

Tim Northover via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 22 06:36:09 PDT 2019


t.p.northover added inline comments.


================
Comment at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:196
+  bool handleAssignments(MachineIRBuilder &MIRBuilder,
+                         SmallVectorImpl<ArgInfo> &Args,
                          ValueHandler &Handler) const;
----------------
It looks like you only use the ability here to change elements, not add/remove them? I think that's a `MutableArrayRef` use-case.


================
Comment at: llvm/lib/CodeGen/GlobalISel/CallLowering.cpp:165
 bool CallLowering::handleAssignments(MachineIRBuilder &MIRBuilder,
-                                     ArrayRef<ArgInfo> Args,
+                                     SmallVectorImpl<ArgInfo> &Args,
                                      ValueHandler &Handler) const {
----------------
It looks like you only modify elements in place? If so, that's `MutableArrayRef`'s thing.


================
Comment at: llvm/lib/CodeGen/GlobalISel/CallLowering.cpp:260
+          if (PartIdx == 0) {
+            Flags.setSplit();
+          } else {
----------------
Why only `setSplit` for outgoing args?


================
Comment at: llvm/lib/CodeGen/GlobalISel/CallLowering.cpp:301
+          for (unsigned Part = 0; Part < NumArgRegs; ++Part) {
+            // There should be Regs.size() ArgLocs per argument.
+            VA = ArgLocs[j + Part];
----------------
Assertion?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66180/new/

https://reviews.llvm.org/D66180





More information about the llvm-commits mailing list