c: Improve some diagnostics for __builtin_stdc_bit_* [PR114042]
commit77576915cfd26e603aba5295dfdac54a5545f5f2
authorJakub Jelinek <jakub@redhat.com>
Mon, 26 Feb 2024 15:30:16 +0000 (26 16:30 +0100)
committerJakub Jelinek <jakub@redhat.com>
Mon, 26 Feb 2024 15:30:16 +0000 (26 16:30 +0100)
tree02588076aef2e17a4c41db23cb45a02a074a5ae2
parent10c73c111652208c5f9dc63a52933f4d6550cadd
c: Improve some diagnostics for __builtin_stdc_bit_* [PR114042]

The PR complains that for the __builtin_stdc_bit_* "builtins" the
diagnostics doesn't mention the name of the builtin the user used, but
instead __builtin_{clz,ctz,popcount}g instead (which is what the FE
immediately lowers it to).

The following patch repeats the checks from check_builtin_function_arguments
which are there done on BUILT_IN_{CLZ,CTZ,POPCOUNT}G, such that they
diagnose it with the name of the "builtin" user actually used before it
is gone.

2024-02-26  Jakub Jelinek  <jakub@redhat.com>

PR c/114042
* c-parser.cc (c_parser_postfix_expression): Diagnose
__builtin_stdc_bit_* argument with ENUMERAL_TYPE or BOOLEAN_TYPE
type or if signed here rather than on the replacement builtins
in check_builtin_function_arguments.

* gcc.dg/builtin-stdc-bit-2.c: Adjust testcase for actual builtin
names rather than names of builtin replacements.
gcc/c/c-parser.cc
gcc/testsuite/gcc.dg/builtin-stdc-bit-2.c