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") 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);