From 538a0d0f29b12cff05681b6de2e0a3d7b33f3ef0 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 13 Mar 2023 14:06:11 -0400 Subject: [PATCH] c++: handle _FloatNN redeclaration like bool [PR107128] It's been inconvenient to compile testcases preprocessed with GCC 12 or earlier because they break on typedef __float128 _Float128; We already had code for handling this with bool and wchar_t, it just needs to be extended to _FloatNN as well. PR c++/107128 gcc/cp/ChangeLog: * parser.cc (cp_parser_set_decl_spec_type): Use redefined_builtin_type for extended_float_type_p. gcc/testsuite/ChangeLog: * g++.dg/warn/pragma-system_header6.h: New test. * g++.dg/warn/pragma-system_header6.C: New test. --- gcc/cp/parser.cc | 2 ++ gcc/testsuite/g++.dg/warn/pragma-system_header6.C | 1 + gcc/testsuite/g++.dg/warn/pragma-system_header6.h | 3 +++ 3 files changed, 6 insertions(+) create mode 100644 gcc/testsuite/g++.dg/warn/pragma-system_header6.C create mode 100644 gcc/testsuite/g++.dg/warn/pragma-system_header6.h diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 533041946c09..a277003ea581 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -33452,10 +33452,12 @@ cp_parser_set_decl_spec_type (cp_decl_specifier_seq *decl_specs, C++-safe. */ if (decl_spec_seq_has_spec_p (decl_specs, ds_typedef) && !type_definition_p + && TYPE_P (type_spec) && (type_spec == boolean_type_node || type_spec == char8_type_node || type_spec == char16_type_node || type_spec == char32_type_node + || extended_float_type_p (type_spec) || type_spec == wchar_type_node) && (decl_specs->type || decl_spec_seq_has_spec_p (decl_specs, ds_long) diff --git a/gcc/testsuite/g++.dg/warn/pragma-system_header6.C b/gcc/testsuite/g++.dg/warn/pragma-system_header6.C new file mode 100644 index 000000000000..924e4522cf06 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/pragma-system_header6.C @@ -0,0 +1 @@ +#include "pragma-system_header6.h" diff --git a/gcc/testsuite/g++.dg/warn/pragma-system_header6.h b/gcc/testsuite/g++.dg/warn/pragma-system_header6.h new file mode 100644 index 000000000000..989ccd8795a8 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/pragma-system_header6.h @@ -0,0 +1,3 @@ +#pragma GCC system_header + +typedef float _Float32; -- 2.47.2