From: Joerg Sonnenberger Date: Tue, 17 Mar 2020 23:39:54 +0000 (+0100) Subject: Fix compatibility for __builtin_stdarg_start X-Git-Tag: llvmorg-12-init~10827 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=09d402185394fdbf1f60233a7f42a4a1108c2cd3;p=platform%2Fupstream%2Fllvm.git Fix compatibility for __builtin_stdarg_start 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. --- diff --git a/clang/include/clang/Basic/Builtins.def b/clang/include/clang/Basic/Builtins.def index 85f775a..9613f31 100644 --- a/clang/include/clang/Basic/Builtins.def +++ b/clang/include/clang/Basic/Builtins.def @@ -472,7 +472,7 @@ BUILTIN(__builtin___NSStringMakeConstantString, "FC*cC*", "nc") 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") diff --git a/clang/test/SemaCXX/vararg-non-pod.cpp b/clang/test/SemaCXX/vararg-non-pod.cpp index 1b7f3b6..a1bbe74 100644 --- a/clang/test/SemaCXX/vararg-non-pod.cpp +++ b/clang/test/SemaCXX/vararg-non-pod.cpp @@ -164,6 +164,13 @@ void t6(Foo somearg, ... ) { __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);