From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id A8BE73858C2D for ; Thu, 3 Nov 2022 18:52:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A8BE73858C2D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667501565; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JzkINVyov5UgRklpxX0MlZ27yuNx0Pz3e2ZS6GyWUwo=; b=fueFG50cuAd44NAuuEE28nzMh28CEZlKC/RG8R/82rqguuhSSLn2QoCkRxbmuVNQ37p736 AY/4/xCQYaYMH9LhDUARxsyewkyW7c9GQqnLJL4a4IjzHYdQj4WfXGvNhBhT3IA6xze+CT HlJJEh2Zg5UQ9WzrKHEL9lO7SXsQSNU= Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-393-D6ADzSFbM6G4uv0LAACC3Q-1; Thu, 03 Nov 2022 14:52:44 -0400 X-MC-Unique: D6ADzSFbM6G4uv0LAACC3Q-1 Received: by mail-qk1-f200.google.com with SMTP id bj1-20020a05620a190100b006fa12a05188so2702357qkb.4 for ; Thu, 03 Nov 2022 11:52:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JzkINVyov5UgRklpxX0MlZ27yuNx0Pz3e2ZS6GyWUwo=; b=A1HuQWwtPYsOSLnbcLoFCIO2HkcmwGePRsXvQG8DauSNyWxa0oO7QjHw2dRcqcnqAf 5vPxPGk+tKaFP0ePaA4dTr0MyLqzpGX7FcLdZbM3/K5YEJMfj6+OIRHYZiHItXx9/RDt XQ5mGTW2MywkLNYAyy2GGwn5DYdtH7kESx5DBT7BMzC2vIBxAmXcTrKnj6NL7YyqbWj5 IER+rEEFWlH6iepeWXjZH+mkF2l8HHXEJtZxLHIZydZnsHVmiJd7Rt4R1mZr63S8EDb/ YlhspuwHamVWivbGQtHy2TGnXueMzk/FSVlSrom2LRPsgybQQBXkyK62JF5ZYs7/WhHv yXvg== X-Gm-Message-State: ACrzQf3D4n20gSYwRCR+qD9NwR9+JZd7M1qLaRdC9tITx7XjQk+CYV1s DMYKIP2S+FoE79MS8ux3csY4DQDtv7HJpfb0NljFhDBnCOuk8cmOrtf+vJoLYODFV3ag9gb9tzC bbRJCT8fJXcep62w8JvfOiA8Ey56+lzVnFI4fFK2LBubZC+WKDNzQ697nkixmXkRviA== X-Received: by 2002:a05:622a:144e:b0:39c:f9a0:c93b with SMTP id v14-20020a05622a144e00b0039cf9a0c93bmr25983914qtx.672.1667501562333; Thu, 03 Nov 2022 11:52:42 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5WdoS8J+6DMu3JR75J9LhwUmBjU+rXnIcaUB9dlEhZfyoRa0NdXSI5G7dE1kYKzjeEgEWGpg== X-Received: by 2002:a05:622a:144e:b0:39c:f9a0:c93b with SMTP id v14-20020a05622a144e00b0039cf9a0c93bmr25983847qtx.672.1667501561107; Thu, 03 Nov 2022 11:52:41 -0700 (PDT) Received: from barrymore.redhat.com (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id d16-20020ac85350000000b00398df095cf5sm966176qto.34.2022.11.03.11.52.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Nov 2022 11:52:40 -0700 (PDT) From: Jason Merrill To: gcc-patches@gcc.gnu.org Subject: [pushed] c++: change -fconcepts to mean C++20 concepts Date: Thu, 3 Nov 2022 14:52:38 -0400 Message-Id: <20221103185238.2104412-1-jason@redhat.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Tested x86_64-pc-linux-gnu, applying to trunk. -- >8 -- It was always weird that -fconcepts in C++17 mode meant the same thing as -fconcepts-ts in C++20 mode; this patch harmonizes the flags so that for TS concepts you always need to write -fconcepts-ts. In the unlikely event anyone is still using -fconcepts in C++17 mode, they can either fix their code to work with C++20 concepts or adjust the compiler flag. gcc/c-family/ChangeLog: * c-opts.cc (c_common_post_options): -fconcepts no longer implies -fconcepts-ts before C++20. gcc/ChangeLog: * doc/invoke.texi: -fconcepts no longer implies -fconcepts-ts before C++20. gcc/cp/ChangeLog: * parser.cc (cp_parser_template_declaration_after_parameters): Fix concept parsing below C++20. gcc/testsuite/ChangeLog: * g++.dg/concepts/auto1.C: * g++.dg/concepts/auto3.C: * g++.dg/concepts/auto4.C: * g++.dg/concepts/class-deduction1.C: * g++.dg/concepts/class5.C: * g++.dg/concepts/class6.C: * g++.dg/concepts/debug1.C: * g++.dg/concepts/decl-diagnose.C: * g++.dg/concepts/deduction-constraint1.C: * g++.dg/concepts/diagnostic1.C: * g++.dg/concepts/dr1430.C: * g++.dg/concepts/equiv.C: * g++.dg/concepts/equiv2.C: * g++.dg/concepts/expression.C: * g++.dg/concepts/expression2.C: * g++.dg/concepts/expression3.C: * g++.dg/concepts/fn-concept1.C: * g++.dg/concepts/fn-concept2.C: * g++.dg/concepts/fn-concept3.C: * g++.dg/concepts/fn1.C: * g++.dg/concepts/fn10.C: * g++.dg/concepts/fn2.C: * g++.dg/concepts/fn3.C: * g++.dg/concepts/fn4.C: * g++.dg/concepts/fn5.C: * g++.dg/concepts/fn6.C: * g++.dg/concepts/fn8.C: * g++.dg/concepts/fn9.C: * g++.dg/concepts/generic-fn-err.C: * g++.dg/concepts/generic-fn.C: * g++.dg/concepts/inherit-ctor1.C: * g++.dg/concepts/inherit-ctor3.C: * g++.dg/concepts/intro1.C: * g++.dg/concepts/intro2.C: * g++.dg/concepts/intro3.C: * g++.dg/concepts/intro4.C: * g++.dg/concepts/intro5.C: * g++.dg/concepts/intro6.C: * g++.dg/concepts/intro7.C: * g++.dg/concepts/locations1.C: * g++.dg/concepts/partial-concept-id1.C: * g++.dg/concepts/partial-concept-id2.C: * g++.dg/concepts/partial-spec5.C: * g++.dg/concepts/placeholder2.C: * g++.dg/concepts/placeholder3.C: * g++.dg/concepts/placeholder4.C: * g++.dg/concepts/placeholder5.C: * g++.dg/concepts/placeholder6.C: * g++.dg/concepts/pr65634.C: * g++.dg/concepts/pr65636.C: * g++.dg/concepts/pr65681.C: * g++.dg/concepts/pr65848.C: * g++.dg/concepts/pr67249.C: * g++.dg/concepts/pr67595.C: * g++.dg/concepts/pr68434.C: * g++.dg/concepts/pr71127.C: * g++.dg/concepts/pr71128.C: * g++.dg/concepts/pr71131.C: * g++.dg/concepts/pr71385.C: * g++.dg/concepts/pr85065.C: * g++.dg/concepts/template-parm11.C: * g++.dg/concepts/template-parm12.C: * g++.dg/concepts/template-parm2.C: * g++.dg/concepts/template-parm3.C: * g++.dg/concepts/template-parm4.C: * g++.dg/concepts/template-template-parm1.C: * g++.dg/concepts/var-concept1.C: * g++.dg/concepts/var-concept2.C: * g++.dg/concepts/var-concept3.C: * g++.dg/concepts/var-concept4.C: * g++.dg/concepts/var-concept5.C: * g++.dg/concepts/var-concept6.C: * g++.dg/concepts/var-concept7.C: * g++.dg/concepts/var-templ2.C: * g++.dg/concepts/var-templ3.C: * g++.dg/concepts/variadic1.C: * g++.dg/concepts/variadic2.C: * g++.dg/concepts/variadic3.C: * g++.dg/concepts/variadic4.C: * g++.dg/cpp2a/concepts-pr65575.C: * g++.dg/cpp2a/concepts-pr66091.C: * g++.dg/cpp2a/concepts-pr84980.C: * g++.dg/cpp2a/concepts-pr85265.C: Pass -fconcepts-ts. * g++.dg/cpp2a/concepts-pr84979-2.C: * g++.dg/cpp2a/concepts-pr84979-3.C: Same diagnostics in C++20 and below. --- gcc/doc/invoke.texi | 14 +++++++------- gcc/c-family/c-opts.cc | 3 --- gcc/cp/parser.cc | 7 ++++--- gcc/testsuite/g++.dg/concepts/auto1.C | 2 +- gcc/testsuite/g++.dg/concepts/auto3.C | 2 +- gcc/testsuite/g++.dg/concepts/auto4.C | 2 +- gcc/testsuite/g++.dg/concepts/class-deduction1.C | 2 +- gcc/testsuite/g++.dg/concepts/class5.C | 2 +- gcc/testsuite/g++.dg/concepts/class6.C | 2 +- gcc/testsuite/g++.dg/concepts/debug1.C | 2 +- gcc/testsuite/g++.dg/concepts/decl-diagnose.C | 2 +- .../g++.dg/concepts/deduction-constraint1.C | 2 +- gcc/testsuite/g++.dg/concepts/diagnostic1.C | 2 +- gcc/testsuite/g++.dg/concepts/dr1430.C | 2 +- gcc/testsuite/g++.dg/concepts/equiv.C | 2 +- gcc/testsuite/g++.dg/concepts/equiv2.C | 2 +- gcc/testsuite/g++.dg/concepts/expression.C | 2 +- gcc/testsuite/g++.dg/concepts/expression2.C | 2 +- gcc/testsuite/g++.dg/concepts/expression3.C | 2 +- gcc/testsuite/g++.dg/concepts/fn-concept1.C | 2 +- gcc/testsuite/g++.dg/concepts/fn-concept2.C | 2 +- gcc/testsuite/g++.dg/concepts/fn-concept3.C | 2 +- gcc/testsuite/g++.dg/concepts/fn1.C | 2 +- gcc/testsuite/g++.dg/concepts/fn10.C | 2 +- gcc/testsuite/g++.dg/concepts/fn2.C | 2 +- gcc/testsuite/g++.dg/concepts/fn3.C | 2 +- gcc/testsuite/g++.dg/concepts/fn4.C | 2 +- gcc/testsuite/g++.dg/concepts/fn5.C | 2 +- gcc/testsuite/g++.dg/concepts/fn6.C | 2 +- gcc/testsuite/g++.dg/concepts/fn8.C | 2 +- gcc/testsuite/g++.dg/concepts/fn9.C | 2 +- gcc/testsuite/g++.dg/concepts/generic-fn-err.C | 2 +- gcc/testsuite/g++.dg/concepts/generic-fn.C | 2 +- gcc/testsuite/g++.dg/concepts/inherit-ctor1.C | 2 +- gcc/testsuite/g++.dg/concepts/inherit-ctor3.C | 2 +- gcc/testsuite/g++.dg/concepts/intro1.C | 2 +- gcc/testsuite/g++.dg/concepts/intro2.C | 2 +- gcc/testsuite/g++.dg/concepts/intro3.C | 2 +- gcc/testsuite/g++.dg/concepts/intro4.C | 2 +- gcc/testsuite/g++.dg/concepts/intro5.C | 2 +- gcc/testsuite/g++.dg/concepts/intro6.C | 2 +- gcc/testsuite/g++.dg/concepts/intro7.C | 2 +- gcc/testsuite/g++.dg/concepts/locations1.C | 2 +- .../g++.dg/concepts/partial-concept-id1.C | 2 +- .../g++.dg/concepts/partial-concept-id2.C | 2 +- gcc/testsuite/g++.dg/concepts/partial-spec5.C | 2 +- gcc/testsuite/g++.dg/concepts/placeholder2.C | 2 +- gcc/testsuite/g++.dg/concepts/placeholder3.C | 2 +- gcc/testsuite/g++.dg/concepts/placeholder4.C | 2 +- gcc/testsuite/g++.dg/concepts/placeholder5.C | 2 +- gcc/testsuite/g++.dg/concepts/placeholder6.C | 2 +- gcc/testsuite/g++.dg/concepts/pr65634.C | 2 +- gcc/testsuite/g++.dg/concepts/pr65636.C | 2 +- gcc/testsuite/g++.dg/concepts/pr65681.C | 2 +- gcc/testsuite/g++.dg/concepts/pr65848.C | 2 +- gcc/testsuite/g++.dg/concepts/pr67249.C | 2 +- gcc/testsuite/g++.dg/concepts/pr67595.C | 2 +- gcc/testsuite/g++.dg/concepts/pr68434.C | 2 +- gcc/testsuite/g++.dg/concepts/pr71127.C | 2 +- gcc/testsuite/g++.dg/concepts/pr71128.C | 2 +- gcc/testsuite/g++.dg/concepts/pr71131.C | 2 +- gcc/testsuite/g++.dg/concepts/pr71385.C | 2 +- gcc/testsuite/g++.dg/concepts/pr85065.C | 2 +- gcc/testsuite/g++.dg/concepts/template-parm11.C | 2 +- gcc/testsuite/g++.dg/concepts/template-parm12.C | 2 +- gcc/testsuite/g++.dg/concepts/template-parm2.C | 2 +- gcc/testsuite/g++.dg/concepts/template-parm3.C | 2 +- gcc/testsuite/g++.dg/concepts/template-parm4.C | 2 +- .../g++.dg/concepts/template-template-parm1.C | 2 +- gcc/testsuite/g++.dg/concepts/var-concept1.C | 2 +- gcc/testsuite/g++.dg/concepts/var-concept2.C | 2 +- gcc/testsuite/g++.dg/concepts/var-concept3.C | 2 +- gcc/testsuite/g++.dg/concepts/var-concept4.C | 2 +- gcc/testsuite/g++.dg/concepts/var-concept5.C | 2 +- gcc/testsuite/g++.dg/concepts/var-concept6.C | 2 +- gcc/testsuite/g++.dg/concepts/var-concept7.C | 2 +- gcc/testsuite/g++.dg/concepts/var-templ2.C | 2 +- gcc/testsuite/g++.dg/concepts/var-templ3.C | 2 +- gcc/testsuite/g++.dg/concepts/variadic1.C | 2 +- gcc/testsuite/g++.dg/concepts/variadic2.C | 2 +- gcc/testsuite/g++.dg/concepts/variadic3.C | 2 +- gcc/testsuite/g++.dg/concepts/variadic4.C | 2 +- gcc/testsuite/g++.dg/cpp2a/concepts-pr65575.C | 2 +- gcc/testsuite/g++.dg/cpp2a/concepts-pr66091.C | 2 +- gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-2.C | 5 ++--- gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-3.C | 5 ++--- gcc/testsuite/g++.dg/cpp2a/concepts-pr84980.C | 2 +- gcc/testsuite/g++.dg/cpp2a/concepts-pr85265.C | 2 +- 88 files changed, 98 insertions(+), 102 deletions(-) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c6323a53ad2..2b29db831ae 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -3075,14 +3075,14 @@ exhaustion is signalled by throwing @code{std::bad_alloc}. See also @itemx -fconcepts-ts @opindex fconcepts @opindex fconcepts-ts -Below @option{-std=c++20}, @option{-fconcepts} enables support for the -C++ Extensions for Concepts Technical Specification, ISO 19217 (2015). +Enable support for the C++ Concepts feature for constraining template +arguments. With @option{-std=c++20} and above, Concepts are part of +the language standard, so @option{-fconcepts} defaults to on. -With @option{-std=c++20} and above, Concepts are part of the language -standard, so @option{-fconcepts} defaults to on. But the standard -specification of Concepts differs significantly from the TS, so some -constructs that were allowed in the TS but didn't make it into the -standard can still be enabled by @option{-fconcepts-ts}. +Some constructs that were allowed by the earlier C++ Extensions for +Concepts Technical Specification, ISO 19217 (2015), but didn't make it +into the standard, can additionally be enabled by +@option{-fconcepts-ts}. @item -fconstexpr-depth=@var{n} @opindex fconstexpr-depth diff --git a/gcc/c-family/c-opts.cc b/gcc/c-family/c-opts.cc index 32b929e3ece..9e0494b2a45 100644 --- a/gcc/c-family/c-opts.cc +++ b/gcc/c-family/c-opts.cc @@ -1090,9 +1090,6 @@ c_common_post_options (const char **pfilename) work with the standard. */ if (cxx_dialect >= cxx20 || flag_concepts_ts) flag_concepts = 1; - else if (flag_concepts) - /* For -std=c++17 -fconcepts, imply -fconcepts-ts. */ - flag_concepts_ts = 1; if (num_in_fnames > 1) error ("too many filenames given; type %<%s %s%> for usage", diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index fd59de491cd..9523f73d9a3 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -31450,10 +31450,11 @@ cp_parser_template_declaration_after_parameters (cp_parser* parser, else if (cxx_dialect >= cxx11 && cp_lexer_next_token_is_keyword (parser->lexer, RID_USING)) decl = cp_parser_alias_declaration (parser); - else if (cxx_dialect >= cxx20 /* Implies flag_concept. */ + else if (flag_concepts && cp_lexer_next_token_is_keyword (parser->lexer, RID_CONCEPT) - && !cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_BOOL)) - /* Allow 'concept bool' to be handled as per the TS. */ + && cp_lexer_nth_token_is (parser->lexer, 2, CPP_NAME)) + /* -fconcept-ts 'concept bool' syntax is handled below, in + cp_parser_single_declaration. */ decl = cp_parser_concept_definition (parser); else { diff --git a/gcc/testsuite/g++.dg/concepts/auto1.C b/gcc/testsuite/g++.dg/concepts/auto1.C index e05330610fc..abf7886c9f6 100644 --- a/gcc/testsuite/g++.dg/concepts/auto1.C +++ b/gcc/testsuite/g++.dg/concepts/auto1.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template class A { }; diff --git a/gcc/testsuite/g++.dg/concepts/auto3.C b/gcc/testsuite/g++.dg/concepts/auto3.C index 27a6afa4ed9..868a56cf315 100644 --- a/gcc/testsuite/g++.dg/concepts/auto3.C +++ b/gcc/testsuite/g++.dg/concepts/auto3.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template class tuple {}; diff --git a/gcc/testsuite/g++.dg/concepts/auto4.C b/gcc/testsuite/g++.dg/concepts/auto4.C index 8bf3fa9b1ce..6c984550229 100644 --- a/gcc/testsuite/g++.dg/concepts/auto4.C +++ b/gcc/testsuite/g++.dg/concepts/auto4.C @@ -1,6 +1,6 @@ // PR c++/85006 // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template struct A {}; diff --git a/gcc/testsuite/g++.dg/concepts/class-deduction1.C b/gcc/testsuite/g++.dg/concepts/class-deduction1.C index 33597007752..7f427d053b8 100644 --- a/gcc/testsuite/g++.dg/concepts/class-deduction1.C +++ b/gcc/testsuite/g++.dg/concepts/class-deduction1.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool Isint = __is_same_as(T,int); diff --git a/gcc/testsuite/g++.dg/concepts/class5.C b/gcc/testsuite/g++.dg/concepts/class5.C index ac9d7e83e9d..5f8ece96543 100644 --- a/gcc/testsuite/g++.dg/concepts/class5.C +++ b/gcc/testsuite/g++.dg/concepts/class5.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool One() { return sizeof(T) >= 4; } diff --git a/gcc/testsuite/g++.dg/concepts/class6.C b/gcc/testsuite/g++.dg/concepts/class6.C index f2345b19b04..a1c5e166e55 100644 --- a/gcc/testsuite/g++.dg/concepts/class6.C +++ b/gcc/testsuite/g++.dg/concepts/class6.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool One() { return sizeof(T) >= 4; } diff --git a/gcc/testsuite/g++.dg/concepts/debug1.C b/gcc/testsuite/g++.dg/concepts/debug1.C index b9a544486ac..fb48567249f 100644 --- a/gcc/testsuite/g++.dg/concepts/debug1.C +++ b/gcc/testsuite/g++.dg/concepts/debug1.C @@ -1,6 +1,6 @@ // PR c++/84551 // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C() { return true; } diff --git a/gcc/testsuite/g++.dg/concepts/decl-diagnose.C b/gcc/testsuite/g++.dg/concepts/decl-diagnose.C index 6a461a50366..96038fd3dfc 100644 --- a/gcc/testsuite/g++.dg/concepts/decl-diagnose.C +++ b/gcc/testsuite/g++.dg/concepts/decl-diagnose.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } typedef concept int CINT; // { dg-error "'concept' cannot appear in a typedef declaration" } diff --git a/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C b/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C index eba57713089..d510fe00f2c 100644 --- a/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C +++ b/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C @@ -1,6 +1,6 @@ // PR c++/67007 // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool A = diff --git a/gcc/testsuite/g++.dg/concepts/diagnostic1.C b/gcc/testsuite/g++.dg/concepts/diagnostic1.C index 29c78c4c730..207c36c320e 100644 --- a/gcc/testsuite/g++.dg/concepts/diagnostic1.C +++ b/gcc/testsuite/g++.dg/concepts/diagnostic1.C @@ -1,6 +1,6 @@ // PR c++/67159 // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts -fconcepts-diagnostics-depth=2" } +// { dg-options "-fconcepts-ts -fconcepts-diagnostics-depth=2" } template concept bool SameAs = __is_same_as(T, U); diff --git a/gcc/testsuite/g++.dg/concepts/dr1430.C b/gcc/testsuite/g++.dg/concepts/dr1430.C index 05c91526c20..c22a7827eba 100644 --- a/gcc/testsuite/g++.dg/concepts/dr1430.C +++ b/gcc/testsuite/g++.dg/concepts/dr1430.C @@ -1,6 +1,6 @@ // PR c++/66092 // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } #include diff --git a/gcc/testsuite/g++.dg/concepts/equiv.C b/gcc/testsuite/g++.dg/concepts/equiv.C index 640c2b5ec0d..a5d0c1864c0 100644 --- a/gcc/testsuite/g++.dg/concepts/equiv.C +++ b/gcc/testsuite/g++.dg/concepts/equiv.C @@ -1,5 +1,5 @@ // { dg-do link { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } // Check equivalence of short- and longhand declarations. diff --git a/gcc/testsuite/g++.dg/concepts/equiv2.C b/gcc/testsuite/g++.dg/concepts/equiv2.C index dff719b86a5..48a266498f9 100644 --- a/gcc/testsuite/g++.dg/concepts/equiv2.C +++ b/gcc/testsuite/g++.dg/concepts/equiv2.C @@ -1,5 +1,5 @@ // { dg-do link { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } // template diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C index ba4c48d7dcc..3da0c962888 100644 --- a/gcc/testsuite/g++.dg/concepts/expression.C +++ b/gcc/testsuite/g++.dg/concepts/expression.C @@ -1,5 +1,5 @@ // { dg-do run { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } // TODO: ICE on gimplify 16? diff --git a/gcc/testsuite/g++.dg/concepts/expression2.C b/gcc/testsuite/g++.dg/concepts/expression2.C index 4bb5bc71462..2f7aafc8b6b 100644 --- a/gcc/testsuite/g++.dg/concepts/expression2.C +++ b/gcc/testsuite/g++.dg/concepts/expression2.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C1() diff --git a/gcc/testsuite/g++.dg/concepts/expression3.C b/gcc/testsuite/g++.dg/concepts/expression3.C index 67646811284..a2d340dfaca 100644 --- a/gcc/testsuite/g++.dg/concepts/expression3.C +++ b/gcc/testsuite/g++.dg/concepts/expression3.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C() diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept1.C b/gcc/testsuite/g++.dg/concepts/fn-concept1.C index d1b4c0c59f3..4908d11d56d 100644 --- a/gcc/testsuite/g++.dg/concepts/fn-concept1.C +++ b/gcc/testsuite/g++.dg/concepts/fn-concept1.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool Tuple() { // { dg-error "multiple statements" } diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept2.C b/gcc/testsuite/g++.dg/concepts/fn-concept2.C index 899988c37a3..28765054b5c 100644 --- a/gcc/testsuite/g++.dg/concepts/fn-concept2.C +++ b/gcc/testsuite/g++.dg/concepts/fn-concept2.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept auto C1() { return 0; } // { dg-error "16:concept .concept auto C1\\(\\). declared with a deduced return type" } diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept3.C b/gcc/testsuite/g++.dg/concepts/fn-concept3.C index ecb7f6b12f7..88ed5a8e8b2 100644 --- a/gcc/testsuite/g++.dg/concepts/fn-concept3.C +++ b/gcc/testsuite/g++.dg/concepts/fn-concept3.C @@ -1,6 +1,6 @@ // PR c++/92746 // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C3() { return true; } static_assert(noexcept(C3()), "function concept should be treated as if noexcept(true) specified"); diff --git a/gcc/testsuite/g++.dg/concepts/fn1.C b/gcc/testsuite/g++.dg/concepts/fn1.C index f23c057ab6b..e22cbf70a46 100644 --- a/gcc/testsuite/g++.dg/concepts/fn1.C +++ b/gcc/testsuite/g++.dg/concepts/fn1.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/fn10.C b/gcc/testsuite/g++.dg/concepts/fn10.C index 8d0a2e1d202..83099de90a1 100644 --- a/gcc/testsuite/g++.dg/concepts/fn10.C +++ b/gcc/testsuite/g++.dg/concepts/fn10.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } // Test that constraint satisfaction checks work even when // processing template declarations. diff --git a/gcc/testsuite/g++.dg/concepts/fn2.C b/gcc/testsuite/g++.dg/concepts/fn2.C index 1c1280c9d15..e0ac36ff3dd 100644 --- a/gcc/testsuite/g++.dg/concepts/fn2.C +++ b/gcc/testsuite/g++.dg/concepts/fn2.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C index 07b8e3a89ba..3e076f62ee8 100644 --- a/gcc/testsuite/g++.dg/concepts/fn3.C +++ b/gcc/testsuite/g++.dg/concepts/fn3.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } #include diff --git a/gcc/testsuite/g++.dg/concepts/fn4.C b/gcc/testsuite/g++.dg/concepts/fn4.C index bbaac46c9ff..64186778f28 100644 --- a/gcc/testsuite/g++.dg/concepts/fn4.C +++ b/gcc/testsuite/g++.dg/concepts/fn4.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/fn5.C b/gcc/testsuite/g++.dg/concepts/fn5.C index bf277135e79..3decf4e38ee 100644 --- a/gcc/testsuite/g++.dg/concepts/fn5.C +++ b/gcc/testsuite/g++.dg/concepts/fn5.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } // Check shorthand notation. diff --git a/gcc/testsuite/g++.dg/concepts/fn6.C b/gcc/testsuite/g++.dg/concepts/fn6.C index 031e87fdf23..57c4cfbd016 100644 --- a/gcc/testsuite/g++.dg/concepts/fn6.C +++ b/gcc/testsuite/g++.dg/concepts/fn6.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } // Redefinition errors. diff --git a/gcc/testsuite/g++.dg/concepts/fn8.C b/gcc/testsuite/g++.dg/concepts/fn8.C index 32df5a556c0..594270f5178 100644 --- a/gcc/testsuite/g++.dg/concepts/fn8.C +++ b/gcc/testsuite/g++.dg/concepts/fn8.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool Class() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C index 2f5e88b945c..51edd2fc539 100644 --- a/gcc/testsuite/g++.dg/concepts/fn9.C +++ b/gcc/testsuite/g++.dg/concepts/fn9.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } #include diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn-err.C b/gcc/testsuite/g++.dg/concepts/generic-fn-err.C index 816072d8d3a..e4909eb50bf 100644 --- a/gcc/testsuite/g++.dg/concepts/generic-fn-err.C +++ b/gcc/testsuite/g++.dg/concepts/generic-fn-err.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C index 257608a57a7..983b37092f8 100644 --- a/gcc/testsuite/g++.dg/concepts/generic-fn.C +++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } #include #include diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C index b137791bbb6..98c260c89b9 100644 --- a/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C +++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C = __is_class(T); diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C index 6b7a7a43910..76308ffb212 100644 --- a/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C +++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/intro1.C b/gcc/testsuite/g++.dg/concepts/intro1.C index 5f9bb7e08f0..0dd9b646a4d 100644 --- a/gcc/testsuite/g++.dg/concepts/intro1.C +++ b/gcc/testsuite/g++.dg/concepts/intro1.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C = __is_class(T); diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C index 206777d1b94..5c6906c8d35 100644 --- a/gcc/testsuite/g++.dg/concepts/intro2.C +++ b/gcc/testsuite/g++.dg/concepts/intro2.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } #include diff --git a/gcc/testsuite/g++.dg/concepts/intro3.C b/gcc/testsuite/g++.dg/concepts/intro3.C index f02f1bea247..c92338e548d 100644 --- a/gcc/testsuite/g++.dg/concepts/intro3.C +++ b/gcc/testsuite/g++.dg/concepts/intro3.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C1 = true; diff --git a/gcc/testsuite/g++.dg/concepts/intro4.C b/gcc/testsuite/g++.dg/concepts/intro4.C index 0b275e14bf2..5ddd1628934 100644 --- a/gcc/testsuite/g++.dg/concepts/intro4.C +++ b/gcc/testsuite/g++.dg/concepts/intro4.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C1 = true; diff --git a/gcc/testsuite/g++.dg/concepts/intro5.C b/gcc/testsuite/g++.dg/concepts/intro5.C index bbfef7bed9e..cb1c5da7894 100644 --- a/gcc/testsuite/g++.dg/concepts/intro5.C +++ b/gcc/testsuite/g++.dg/concepts/intro5.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template concept bool C() diff --git a/gcc/testsuite/g++.dg/concepts/intro6.C b/gcc/testsuite/g++.dg/concepts/intro6.C index 233c5bcec7b..b718d134b2b 100644 --- a/gcc/testsuite/g++.dg/concepts/intro6.C +++ b/gcc/testsuite/g++.dg/concepts/intro6.C @@ -1,6 +1,6 @@ // PR c++/67003 // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } namespace X { template diff --git a/gcc/testsuite/g++.dg/concepts/intro7.C b/gcc/testsuite/g++.dg/concepts/intro7.C index 343fe7a9824..0c452a77b86 100644 --- a/gcc/testsuite/g++.dg/concepts/intro7.C +++ b/gcc/testsuite/g++.dg/concepts/intro7.C @@ -1,6 +1,6 @@ // PR c++/66985 // { dg-do compile { target c++17_only } } -// { dg-options "-fconcepts" } +// { dg-options "-fconcepts-ts" } template