From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2122) id 542973858C2D; Mon, 13 Mar 2023 20:16:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 542973858C2D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1678738613; bh=LjEJb5/qIuzNMCziimeJYgYFFZVfVO+H1+UrHyz2ZM8=; h=From:To:Subject:Date:From; b=rhqza2IJ9ZLOQ6lrHV/T8Apl7lzKfrAC5+z0D/SOiA95GfzNCZ4oUbRiGOXt2Un/X xWuDMGHbMTgDr0UFGmGBbRczqFm5rQRS8jNqeSprx+tb1AZTFQeHvS61GBXoSJqXBh nXVXelm5pMNlRPrXg/u3Zc4odskxg+tyVQAICERk= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jason Merrill To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-6643] c++: handle _FloatNN redeclaration like bool [PR107128] X-Act-Checkin: gcc X-Git-Author: Jason Merrill X-Git-Refname: refs/heads/trunk X-Git-Oldrev: 8e9c65d34c799c9dadea1e2e60b4180f26262829 X-Git-Newrev: 538a0d0f29b12cff05681b6de2e0a3d7b33f3ef0 Message-Id: <20230313201653.542973858C2D@sourceware.org> Date: Mon, 13 Mar 2023 20:16:53 +0000 (GMT) List-Id: https://gcc.gnu.org/g:538a0d0f29b12cff05681b6de2e0a3d7b33f3ef0 commit r13-6643-g538a0d0f29b12cff05681b6de2e0a3d7b33f3ef0 Author: Jason Merrill Date: Mon Mar 13 14:06:11 2023 -0400 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. Diff: --- gcc/testsuite/g++.dg/warn/pragma-system_header6.h | 3 +++ gcc/cp/parser.cc | 2 ++ gcc/testsuite/g++.dg/warn/pragma-system_header6.C | 1 + 3 files changed, 6 insertions(+) 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 00000000000..989ccd8795a --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/pragma-system_header6.h @@ -0,0 +1,3 @@ +#pragma GCC system_header + +typedef float _Float32; diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 533041946c0..a277003ea58 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 00000000000..924e4522cf0 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/pragma-system_header6.C @@ -0,0 +1 @@ +#include "pragma-system_header6.h"