[PATCH] D76186: Fix compatibility for __builtin_stdarg_start

Joerg Sonnenberger via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Mar 14 15:02:13 PDT 2020


joerg created this revision.

The `__builtin_stdarg_start` is the legacy spelling of `__builtin_va_start`. It should behave exactly the same, but for the last 9 years it would behave subtly different for diagnostics. Follow the change from 29ad95b23217 to require custom type checking.


https://reviews.llvm.org/D76186

Files:
  clang/include/clang/Basic/Builtins.def
  clang/test/SemaCXX/vararg-non-pod.cpp


Index: clang/test/SemaCXX/vararg-non-pod.cpp
===================================================================
--- clang/test/SemaCXX/vararg-non-pod.cpp
+++ clang/test/SemaCXX/vararg-non-pod.cpp
@@ -164,6 +164,13 @@
   __builtin_va_start(list, somearg);
 }
 
+// __builtin_stdarg_start is a compatibility alias for __builtin_va_start,
+// it should behave the same
+void t6b(Foo somearg, ... ) {
+  __builtin_va_list list;
+  __builtin_stdarg_start(list, somearg); // second argument to 'va_start' is not the last named parameter [-Wvarargs]
+}
+
 void t7(int n, ...) {
   __builtin_va_list list;
   __builtin_va_start(list, n);
Index: clang/include/clang/Basic/Builtins.def
===================================================================
--- clang/include/clang/Basic/Builtins.def
+++ clang/include/clang/Basic/Builtins.def
@@ -471,7 +471,7 @@
 BUILTIN(__builtin_va_start, "vA.", "nt")
 BUILTIN(__builtin_va_end, "vA", "n")
 BUILTIN(__builtin_va_copy, "vAA", "n")
-BUILTIN(__builtin_stdarg_start, "vA.", "n")
+BUILTIN(__builtin_stdarg_start, "vA.", "nt")
 BUILTIN(__builtin_assume_aligned, "v*vC*z.", "nc")
 BUILTIN(__builtin_bcmp, "ivC*vC*z", "Fn")
 BUILTIN(__builtin_bcopy, "vv*v*z", "n")


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76186.250388.patch
Type: text/x-patch
Size: 1198 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200314/901aec98/attachment.bin>


More information about the llvm-commits mailing list