re PR c/86125 (missing -Wbuiltin-declaration-mismatch on a mismatched return type)
authorJakub Jelinek <jakub@redhat.com>
Mon, 28 Jan 2019 23:21:10 +0000 (00:21 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 28 Jan 2019 23:21:10 +0000 (00:21 +0100)
commit6a335b9669b174c14a7811e967d199f2418e5f61
tree85cea92aec24ac255926d31ec171d13aee1f49b4
parentab1be99f2b005cb5b8b0b3caac19ab2edb0dd6f3
re PR c/86125 (missing -Wbuiltin-declaration-mismatch on a mismatched return type)

PR c/86125
* c-decl.c (last_fileptr_type): Remove.
(last_structptr_types): New variable.
(match_builtin_function_types): Compare TYPE_MAIN_VARIANT of
{old,new}rettype instead of the types themselves.  Assert
last_structptr_types array has the same number of elements
as builtin_structptr_types array.  Use TYPE_MAIN_VARIANT for
argument oldtype and newtype.  Instead of handling
just fileptr_type_node specially, handle all builtin_structptr_types
pointer nodes.  Formatting fix.

* c-common.c (c_common_nodes_and_builtins): Build type variants for
builtin_structptr_types types even for C.

* gcc.dg/Wbuiltin-declaration-mismatch-7.c: Guard testcase for
lp64, ilp32 and llp64 only.
(fputs): Use unsigned long long instead of size_t for return type.
(vfprintf, vfscanf): Accept arbitrary target specific type for
va_list.

From-SVN: r268348
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c/ChangeLog
gcc/c/c-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-11.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-7.c