asb added inline comments.

================
Comment at: lib/CodeGen/TargetInfo.cpp:8858
+  else
+    NeededArgGPRs = 1;
+
----------------
efriedma wrote:
> It looks like the ABI says there's a special rule for varargs here?
You're right, I neglected vararg calls. Now addressed and test cases added. The 
difference is only observable on RV64 I believe (as we only use the GPR 
tracking to decide whether an argument should be extended or not, and the 
argument promotion rules mean you'll never see signext/zeroext on varargs in 
RV32).


================
Comment at: lib/CodeGen/TargetInfo.cpp:8914
+Address RISCVABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAListAddr,
+                                QualType Ty) const {
+  CharUnits SlotSize = CharUnits::fromQuantity(XLen / 8);
----------------
efriedma wrote:
> The type of va_list and the behavior of va_arg should be documented in the 
> ABI doc... but apparently it's missing at the moment?  (I mean, this is the 
> obvious implementation from what is mentioned, but it would be nice to see 
> something more explicit.)
I've started an attempt to better document things 
https://github.com/riscv/riscv-elf-psabi-doc/pull/60


================
Comment at: test/CodeGen/riscv32-abi.c:118
+// single 2*xlen-sized argument, to ensure that alignment can be maintained if
+// it spills to the stack
+
----------------
efriedma wrote:
> Please clarify this comment; the ABI doc doesn't say anything about aligning 
> arguments whose alignment is 2✕XLEN, except in the case of varargs.
I've corrected the comment to say "if passed on the stack" and submitted a PR 
to clarify the ABI doc https://github.com/riscv/riscv-elf-psabi-doc/pull/59


https://reviews.llvm.org/D40023



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to