aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-family
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2023-09-06 08:51:00 +0200
committerJakub Jelinek <jakub@redhat.com>2023-09-06 08:51:00 +0200
commit80acabb6dd05090db67805cdd358fe974b45e2ed (patch)
treebe4175443b119ebe0736004381f6e4bd5efc7d75 /gcc/c-family
parentc1597e7fb9f9ecb9d7c33b5afa48031f284375de (diff)
downloadgcc-80acabb6dd05090db67805cdd358fe974b45e2ed.zip
gcc-80acabb6dd05090db67805cdd358fe974b45e2ed.tar.gz
gcc-80acabb6dd05090db67805cdd358fe974b45e2ed.tar.bz2
c: Don't pedwarn on _FloatN{,x} or {f,F}N{,x} suffixes for C2X
Now that _Float{16,32,64,128,32x,64x,128x} and {f,F}{16,32,64,128,32x,64x,128x} literal suffixes are in C23 standard, I think it is undesirable to pedwarn about these for -std=c2x, so this patch uses pedwarn_c11 instead. In c-family/, we don't have that function and am not sure it would be very clean to define dummy pedwarn_c11 in the C++ FE, so the patch just does what pedwarn_c11 does using pedwarn/warning. 2023-09-06 Jakub Jelinek <jakub@redhat.com> gcc/c-family/ * c-lex.cc (interpret_float): For C diagnostics on FN and FNx suffixes append " before C2X" to diagnostics text and follow behavior of pedwarn_c11. gcc/c/ * c-decl.cc (declspecs_add_type): Use pedwarn_c11 rather than pedwarn for _FloatN{,x} diagnostics and append " before C2X" to the diagnostic text. gcc/testsuite/ * gcc.dg/c11-floatn-1.c: New test. * gcc.dg/c11-floatn-2.c: New test. * gcc.dg/c11-floatn-3.c: New test. * gcc.dg/c11-floatn-4.c: New test. * gcc.dg/c11-floatn-5.c: New test. * gcc.dg/c11-floatn-6.c: New test. * gcc.dg/c11-floatn-7.c: New test. * gcc.dg/c11-floatn-8.c: New test. * gcc.dg/c2x-floatn-1.c: New test. * gcc.dg/c2x-floatn-2.c: New test. * gcc.dg/c2x-floatn-3.c: New test. * gcc.dg/c2x-floatn-4.c: New test. * gcc.dg/c2x-floatn-5.c: New test. * gcc.dg/c2x-floatn-6.c: New test. * gcc.dg/c2x-floatn-7.c: New test. * gcc.dg/c2x-floatn-8.c: New test.
Diffstat (limited to 'gcc/c-family')
-rw-r--r--gcc/c-family/c-lex.cc20
1 files changed, 19 insertions, 1 deletions
diff --git a/gcc/c-family/c-lex.cc b/gcc/c-family/c-lex.cc
index d8aa290..f72898f 100644
--- a/gcc/c-family/c-lex.cc
+++ b/gcc/c-family/c-lex.cc
@@ -1021,7 +1021,25 @@ interpret_float (const cpp_token *token, unsigned int flags,
error ("unsupported non-standard suffix on floating constant");
return error_mark_node;
}
- else if (c_dialect_cxx () && !extended)
+ else if (!c_dialect_cxx ())
+ {
+ if (warn_c11_c2x_compat > 0)
+ {
+ if (pedantic && !flag_isoc2x)
+ pedwarn (input_location, OPT_Wc11_c2x_compat,
+ "non-standard suffix on floating constant "
+ "before C2X");
+ else
+ warning (OPT_Wc11_c2x_compat,
+ "non-standard suffix on floating constant "
+ "before C2X");
+ }
+ else if (warn_c11_c2x_compat != 0 && pedantic && !flag_isoc2x)
+ pedwarn (input_location, OPT_Wpedantic,
+ "non-standard suffix on floating constant "
+ "before C2X");
+ }
+ else if (!extended)
{
if (cxx_dialect < cxx23)
pedwarn (input_location, OPT_Wpedantic,