The 't' was there because __builtin_va_start and __va_start had them, but those do in fact have custom sema checking so copying that was in fact incorrect. Thanks for fixing my bugs!
On Fri, Mar 2, 2018 at 4:41 PM, Reid Kleckner via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: rnk > Date: Fri Mar 2 13:41:08 2018 > New Revision: 326622 > > URL: http://llvm.org/viewvc/llvm-project?rev=326622&view=rev > Log: > Don't claim that va_start has special semantic checks > > 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 > > Modified: > cfe/trunk/include/clang/Basic/Builtins.def > cfe/trunk/test/Sema/varargs.c > > Modified: cfe/trunk/include/clang/Basic/Builtins.def > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/ > clang/Basic/Builtins.def?rev=326622&r1=326621&r2=326622&view=diff > ============================================================ > ================== > --- cfe/trunk/include/clang/Basic/Builtins.def (original) > +++ cfe/trunk/include/clang/Basic/Builtins.def Fri Mar 2 13:41:08 2018 > @@ -803,7 +803,7 @@ LIBBUILTIN(_setjmpex, "iJ", "fj", "set > > // 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 > > Modified: cfe/trunk/test/Sema/varargs.c > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/ > varargs.c?rev=326622&r1=326621&r2=326622&view=diff > ============================================================ > ================== > --- cfe/trunk/test/Sema/varargs.c (original) > +++ cfe/trunk/test/Sema/varargs.c Fri Mar 2 13:41:08 2018 > @@ -112,3 +112,12 @@ void f13(enum E1 e, ...) { > #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); > +} > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits