]> granicus.if.org Git - clang/commit
Fix completely bogus types for some builtins:
authorRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 19 Dec 2016 23:59:34 +0000 (23:59 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 19 Dec 2016 23:59:34 +0000 (23:59 +0000)
commit3b687020f5a628a733147c2f71ebdd7e3554e30c
treef2a4f4a134cb08d3e22d8356c98e1e8f9d260a01
parentbfe473e6541e69accbfe25fad1af5bba82d1e76b
Fix completely bogus types for some builtins:

 * 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290146 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/Builtins.def
lib/AST/ASTContext.cpp
lib/Sema/SemaChecking.cpp
lib/Sema/SemaExceptionSpec.cpp
test/Sema/vfprintf-invalid-redecl.c
test/Sema/vfprintf-valid-redecl.c
test/SemaCXX/builtins.cpp