aaron.ballman added inline comments.
================
Comment at: clang/include/clang/Basic/LangOptions.h:262-264
+    /// Unprototyped integer arguments are extended to 32 bits.
+    ExtendTo32,
+    /// Unprototyped integer arguments are extended to 64 bits.
----------------
The comments aren't quite right as this matters in functions with prototypes as 
well (due to variadic arguments). How about "integer arguments are sign or zero 
extended to 32/64 bits during default argument promotions."?


================
Comment at: clang/include/clang/Basic/TargetInfo.h:1415
 
+  virtual bool supportsExtendIntArgs() const { return false; }
+
----------------
This should get a comment explaining what it does. The name is a bit generic 
too (esp given that there's an `_ExtInt` type that sounds like an "extended 
int").

Is there anything truly target-specific about the functionality? It seems like 
this behavior would be plausibly useful regardless of target architecture. 


================
Comment at: clang/include/clang/Driver/Options.td:1432-1433
+  Flags<[CC1Option, NoArgumentUnused]>,
+  HelpText<"Controls how scalar integer arguments are extended in calls"
+           " to unprototyped and varargs functions">,
+  Values<"32,64">,
----------------
It's a bit more conventional to use a trailing whitespace in adjacent string 
literals.


================
Comment at: clang/test/CodeGen/extend-arg-64.c:19
+
+int vararg(int, ...);
+
----------------
Can you also add a test for K&R C functions? e.g., `int knr();` `sum = knr(sum, 
u32, s32, u16, s16, u8, s8);`

Also, can you show what happens when passing a `long long` and an `_ExtInt`


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D101640

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

Reply via email to