We don't have special checks for BI_va_start in
Sema::CheckBuiltinFunctionCall, so setting the 't' flag for va_start in
Builtins.def disables semantic checking for it. That's not desired, and
IRGen crashes when it tries to generate a call to va_start that doesn't
have at least one argument.
Follow-up to r322573
Fixes PR36565
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@326622
91177308-0d34-0410-b5e6-
96231b3b80d8
// C99 library functions
// C99 stdarg.h
-LIBBUILTIN(va_start, "vA.", "fnt", "stdarg.h", ALL_LANGUAGES)
+LIBBUILTIN(va_start, "vA.", "fn", "stdarg.h", ALL_LANGUAGES)
LIBBUILTIN(va_end, "vA", "fn", "stdarg.h", ALL_LANGUAGES)
LIBBUILTIN(va_copy, "vAA", "fn", "stdarg.h", ALL_LANGUAGES)
// C99 stdlib.h
#endif
__builtin_va_end(va);
}
+
+void f14(int e, ...) {
+ // expected-warning@+3 {{implicitly declaring library function 'va_start'}}
+ // expected-note@+2 {{include the header <stdarg.h>}}
+ // expected-error@+1 {{too few arguments to function call}}
+ va_start();
+ __builtin_va_list va;
+ va_start(va, e);
+}