diff options
author | Jason Merrill <jason@redhat.com> | 2023-03-13 14:06:11 -0400 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2023-03-13 16:15:35 -0400 |
commit | 538a0d0f29b12cff05681b6de2e0a3d7b33f3ef0 (patch) | |
tree | b625ca1e82e27ad8a617e068ed54c2f5ec0fed92 | |
parent | 8e9c65d34c799c9dadea1e2e60b4180f26262829 (diff) | |
download | gcc-538a0d0f29b12cff05681b6de2e0a3d7b33f3ef0.zip gcc-538a0d0f29b12cff05681b6de2e0a3d7b33f3ef0.tar.gz gcc-538a0d0f29b12cff05681b6de2e0a3d7b33f3ef0.tar.bz2 |
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.
-rw-r--r-- | gcc/cp/parser.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/pragma-system_header6.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/pragma-system_header6.h | 3 |
3 files changed, 6 insertions, 0 deletions
diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 5330419..a277003 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 0000000..924e452 --- /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 0000000..989ccd8 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/pragma-system_header6.h @@ -0,0 +1,3 @@ +#pragma GCC system_header + +typedef float _Float32; |