
* In C++, never create a FunctionNoProtoType for a builtin (fixes C++1z crasher from r289754). * Fix type of __sync_synchronize to be a no-parameter function rather than a varargs function. This matches GCC. * Fix type of vfprintf to match its actual type. We gave it a wrong type due to PR4290 (apparently autoconf generates invalid code and expects compilers to choke it down or it miscompiles the program; the relevant error in clang was downgraded to a warning in r122744 to fix other occurrences of this autoconf brokenness, so we don't need this workaround any more). * Turn off vararg argument checking for __noop, since it's not *really* a varargs function. Alternatively we could add custom type checking for it and synthesize parameter types matching the actual arguments in each call, but that seemed like overkill. llvm-svn: 290146
19 lines
740 B
C
19 lines
740 B
C
// RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
|
|
// RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify -DPREDECLARE
|
|
|
|
#ifdef PREDECLARE
|
|
// PR16344
|
|
// Clang has defined 'vfprint' in builtin list. If the following line occurs before any other
|
|
// `vfprintf' in this file, and we getPreviousDecl()->getTypeSourceInfo() on it, then we will
|
|
// get a null pointer since the one in builtin list doesn't has valid TypeSourceInfo.
|
|
int vfprintf(void) { return 0; } // expected-warning {{requires inclusion of the header <stdio.h>}}
|
|
#endif
|
|
|
|
// PR4290
|
|
// The following declaration is compatible with vfprintf, so we shouldn't
|
|
// reject.
|
|
int vfprintf();
|
|
#ifndef PREDECLARE
|
|
// expected-warning@-2 {{requires inclusion of the header <stdio.h>}}
|
|
#endif
|