================
Comment at: lib/CodeGen/CGCall.cpp:1148-1150
@@ +1147,5 @@
+
+      for (; NumIRArgs > 0; --NumIRArgs) {
+        IRArgs[ArgNo].push_back(IRArgNo++);
+      }
+
----------------
Reid Kleckner wrote:
> Looks like all argument types consume either zero, one, or sequential IR 
> arguments.  This only needs to store one number per AST-level argument. If 
> there are zero IR args, use InvalidIndex. If there is one IR arg, store the 
> IR arg number. If there are more than one, store the first IR arg number. The 
> consumers can increment that during argument expansion.
> 
> Does that sound reasonable?
Yes, I think the assumption that all IR arguments are sequential is reasonable. 
Currently, we would still need to do argument expansion both here, and in 
EmitPrologue/EmitCall methods. I think it makes to store the number of expanded 
arguments to assert that the numbers match (at least until we refactor terribly 
similar GetExpandedTypes / ExpandTypeFromArgs / ExpandTypeToArgs into a single 
routine and/or introduce a map "QualType -> number of arguments it expands to").

What we can do is replace PaddingIRArgIndex and IRArgs vectors with a single 
vector of triples <PaddingIRArgIndex, FirstIRArgIndex, NumberOfIRArgs>. WDYT?

http://reviews.llvm.org/D4938



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to