================
Comment at: lib/CodeGen/CGCall.cpp:1148-1150
@@ +1147,5 @@
+
+      for (; NumIRArgs > 0; --NumIRArgs) {
+        IRArgs[ArgNo].push_back(IRArgNo++);
+      }
+
----------------
Alexey Samsonov wrote:
> 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?
Yeah, sounds good.

http://reviews.llvm.org/D4938



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

Reply via email to