c++: Replace "C++2a" with "C++20".
authorJason Merrill <jason@redhat.com>
Wed, 13 May 2020 19:15:13 +0000 (15:15 -0400)
committerJason Merrill <jason@redhat.com>
Wed, 13 May 2020 19:16:49 +0000 (15:16 -0400)
C++20 isn't final quite yet, but all that remains is formalities, so let's
go ahead and change all the references.

I think for the next C++ standard we can just call it C++23 rather than
C++2b, since the committee has been consistent about time-based releases
rather than feature-based.

gcc/c-family/ChangeLog
2020-05-13  Jason Merrill  <jason@redhat.com>

* c.opt (std=c++20): Make c++2a the alias.
(std=gnu++20): Likewise.
* c-common.h (cxx_dialect): Change cxx2a to cxx20.
* c-opts.c: Adjust.
* c-cppbuiltin.c: Adjust.
* c-ubsan.c: Adjust.
* c-warn.c: Adjust.

gcc/cp/ChangeLog
2020-05-13  Jason Merrill  <jason@redhat.com>

* call.c, class.c, constexpr.c, constraint.cc, decl.c, init.c,
lambda.c, lex.c, method.c, name-lookup.c, parser.c, pt.c, tree.c,
typeck2.c: Change cxx2a to cxx20.

libcpp/ChangeLog
2020-05-13  Jason Merrill  <jason@redhat.com>

* include/cpplib.h (enum c_lang): Change CXX2A to CXX20.
* init.c, lex.c: Adjust.

467 files changed:
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c-family/c-cppbuiltin.c
gcc/c-family/c-opts.c
gcc/c-family/c-ubsan.c
gcc/c-family/c-warn.c
gcc/c-family/c.opt
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/class.c
gcc/cp/constexpr.c
gcc/cp/constraint.cc
gcc/cp/decl.c
gcc/cp/init.c
gcc/cp/lambda.c
gcc/cp/lex.c
gcc/cp/method.c
gcc/cp/name-lookup.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/tree.c
gcc/cp/typeck2.c
gcc/dwarf2out.c
gcc/testsuite/g++.dg/cpp2a/aggr1.C
gcc/testsuite/g++.dg/cpp2a/array-conv11.C
gcc/testsuite/g++.dg/cpp2a/array-conv12.C
gcc/testsuite/g++.dg/cpp2a/array-conv13.C
gcc/testsuite/g++.dg/cpp2a/array-conv14.C
gcc/testsuite/g++.dg/cpp2a/array-conv15.C
gcc/testsuite/g++.dg/cpp2a/array-conv16.C
gcc/testsuite/g++.dg/cpp2a/array-conv17.C
gcc/testsuite/g++.dg/cpp2a/array-conv2.C
gcc/testsuite/g++.dg/cpp2a/array-conv3.C
gcc/testsuite/g++.dg/cpp2a/array-conv4.C
gcc/testsuite/g++.dg/cpp2a/array-conv5.C
gcc/testsuite/g++.dg/cpp2a/array-conv6.C
gcc/testsuite/g++.dg/cpp2a/array-conv7.C
gcc/testsuite/g++.dg/cpp2a/array-conv8.C
gcc/testsuite/g++.dg/cpp2a/array-conv9.C
gcc/testsuite/g++.dg/cpp2a/attr-likely1.C
gcc/testsuite/g++.dg/cpp2a/attr-likely2.C
gcc/testsuite/g++.dg/cpp2a/attr-likely3.C
gcc/testsuite/g++.dg/cpp2a/attr-likely4.C
gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr1.C
gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr2.C
gcc/testsuite/g++.dg/cpp2a/class-deduction-alias1.C
gcc/testsuite/g++.dg/cpp2a/class-deduction-alias2.C
gcc/testsuite/g++.dg/cpp2a/comma1.C
gcc/testsuite/g++.dg/cpp2a/comma2.C
gcc/testsuite/g++.dg/cpp2a/comma4.C
gcc/testsuite/g++.dg/cpp2a/comma5.C
gcc/testsuite/g++.dg/cpp2a/concepts-alias.C
gcc/testsuite/g++.dg/cpp2a/concepts-alias3.C
gcc/testsuite/g++.dg/cpp2a/concepts-alias4.C
gcc/testsuite/g++.dg/cpp2a/concepts-alias5.C
gcc/testsuite/g++.dg/cpp2a/concepts-class.C
gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C
gcc/testsuite/g++.dg/cpp2a/concepts-constrained-parm.C
gcc/testsuite/g++.dg/cpp2a/concepts-conv2.C
gcc/testsuite/g++.dg/cpp2a/concepts-decltype.C
gcc/testsuite/g++.dg/cpp2a/concepts-dr1430.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst1.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst2.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst3.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst4.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec2.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec3.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec6.C
gcc/testsuite/g++.dg/cpp2a/concepts-feature-macro.C
gcc/testsuite/g++.dg/cpp2a/concepts-fn1.C
gcc/testsuite/g++.dg/cpp2a/concepts-fn2.C
gcc/testsuite/g++.dg/cpp2a/concepts-fn3.C
gcc/testsuite/g++.dg/cpp2a/concepts-fn4.C
gcc/testsuite/g++.dg/cpp2a/concepts-friend1.C
gcc/testsuite/g++.dg/cpp2a/concepts-friend2.C
gcc/testsuite/g++.dg/cpp2a/concepts-friend4.C
gcc/testsuite/g++.dg/cpp2a/concepts-iconv1.C
gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor2.C
gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor4.C
gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor6.C
gcc/testsuite/g++.dg/cpp2a/concepts-lambda1.C
gcc/testsuite/g++.dg/cpp2a/concepts-lambda2.C
gcc/testsuite/g++.dg/cpp2a/concepts-lambda3.C
gcc/testsuite/g++.dg/cpp2a/concepts-lambda4.C
gcc/testsuite/g++.dg/cpp2a/concepts-lambda5.C
gcc/testsuite/g++.dg/cpp2a/concepts-locations1.C
gcc/testsuite/g++.dg/cpp2a/concepts-member-concept.C
gcc/testsuite/g++.dg/cpp2a/concepts-memfun-err.C
gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl1.C
gcc/testsuite/g++.dg/cpp2a/concepts-noexcept1.C
gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec4.C
gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec5.C
gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec6.C
gcc/testsuite/g++.dg/cpp2a/concepts-placeholder1.C
gcc/testsuite/g++.dg/cpp2a/concepts-placeholder2.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr65552.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr65634.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr65636.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr65848.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr65854.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr66844.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr66962.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67070.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67147.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67148.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67178.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67210.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67217.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-1.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-2.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-3.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-4.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-5.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67319.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67427.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67654.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67658.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67684.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67692.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67697.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67719.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67825.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67860.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67862.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr67969.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr68093-1.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr68093-2.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr68372.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr68434.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr68683.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr68812.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr69235.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr71368.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr71385.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr71965.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr78752.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr79759.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr80746.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr80773.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr82507.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr82740.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr84140.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr84551.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr84810.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr85808.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr86269.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr87441.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr88395.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr92078.C
gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires11.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires12.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires13.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires14.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires15.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires16.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires17.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires18.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires19.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires2.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires20.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires21.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires3.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires4.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires5.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires6.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires7.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires8.C
gcc/testsuite/g++.dg/cpp2a/concepts-requires9.C
gcc/testsuite/g++.dg/cpp2a/concepts-return-req1.C
gcc/testsuite/g++.dg/cpp2a/concepts-template-parm1.C
gcc/testsuite/g++.dg/cpp2a/concepts-template-parm10.C
gcc/testsuite/g++.dg/cpp2a/concepts-template-parm2.C
gcc/testsuite/g++.dg/cpp2a/concepts-template-parm5.C
gcc/testsuite/g++.dg/cpp2a/concepts-template-parm6.C
gcc/testsuite/g++.dg/cpp2a/concepts-template-parm8.C
gcc/testsuite/g++.dg/cpp2a/concepts-template-parm9.C
gcc/testsuite/g++.dg/cpp2a/concepts-traits2.C
gcc/testsuite/g++.dg/cpp2a/concepts-ts1.C
gcc/testsuite/g++.dg/cpp2a/concepts-ts2.C
gcc/testsuite/g++.dg/cpp2a/concepts-ts3.C
gcc/testsuite/g++.dg/cpp2a/concepts-ts4.C
gcc/testsuite/g++.dg/cpp2a/concepts-ts5.C
gcc/testsuite/g++.dg/cpp2a/concepts-ts6.C
gcc/testsuite/g++.dg/cpp2a/concepts-using1.C
gcc/testsuite/g++.dg/cpp2a/concepts.C
gcc/testsuite/g++.dg/cpp2a/concepts1.C
gcc/testsuite/g++.dg/cpp2a/concepts2.C
gcc/testsuite/g++.dg/cpp2a/concepts3.C
gcc/testsuite/g++.dg/cpp2a/concepts4.C
gcc/testsuite/g++.dg/cpp2a/concepts5.C
gcc/testsuite/g++.dg/cpp2a/concepts6.C
gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
gcc/testsuite/g++.dg/cpp2a/consteval-void1.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dtor2.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dtor3.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dtor4.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic10.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic11.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic12.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic13.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic14.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic15.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic16.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic17.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic18.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic2.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic3.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic4.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic5.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic6.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic7.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic8.C
gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic9.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init1.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init10.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init11.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init12.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init13.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init14.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init15.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init16.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init17.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init2.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init3.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init4.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init5.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init6.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init7.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init8.C
gcc/testsuite/g++.dg/cpp2a/constexpr-init9.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new1.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new10.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new11.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new12.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new13.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new2.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new3.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new4.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new5.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new6.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new7.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new8.C
gcc/testsuite/g++.dg/cpp2a/constexpr-new9.C
gcc/testsuite/g++.dg/cpp2a/constexpr-typeid1.C
gcc/testsuite/g++.dg/cpp2a/constexpr-typeid2.C
gcc/testsuite/g++.dg/cpp2a/constexpr-typeid3.C
gcc/testsuite/g++.dg/cpp2a/constexpr-union1.C
gcc/testsuite/g++.dg/cpp2a/constexpr-virtual14.C
gcc/testsuite/g++.dg/cpp2a/constexpr-virtual15.C
gcc/testsuite/g++.dg/cpp2a/constinit1.C
gcc/testsuite/g++.dg/cpp2a/constinit10.C
gcc/testsuite/g++.dg/cpp2a/constinit11.C
gcc/testsuite/g++.dg/cpp2a/constinit12.C
gcc/testsuite/g++.dg/cpp2a/constinit14.C
gcc/testsuite/g++.dg/cpp2a/constinit15.C
gcc/testsuite/g++.dg/cpp2a/constinit3.C
gcc/testsuite/g++.dg/cpp2a/constinit4.C
gcc/testsuite/g++.dg/cpp2a/constinit5.C
gcc/testsuite/g++.dg/cpp2a/constinit8.C
gcc/testsuite/g++.dg/cpp2a/constinit9.C
gcc/testsuite/g++.dg/cpp2a/desig13.C
gcc/testsuite/g++.dg/cpp2a/desig2.C
gcc/testsuite/g++.dg/cpp2a/destroying-delete1.C
gcc/testsuite/g++.dg/cpp2a/destroying-delete2.C
gcc/testsuite/g++.dg/cpp2a/destroying-delete3.C
gcc/testsuite/g++.dg/cpp2a/destroying-delete4.C
gcc/testsuite/g++.dg/cpp2a/explicit14.C
gcc/testsuite/g++.dg/cpp2a/explicit15.C
gcc/testsuite/g++.dg/cpp2a/inline-asm2.C
gcc/testsuite/g++.dg/cpp2a/inline-asm3.C
gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated9.C
gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C
gcc/testsuite/g++.dg/cpp2a/lambda-generic5.C
gcc/testsuite/g++.dg/cpp2a/lambda-generic7.C
gcc/testsuite/g++.dg/cpp2a/lambda-mangle.C
gcc/testsuite/g++.dg/cpp2a/lambda-pack-init1.C
gcc/testsuite/g++.dg/cpp2a/lambda-pack-init2.C
gcc/testsuite/g++.dg/cpp2a/lambda-pack-init4.C
gcc/testsuite/g++.dg/cpp2a/lambda-pack-init5.C
gcc/testsuite/g++.dg/cpp2a/lambda-this3.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval1.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval11.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval12.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval2.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval3.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval4.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval6.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval7.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval8.C
gcc/testsuite/g++.dg/cpp2a/lambda-uneval9.C
gcc/testsuite/g++.dg/cpp2a/multiple-deleted-destroying-delete-error-1.C
gcc/testsuite/g++.dg/cpp2a/multiple-deleted-destroying-delete-error-2.C
gcc/testsuite/g++.dg/cpp2a/nested-inline-ns2.C
gcc/testsuite/g++.dg/cpp2a/no_unique_address1.C
gcc/testsuite/g++.dg/cpp2a/nodiscard-constructor.c
gcc/testsuite/g++.dg/cpp2a/nodiscard-once.C
gcc/testsuite/g++.dg/cpp2a/nodiscard-reason-nonstring.C
gcc/testsuite/g++.dg/cpp2a/nodiscard-reason-only-one.C
gcc/testsuite/g++.dg/cpp2a/nodiscard-reason.C
gcc/testsuite/g++.dg/cpp2a/nontype-class1.C
gcc/testsuite/g++.dg/cpp2a/nontype-class10.C
gcc/testsuite/g++.dg/cpp2a/nontype-class11.C
gcc/testsuite/g++.dg/cpp2a/nontype-class12.C
gcc/testsuite/g++.dg/cpp2a/nontype-class13.C
gcc/testsuite/g++.dg/cpp2a/nontype-class14.C
gcc/testsuite/g++.dg/cpp2a/nontype-class15.C
gcc/testsuite/g++.dg/cpp2a/nontype-class16.C
gcc/testsuite/g++.dg/cpp2a/nontype-class17.C
gcc/testsuite/g++.dg/cpp2a/nontype-class18.C
gcc/testsuite/g++.dg/cpp2a/nontype-class19.C
gcc/testsuite/g++.dg/cpp2a/nontype-class2.C
gcc/testsuite/g++.dg/cpp2a/nontype-class20.C
gcc/testsuite/g++.dg/cpp2a/nontype-class21.C
gcc/testsuite/g++.dg/cpp2a/nontype-class22.C
gcc/testsuite/g++.dg/cpp2a/nontype-class23.C
gcc/testsuite/g++.dg/cpp2a/nontype-class24.C
gcc/testsuite/g++.dg/cpp2a/nontype-class25.C
gcc/testsuite/g++.dg/cpp2a/nontype-class26.C
gcc/testsuite/g++.dg/cpp2a/nontype-class27.C
gcc/testsuite/g++.dg/cpp2a/nontype-class28.C
gcc/testsuite/g++.dg/cpp2a/nontype-class29.C
gcc/testsuite/g++.dg/cpp2a/nontype-class3.C
gcc/testsuite/g++.dg/cpp2a/nontype-class30.C
gcc/testsuite/g++.dg/cpp2a/nontype-class31.C
gcc/testsuite/g++.dg/cpp2a/nontype-class32.C
gcc/testsuite/g++.dg/cpp2a/nontype-class33.C
gcc/testsuite/g++.dg/cpp2a/nontype-class34.C
gcc/testsuite/g++.dg/cpp2a/nontype-class35.C
gcc/testsuite/g++.dg/cpp2a/nontype-class36.C
gcc/testsuite/g++.dg/cpp2a/nontype-class37.C
gcc/testsuite/g++.dg/cpp2a/nontype-class4.C
gcc/testsuite/g++.dg/cpp2a/nontype-class5.C
gcc/testsuite/g++.dg/cpp2a/nontype-class6.C
gcc/testsuite/g++.dg/cpp2a/nontype-class7.C
gcc/testsuite/g++.dg/cpp2a/nontype-class8.C
gcc/testsuite/g++.dg/cpp2a/nontype-class9.C
gcc/testsuite/g++.dg/cpp2a/paren-init1.C
gcc/testsuite/g++.dg/cpp2a/paren-init10.C
gcc/testsuite/g++.dg/cpp2a/paren-init11.C
gcc/testsuite/g++.dg/cpp2a/paren-init12.C
gcc/testsuite/g++.dg/cpp2a/paren-init13.C
gcc/testsuite/g++.dg/cpp2a/paren-init15.C
gcc/testsuite/g++.dg/cpp2a/paren-init16.C
gcc/testsuite/g++.dg/cpp2a/paren-init18.C
gcc/testsuite/g++.dg/cpp2a/paren-init19.C
gcc/testsuite/g++.dg/cpp2a/paren-init2.C
gcc/testsuite/g++.dg/cpp2a/paren-init20.C
gcc/testsuite/g++.dg/cpp2a/paren-init21.C
gcc/testsuite/g++.dg/cpp2a/paren-init22.C
gcc/testsuite/g++.dg/cpp2a/paren-init23.C
gcc/testsuite/g++.dg/cpp2a/paren-init24.C
gcc/testsuite/g++.dg/cpp2a/paren-init25.C
gcc/testsuite/g++.dg/cpp2a/paren-init26.C
gcc/testsuite/g++.dg/cpp2a/paren-init3.C
gcc/testsuite/g++.dg/cpp2a/paren-init4.C
gcc/testsuite/g++.dg/cpp2a/paren-init5.C
gcc/testsuite/g++.dg/cpp2a/paren-init6.C
gcc/testsuite/g++.dg/cpp2a/paren-init7.C
gcc/testsuite/g++.dg/cpp2a/paren-init8.C
gcc/testsuite/g++.dg/cpp2a/paren-init9.C
gcc/testsuite/g++.dg/cpp2a/pr88534.C
gcc/testsuite/g++.dg/cpp2a/pr88537.C
gcc/testsuite/g++.dg/cpp2a/pr89913.C
gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr2.C
gcc/testsuite/g++.dg/cpp2a/spaceship-decltype1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq1a.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq2.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq4.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq5.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq6.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq7.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq8.C
gcc/testsuite/g++.dg/cpp2a/spaceship-eq9.C
gcc/testsuite/g++.dg/cpp2a/spaceship-err1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-err2.C
gcc/testsuite/g++.dg/cpp2a/spaceship-err3.C
gcc/testsuite/g++.dg/cpp2a/spaceship-err4.C
gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite3.C
gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite4.C
gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1-neg.C
gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1a.C
gcc/testsuite/g++.dg/cpp2a/spaceship-scalar2.C
gcc/testsuite/g++.dg/cpp2a/spaceship-scalar3.C
gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg3.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth1a.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth2.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth2a.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth2b.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth3.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth3a.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth4.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth5.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth6.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth7.C
gcc/testsuite/g++.dg/cpp2a/spaceship-synth8.C
gcc/testsuite/g++.dg/cpp2a/spaceship-vec1.C
gcc/testsuite/g++.dg/cpp2a/spaceship-weak1.C
gcc/testsuite/g++.dg/cpp2a/srcloc1.C
gcc/testsuite/g++.dg/cpp2a/srcloc10.C
gcc/testsuite/g++.dg/cpp2a/srcloc11.C
gcc/testsuite/g++.dg/cpp2a/srcloc12.C
gcc/testsuite/g++.dg/cpp2a/srcloc13.C
gcc/testsuite/g++.dg/cpp2a/srcloc14.C
gcc/testsuite/g++.dg/cpp2a/srcloc2.C
gcc/testsuite/g++.dg/cpp2a/srcloc3.C
gcc/testsuite/g++.dg/cpp2a/srcloc4.C
gcc/testsuite/g++.dg/cpp2a/srcloc5.C
gcc/testsuite/g++.dg/cpp2a/srcloc6.C
gcc/testsuite/g++.dg/cpp2a/srcloc7.C
gcc/testsuite/g++.dg/cpp2a/srcloc8.C
gcc/testsuite/g++.dg/cpp2a/srcloc9.C
gcc/testsuite/g++.dg/cpp2a/typename1.C
gcc/testsuite/g++.dg/cpp2a/typename10.C
gcc/testsuite/g++.dg/cpp2a/typename11.C
gcc/testsuite/g++.dg/cpp2a/typename12.C
gcc/testsuite/g++.dg/cpp2a/typename13.C
gcc/testsuite/g++.dg/cpp2a/typename14.C
gcc/testsuite/g++.dg/cpp2a/typename15.C
gcc/testsuite/g++.dg/cpp2a/typename16.C
gcc/testsuite/g++.dg/cpp2a/typename17.C
gcc/testsuite/g++.dg/cpp2a/typename2.C
gcc/testsuite/g++.dg/cpp2a/typename3.C
gcc/testsuite/g++.dg/cpp2a/typename4.C
gcc/testsuite/g++.dg/cpp2a/typename5.C
gcc/testsuite/g++.dg/cpp2a/typename6.C
gcc/testsuite/g++.dg/cpp2a/typename7.C
gcc/testsuite/g++.dg/cpp2a/typename8.C
gcc/testsuite/g++.dg/cpp2a/typename9.C
gcc/testsuite/g++.dg/cpp2a/ucn2.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C
gcc/testsuite/g++.dg/cpp2a/volatile1.C
gcc/testsuite/g++.dg/cpp2a/volatile2.C
gcc/testsuite/g++.dg/cpp2a/volatile4.C
libcpp/ChangeLog
libcpp/charset.c
libcpp/include/cpplib.h
libcpp/init.c
libcpp/lex.c
libcpp/macro.c

index 0be10ad7618ff67d192bb13aa2ada0b52c5766a1..7bd78c085daee49a75306256fbd842bbf703e0e6 100644 (file)
@@ -1,3 +1,13 @@
+2020-05-13  Jason Merrill  <jason@redhat.com>
+
+       * c.opt (std=c++20): Make c++2a the alias.
+       (std=gnu++20): Likewise.
+       * c-common.h (cxx_dialect): Change cxx2a to cxx20.
+       * c-opts.c: Adjust.
+       * c-cppbuiltin.c: Adjust.
+       * c-ubsan.c: Adjust.
+       * c-warn.c: Adjust.
+
 2020-05-12  Eric Botcazou  <ebotcazou@adacore.com>
 
        * c-ada-spec.c (dump_ads): Output pragma Warnings ("U"); on entry.
index d164f1e2f1ff3f314ea8ba2cb67c12ff7075470a..b1379faa412e3646a443969c0067f5c4fb23e107 100644 (file)
@@ -324,7 +324,7 @@ static bool nonnull_check_p (tree, unsigned HOST_WIDE_INT);
    ObjC is like C except that D_OBJC and D_CXX_OBJC are not set
    C++ --std=c++98: D_CONLY | D_CXX11 | D_CXX20 | D_OBJC
    C++ --std=c++11: D_CONLY | D_CXX20 | D_OBJC
-   C++ --std=c++2a: D_CONLY | D_OBJC
+   C++ --std=c++20: D_CONLY | D_OBJC
    ObjC++ is like C++ except that D_OBJC is not set
 
    If -fno-asm is used, D_ASM is added to the mask.  If
index 3e26ca034ca36fc673e285faa72b83fdc2bfacd9..7c1a6370aae575f3ba560911cfd0dbc1ac053f05 100644 (file)
@@ -720,8 +720,8 @@ enum cxx_dialect {
   cxx14,
   /* C++17 */
   cxx17,
-  /* C++2a (C++20?) */
-  cxx2a
+  /* C++20 */
+  cxx20
 };
 
 /* The C++ dialect being used. C++98 is the default.  */
index db91a36794a05a294c35b03b3a95fff67eea8926..a7d65d63934bdd77747344a6d27eecca3ad36af5 100644 (file)
@@ -988,7 +988,7 @@ c_cpp_builtins (cpp_reader *pfile)
        }
       if (cxx_dialect > cxx17)
        {
-         /* Set feature test macros for C++2a.  */
+         /* Set feature test macros for C++20.  */
          cpp_define (pfile, "__cpp_init_captures=201803L");
          cpp_define (pfile, "__cpp_generic_lambdas=201707L");
          cpp_define (pfile, "__cpp_designated_initializers=201707L");
@@ -1006,7 +1006,7 @@ c_cpp_builtins (cpp_reader *pfile)
        }
       if (flag_concepts)
         {
-          if (cxx_dialect >= cxx2a)
+         if (cxx_dialect >= cxx20)
             cpp_define (pfile, "__cpp_concepts=201907L");
           else
             cpp_define (pfile, "__cpp_concepts=201507L");
index 58ba0948e792731a93b46f7e8a8524d31db95f13..bd617d3df18eb478884d25714d699180ff85e80b 100644 (file)
@@ -112,7 +112,7 @@ static void set_std_cxx98 (int);
 static void set_std_cxx11 (int);
 static void set_std_cxx14 (int);
 static void set_std_cxx17 (int);
-static void set_std_cxx2a (int);
+static void set_std_cxx20 (int);
 static void set_std_c89 (int, int);
 static void set_std_c99 (int);
 static void set_std_c11 (int);
@@ -636,10 +636,10 @@ c_common_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value,
        set_std_cxx17 (code == OPT_std_c__17 /* ISO */);
       break;
 
-    case OPT_std_c__2a:
-    case OPT_std_gnu__2a:
+    case OPT_std_c__20:
+    case OPT_std_gnu__20:
       if (!preprocessing_asm_p)
-       set_std_cxx2a (code == OPT_std_c__2a /* ISO */);
+       set_std_cxx20 (code == OPT_std_c__20 /* ISO */);
       break;
 
     case OPT_std_c90:
@@ -925,11 +925,11 @@ c_common_post_options (const char **pfilename)
   /* -Wcomma-subscript is enabled by default in C++20.  */
   SET_OPTION_IF_UNSET (&global_options, &global_options_set,
                       warn_comma_subscript,
-                      cxx_dialect >= cxx2a && warn_deprecated);
+                      cxx_dialect >= cxx20 && warn_deprecated);
 
   /* -Wvolatile is enabled by default in C++20.  */
   SET_OPTION_IF_UNSET (&global_options, &global_options_set, warn_volatile,
-                      cxx_dialect >= cxx2a && warn_deprecated);
+                      cxx_dialect >= cxx20 && warn_deprecated);
 
   /* Declone C++ 'structors if -Os.  */
   if (flag_declone_ctor_dtor == -1)
@@ -1021,9 +1021,9 @@ c_common_post_options (const char **pfilename)
   if (flag_sized_deallocation == -1)
     flag_sized_deallocation = (cxx_dialect >= cxx14);
 
-  /* char8_t support is new in C++2A.  */
+  /* char8_t support is new in C++20.  */
   if (flag_char8_t == -1)
-    flag_char8_t = (cxx_dialect >= cxx2a);
+    flag_char8_t = (cxx_dialect >= cxx20);
 
   if (flag_extern_tls_init)
     {
@@ -1045,11 +1045,11 @@ c_common_post_options (const char **pfilename)
   if (warn_return_type == -1 && c_dialect_cxx ())
     warn_return_type = 1;
 
-  /* C++2a is the final version of concepts. We still use -fconcepts
+  /* C++20 is the final version of concepts. We still use -fconcepts
      to know when concepts are enabled. Note that -fconcepts-ts can
      be used to include additional features, although modified to
      work with the standard.  */
-  if (cxx_dialect >= cxx2a || flag_concepts_ts)
+  if (cxx_dialect >= cxx20 || flag_concepts_ts)
     flag_concepts = 1;
   else if (flag_concepts)
     /* For -std=c++17 -fconcepts, imply -fconcepts-ts.  */
@@ -1724,9 +1724,9 @@ set_std_cxx17 (int iso)
 
 /* Set the C++ 202a draft standard (without GNU extensions if ISO).  */
 static void
-set_std_cxx2a (int iso)
+set_std_cxx20 (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX2A: CLK_GNUCXX2A);
+  cpp_set_lang (parse_in, iso ? CLK_CXX20: CLK_GNUCXX20);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1734,8 +1734,8 @@ set_std_cxx2a (int iso)
   flag_isoc94 = 1;
   flag_isoc99 = 1;
   flag_isoc11 = 1;
-  /* C++2a includes concepts. */
-  cxx_dialect = cxx2a;
+  /* C++20 includes concepts. */
+  cxx_dialect = cxx20;
   lang_hooks.name = "GNU C++17"; /* Pretend C++17 until standardization.  */
 }
 
index 1d0a65b3b0386c5104c0bc9418cf66e0fa3a78e0..06a96399e64bdd45d17116f4712d38fabc1986e4 100644 (file)
@@ -137,9 +137,9 @@ ubsan_instrument_shift (location_t loc, enum tree_code code,
       || maybe_ne (GET_MODE_BITSIZE (TYPE_MODE (type0)),
                   TYPE_PRECISION (type0))
       || !sanitize_flags_p (SANITIZE_SHIFT_BASE)
-      /* In C++2a and later, shifts are well defined except when
+      /* In C++20 and later, shifts are well defined except when
         the second operand is not within bounds.  */
-      || cxx_dialect >= cxx2a)
+      || cxx_dialect >= cxx20)
     ;
 
   /* For signed x << y, in C99/C11, the following:
index f6b3afc727c2e6c2ccc8cd9ebd453f7b74b04550..c32d8228b5c999621591aa04f83f6c369706b3dd 100644 (file)
@@ -2562,7 +2562,7 @@ diagnose_mismatched_attributes (tree olddecl, tree newdecl)
 /* Warn if signed left shift overflows.  We don't warn
    about left-shifting 1 into the sign bit in C++14; cf.
    <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3367.html#1457>
-   and don't warn for C++2a at all, as signed left shifts never
+   and don't warn for C++20 at all, as signed left shifts never
    overflow.
    LOC is a location of the shift; OP0 and OP1 are the operands.
    Return true if an overflow is detected, false otherwise.  */
@@ -2578,7 +2578,7 @@ maybe_warn_shift_overflow (location_t loc, tree op0, tree op1)
   unsigned int prec0 = TYPE_PRECISION (type0);
 
   /* Left-hand operand must be signed.  */
-  if (TYPE_UNSIGNED (type0) || cxx_dialect >= cxx2a)
+  if (TYPE_UNSIGNED (type0) || cxx_dialect >= cxx20)
     return false;
 
   unsigned int min_prec = (wi::min_precision (wi::to_wide (op0), SIGNED)
index c49da99d3957b7447f78c5d460c8427653887b80..89a58282b3f5bce73fa97c432252939fd63e5ed6 100644 (file)
@@ -2074,11 +2074,11 @@ C++ ObjC++
 Conform to the ISO 2017 C++ standard.
 
 std=c++2a
-C++ ObjC++
+C++ ObjC++ Alias(std=c++20) Undocumented
 Conform to the ISO 2020 C++ draft standard (experimental and incomplete support).
 
 std=c++20
-C++ ObjC++ Alias(std=c++2a)
+C++ ObjC++
 Conform to the ISO 2020 C++ draft standard (experimental and incomplete support).
 
 std=c11
@@ -2152,11 +2152,11 @@ C++ ObjC++
 Conform to the ISO 2017 C++ standard with GNU extensions.
 
 std=gnu++2a
-C++ ObjC++
+C++ ObjC++ Alias(std=gnu++20)
 Conform to the ISO 2020 C++ draft standard with GNU extensions (experimental and incomplete support).
 
 std=gnu++20
-C++ ObjC++ Alias(std=gnu++2a)
+C++ ObjC++
 Conform to the ISO 2020 C++ draft standard with GNU extensions (experimental and incomplete support).
 
 std=gnu11
index 7515827d7aea15bdbe89f429d542d18730f3a04f..11b3fdc0bc72de7483b2f04134458b2048283ab3 100644 (file)
@@ -1,3 +1,9 @@
+2020-05-13  Jason Merrill  <jason@redhat.com>
+
+       * call.c, class.c, constexpr.c, constraint.cc, decl.c, init.c,
+       lambda.c, lex.c, method.c, name-lookup.c, parser.c, pt.c, tree.c,
+       typeck2.c: Change cxx2a to cxx20.
+
 2020-05-12  Marek Polacek  <polacek@redhat.com>
 
        PR c++/95074
index 85d670f52f90ad6b9cb64f7e04b9bff3bf19fcc9..940e65da6319dfbda70a115ea6c2a0b32edcfb49 100644 (file)
@@ -6041,7 +6041,7 @@ add_operator_candidates (z_candidate **candidates,
 
       /* Maybe add C++20 rewritten comparison candidates.  */
       tree_code rewrite_code = ERROR_MARK;
-      if (cxx_dialect >= cxx2a
+      if (cxx_dialect >= cxx20
          && nargs == 2
          && (OVERLOAD_TYPE_P (arg1_type) || OVERLOAD_TYPE_P (arg2_type)))
        switch (code)
@@ -6599,7 +6599,7 @@ extract_call_expr (tree call)
     call = TREE_OPERAND (call, 0);
   if (TREE_CODE (call) == TARGET_EXPR)
     call = TARGET_EXPR_INITIAL (call);
-  if (cxx_dialect >= cxx2a)
+  if (cxx_dialect >= cxx20)
     switch (TREE_CODE (call))
       {
        /* C++20 rewritten comparison operators.  */
@@ -7280,7 +7280,7 @@ maybe_inform_about_fndecl_for_bogus_argument_init (tree fn, int argnum)
 static void
 maybe_warn_array_conv (location_t loc, conversion *c, tree expr)
 {
-  if (cxx_dialect >= cxx2a)
+  if (cxx_dialect >= cxx20)
     return;
 
   tree type = TREE_TYPE (expr);
@@ -7292,7 +7292,7 @@ maybe_warn_array_conv (location_t loc, conversion *c, tree expr)
 
   if (conv_binds_to_array_of_unknown_bound (c))
     pedwarn (loc, OPT_Wpedantic, "conversions to arrays of unknown bound "
-            "are only available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+            "are only available with %<-std=c++20%> or %<-std=gnu++20%>");
 }
 
 /* Perform the conversions in CONVS on the expression EXPR.  FN and
@@ -10251,7 +10251,7 @@ build_new_method_call_1 (tree instance, tree fns, vec<tree, va_gc> **args,
         the two.  */
       if (DECL_CONSTRUCTOR_P (fn)
          && !(flags & LOOKUP_ONLYCONVERTING)
-         && cxx_dialect >= cxx2a
+         && cxx_dialect >= cxx20
          && CP_AGGREGATE_TYPE_P (basetype)
          && !user_args->is_empty ())
        {
index b66b8d4725d8b90ba52dee585549d3ca7d825d32..15f490da3fca0b3b5434051751adfde527207ea8 100644 (file)
@@ -5314,7 +5314,7 @@ trivial_default_constructor_is_constexpr (tree t)
        struct S { int i; constexpr S() = default; };
 
      should work.  */
-  return (cxx_dialect >= cxx2a
+  return (cxx_dialect >= cxx20
          || is_really_empty_class (t, /*ignore_vptr*/true));
 }
 
@@ -5691,7 +5691,7 @@ finalize_literal_type_property (tree t)
     CLASSTYPE_LITERAL_P (t) = false;
   else if (CLASSTYPE_LITERAL_P (t)
           && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t)
-          && (cxx_dialect < cxx2a || !type_maybe_constexpr_destructor (t)))
+          && (cxx_dialect < cxx20 || !type_maybe_constexpr_destructor (t)))
     CLASSTYPE_LITERAL_P (t) = false;
   else if (CLASSTYPE_LITERAL_P (t) && LAMBDA_TYPE_P (t))
     CLASSTYPE_LITERAL_P (t) = (cxx_dialect >= cxx17);
@@ -5745,7 +5745,7 @@ explain_non_literal_class (tree t)
     inform (UNKNOWN_LOCATION,
            "  %qT is a closure type, which is only literal in "
            "C++17 and later", t);
-  else if (cxx_dialect < cxx2a && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t))
+  else if (cxx_dialect < cxx20 && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t))
     inform (UNKNOWN_LOCATION, "  %q+T has a non-trivial destructor", t);
   else if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t)
           && !type_maybe_constexpr_destructor (t))
@@ -5893,7 +5893,7 @@ check_bases_and_members (tree t)
      Again, other conditions for being an aggregate are checked
      elsewhere.  */
   CLASSTYPE_NON_AGGREGATE (t)
-    |= ((cxx_dialect < cxx2a
+    |= ((cxx_dialect < cxx20
         ? type_has_user_provided_or_explicit_constructor (t)
         : TYPE_HAS_USER_CONSTRUCTOR (t))
        || TYPE_POLYMORPHIC_P (t));
@@ -7499,7 +7499,7 @@ finish_struct (tree t, tree attributes)
       /* Remember current #pragma pack value.  */
       TYPE_PRECISION (t) = maximum_field_alignment;
 
-      if (cxx_dialect < cxx2a)
+      if (cxx_dialect < cxx20)
        {
          if (!CLASSTYPE_NON_AGGREGATE (t)
              && type_has_user_provided_or_explicit_constructor (t))
index 706d8a13d8ef4879d5ee58db315b7b8c9236e6e1..04faabc02583328caa944ccd495c5998c6f58533 100644 (file)
@@ -768,7 +768,7 @@ static bool
 cx_check_missing_mem_inits (tree ctype, tree body, bool complain)
 {
   /* We allow uninitialized bases/fields in C++20.  */
-  if (cxx_dialect >= cxx2a)
+  if (cxx_dialect >= cxx20)
     return false;
 
   unsigned nelts = 0;
@@ -1723,7 +1723,7 @@ modifying_const_object_error (tree expr, tree obj)
 static inline bool
 cxx_replaceable_global_alloc_fn (tree fndecl)
 {
-  return (cxx_dialect >= cxx2a
+  return (cxx_dialect >= cxx20
          && IDENTIFIER_NEWDEL_OP_P (DECL_NAME (fndecl))
          && CP_DECL_CONTEXT (fndecl) == global_namespace
          && (DECL_IS_REPLACEABLE_OPERATOR_NEW_P (fndecl)
@@ -1736,7 +1736,7 @@ cxx_replaceable_global_alloc_fn (tree fndecl)
 static inline bool
 cxx_placement_new_fn (tree fndecl)
 {
-  if (cxx_dialect >= cxx2a
+  if (cxx_dialect >= cxx20
       && IDENTIFIER_NEW_OP_P (DECL_NAME (fndecl))
       && CP_DECL_CONTEXT (fndecl) == global_namespace
       && !DECL_IS_REPLACEABLE_OPERATOR_NEW_P (fndecl)
@@ -1789,7 +1789,7 @@ is_std_allocator_allocate (tree fndecl)
 static inline bool
 cxx_dynamic_cast_fn_p (tree fndecl)
 {
-  return (cxx_dialect >= cxx2a
+  return (cxx_dialect >= cxx20
          && id_equal (DECL_NAME (fndecl), "__dynamic_cast")
          && CP_DECL_CONTEXT (fndecl) == global_namespace);
 }
@@ -2628,7 +2628,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
      of value-initializing it.  (reduced_constant_expression_p is expected to
      take care of clearing the flag.)  */
   if (TREE_CODE (result) == CONSTRUCTOR
-      && (cxx_dialect < cxx2a
+      && (cxx_dialect < cxx20
          || !DECL_CONSTRUCTOR_P (fun)))
     clear_no_implicit_zero (result);
 
@@ -2661,11 +2661,11 @@ reduced_constant_expression_p (tree t)
          if (TREE_CODE (TREE_TYPE (t)) == VECTOR_TYPE)
            /* An initialized vector would have a VECTOR_CST.  */
            return false;
-         else if (cxx_dialect >= cxx2a
+         else if (cxx_dialect >= cxx20
                   /* An ARRAY_TYPE doesn't have any TYPE_FIELDS.  */
                   && TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
            field = NULL_TREE;
-         else if (cxx_dialect >= cxx2a
+         else if (cxx_dialect >= cxx20
                   && TREE_CODE (TREE_TYPE (t)) == UNION_TYPE)
            {
              if (CONSTRUCTOR_NELTS (t) == 0)
@@ -2784,13 +2784,13 @@ cxx_eval_check_shift_p (location_t loc, const constexpr_ctx *ctx,
      representable in the corresponding unsigned type of the result type,
      then that value, converted to the result type, is the resulting value;
      otherwise, the behavior is undefined.
-     For C++2a:
+     For C++20:
      The value of E1 << E2 is the unique value congruent to E1 x 2^E2 modulo
      2^N, where N is the range exponent of the type of the result.  */
   if (code == LSHIFT_EXPR
       && !TYPE_UNSIGNED (lhstype)
       && cxx_dialect >= cxx11
-      && cxx_dialect < cxx2a)
+      && cxx_dialect < cxx20)
     {
       if (tree_int_cst_sgn (lhs) == -1)
        {
@@ -4803,7 +4803,7 @@ cxx_eval_store_expression (const constexpr_ctx *ctx, tree t,
       if (code == UNION_TYPE && CONSTRUCTOR_NELTS (*valp)
          && CONSTRUCTOR_ELT (*valp, 0)->index != index)
        {
-         if (cxx_dialect < cxx2a)
+         if (cxx_dialect < cxx20)
            {
              if (!ctx->quiet)
                error_at (cp_expr_loc_or_input_loc (t),
@@ -5422,7 +5422,7 @@ inline_asm_in_constexpr_error (location_t loc)
   auto_diagnostic_group d;
   error_at (loc, "inline assembly is not a constant expression");
   inform (loc, "only unevaluated inline assembly is allowed in a "
-         "%<constexpr%> function in C++2a");
+         "%<constexpr%> function in C++20");
 }
 
 /* Attempt to reduce the expression T to a constant value.
@@ -6582,7 +6582,7 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant,
        type = TREE_TYPE (object);
       else
        {
-         if (cxx_dialect < cxx2a)
+         if (cxx_dialect < cxx20)
            return t;
          if (TREE_CODE (t) != CALL_EXPR && TREE_CODE (t) != AGGR_INIT_EXPR)
            return t;
@@ -6595,7 +6595,7 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant,
            is_consteval = true;
        }
     }
-  else if (cxx_dialect >= cxx2a
+  else if (cxx_dialect >= cxx20
           && (TREE_CODE (t) == CALL_EXPR
               || TREE_CODE (t) == AGGR_INIT_EXPR
               || TREE_CODE (t) == TARGET_EXPR))
@@ -7422,7 +7422,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now,
                    /* Allow any built-in function; if the expansion
                       isn't constant, we'll deal with that then.  */
                    && !fndecl_built_in_p (fun)
-                   /* In C++2a, replaceable global allocation functions
+                   /* In C++20, replaceable global allocation functions
                       are constant expressions.  */
                    && (!cxx_replaceable_global_alloc_fn (fun)
                        || TREE_CODE (t) != CALL_EXPR
@@ -7844,12 +7844,12 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now,
       return false;
 
     case OBJ_TYPE_REF:
-      if (cxx_dialect >= cxx2a)
-       /* In C++2a virtual calls can be constexpr, don't give up yet.  */
+      if (cxx_dialect >= cxx20)
+       /* In C++20 virtual calls can be constexpr, don't give up yet.  */
        return true;
       else if (flags & tf_error)
        error_at (loc,
-                 "virtual functions cannot be %<constexpr%> before C++2a");
+                 "virtual functions cannot be %<constexpr%> before C++20");
       return false;
 
     case TYPEID_EXPR:
@@ -7857,7 +7857,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now,
         class type can be constexpr.  */
       {
         tree e = TREE_OPERAND (t, 0);
-       if (cxx_dialect < cxx2a
+       if (cxx_dialect < cxx20
            && strict
            && !TYPE_P (e)
            && !type_dependent_expression_p (e)
@@ -8153,7 +8153,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now,
      return true;
 
     case COND_EXPR:
-      if (COND_EXPR_IS_VEC_DELETE (t) && cxx_dialect < cxx2a)
+      if (COND_EXPR_IS_VEC_DELETE (t) && cxx_dialect < cxx20)
        {
          if (flags & tf_error)
            error_at (loc, "%<delete[]%> is not a constant expression");
index 4ad17f3b7d8cbb93762ed053fde6e9fc7777c097..3a17005232e5ed84d1c1ec92651f9369040b6bfa 100644 (file)
@@ -1473,7 +1473,7 @@ finish_shorthand_constraint (tree decl, tree constr)
      The standard behavior cannot be overridden by -fconcepts-ts.  */
   bool variadic_concept_p = template_parameter_pack_p (proto);
   bool declared_pack_p = template_parameter_pack_p (decl);
-  bool apply_to_each_p = (cxx_dialect >= cxx2a) ? true : !variadic_concept_p;
+  bool apply_to_each_p = (cxx_dialect >= cxx20) ? true : !variadic_concept_p;
 
   /* Get the argument and overload used for the requirement
      and adjust it if we're going to expand later.  */
index 1b6a5672334787a2c8b991762fd1954219516522..37ab48184864c9aeb3e45c588e7837f511ffdce3 100644 (file)
@@ -928,7 +928,7 @@ static bool
 function_requirements_equivalent_p (tree newfn, tree oldfn)
 {
   /* In the concepts TS, the combined constraints are compared.  */
-  if (cxx_dialect < cxx2a)
+  if (cxx_dialect < cxx20)
     {
       tree ci1 = get_constraints (oldfn);
       tree ci2 = get_constraints (newfn);
@@ -5570,7 +5570,7 @@ grok_reference_init (tree decl, tree type, tree init, int flags)
       if (TREE_TYPE (init) == NULL_TREE
          && CP_AGGREGATE_TYPE_P (ttype)
          && !DECL_DECOMPOSITION_P (decl)
-         && (cxx_dialect >= cxx2a))
+         && (cxx_dialect >= cxx20))
        {
          /* We don't know yet if we should treat const A& r(1) as
             const A& r{1}.  */
@@ -5896,7 +5896,7 @@ check_for_uninitialized_const_var (tree decl, bool constexpr_context_p,
       && (CP_TYPE_CONST_P (type)
          /* C++20 permits trivial default initialization in constexpr
             context (P1331R2).  */
-         || (cxx_dialect < cxx2a
+         || (cxx_dialect < cxx20
              && (constexpr_context_p
                  || var_in_constexpr_fn (decl))))
       && !DECL_NONTRIVIALLY_INITIALIZED_P (decl))
@@ -5907,7 +5907,7 @@ check_for_uninitialized_const_var (tree decl, bool constexpr_context_p,
 
       bool show_notes = true;
 
-      if (!constexpr_context_p || cxx_dialect >= cxx2a)
+      if (!constexpr_context_p || cxx_dialect >= cxx20)
        {
          if (CP_TYPE_CONST_P (type))
            {
@@ -6721,7 +6721,7 @@ check_initializer (tree decl, tree init, int flags, vec<tree, va_gc> **cleanups)
               && TREE_TYPE (init) == NULL_TREE
               && TREE_CODE (type) == ARRAY_TYPE
               && !DECL_DECOMPOSITION_P (decl)
-              && (cxx_dialect >= cxx2a))
+              && (cxx_dialect >= cxx20))
        {
          /* [dcl.init.string] "An array of ordinary character type [...]
             can be initialized by an ordinary string literal [...] by an
@@ -7186,14 +7186,14 @@ notice_forced_label_r (tree *tp, int *walk_subtrees, void *)
   return NULL_TREE;
 }
 
-/* Return true if DECL has either a trivial destructor, or for C++2A
+/* Return true if DECL has either a trivial destructor, or for C++20
    is constexpr and has a constexpr destructor.  */
 
 static bool
 decl_maybe_constant_destruction (tree decl, tree type)
 {
   return (TYPE_HAS_TRIVIAL_DESTRUCTOR (type)
-         || (cxx_dialect >= cxx2a
+         || (cxx_dialect >= cxx20
              && VAR_P (decl)
              && DECL_DECLARED_CONSTEXPR_P (decl)
              && type_has_constexpr_destructor (strip_array_types (type))));
@@ -7253,7 +7253,7 @@ omp_declare_variant_finalize_one (tree decl, tree attr)
   if (idk == CP_ID_KIND_UNQUALIFIED || idk == CP_ID_KIND_TEMPLATE_ID)
     {
       if (identifier_p (variant)
-         /* In C++2A, we may need to perform ADL for a template
+         /* In C++20, we may need to perform ADL for a template
             name.  */
          || (TREE_CODE (variant) == TEMPLATE_ID_EXPR
              && identifier_p (TREE_OPERAND (variant, 0))))
@@ -11648,13 +11648,13 @@ grokdeclarator (const cp_declarator *declarator,
          storage_class = sc_none;
          staticp = 0;
        }
-      if (constexpr_p && cxx_dialect < cxx2a)
+      if (constexpr_p && cxx_dialect < cxx20)
        {
          gcc_rich_location richloc (declspecs->locations[ds_virtual]);
          richloc.add_range (declspecs->locations[ds_constexpr]);
          pedwarn (&richloc, OPT_Wpedantic, "member %qD can be declared both "
-                  "%<virtual%> and %<constexpr%> only in %<-std=c++2a%> or "
-                  "%<-std=gnu++2a%>", dname);
+                  "%<virtual%> and %<constexpr%> only in %<-std=c++20%> or "
+                  "%<-std=gnu++20%>", dname);
        }
     }
   friendp = decl_spec_seq_has_spec_p (declspecs, ds_friend);
@@ -11741,10 +11741,10 @@ grokdeclarator (const cp_declarator *declarator,
       if (consteval_p)
        error_at (declspecs->locations[ds_consteval], "structured "
                  "binding declaration cannot be %qs", "consteval");
-      if (thread_p && cxx_dialect < cxx2a)
+      if (thread_p && cxx_dialect < cxx20)
        pedwarn (declspecs->locations[ds_thread], 0,
                 "structured binding declaration can be %qs only in "
-                "%<-std=c++2a%> or %<-std=gnu++2a%>",
+                "%<-std=c++20%> or %<-std=gnu++20%>",
                 declspecs->gnu_thread_keyword_p
                 ? "__thread" : "thread_local");
       if (concept_p)
@@ -11763,10 +11763,10 @@ grokdeclarator (const cp_declarator *declarator,
                    "register");
          break;
        case sc_static:
-         if (cxx_dialect < cxx2a)
+         if (cxx_dialect < cxx20)
            pedwarn (loc, 0,
                     "structured binding declaration can be %qs only in "
-                    "%<-std=c++2a%> or %<-std=gnu++2a%>", "static");
+                    "%<-std=c++20%> or %<-std=gnu++20%>", "static");
          break;
        case sc_extern:
          error_at (loc, "structured binding declaration cannot be %qs",
@@ -13206,11 +13206,11 @@ grokdeclarator (const cp_declarator *declarator,
                              "a destructor cannot be %qs", "concept");
                     return error_mark_node;
                   }
-               if (constexpr_p && cxx_dialect < cxx2a)
+               if (constexpr_p && cxx_dialect < cxx20)
                  {
                    error_at (declspecs->locations[ds_constexpr],
                              "%<constexpr%> destructors only available"
-                             " with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                             " with %<-std=c++20%> or %<-std=gnu++20%>");
                    return error_mark_node;
                  }
                if (consteval_p)
index e2e547afd963726d49b48805b4730654fb885e7e..56715d6be977897fce43e8ffae9c9e563d0400fa 100644 (file)
@@ -812,7 +812,7 @@ perform_member_init (tree member, tree init)
   if (init && TREE_CODE (init) == TREE_LIST
       && (DIRECT_LIST_INIT_P (TREE_VALUE (init))
          /* FIXME C++20 parenthesized aggregate init (PR 92812).  */
-         || !(/* cxx_dialect >= cxx2a ? CP_AGGREGATE_TYPE_P (type) */
+         || !(/* cxx_dialect >= cxx20 ? CP_AGGREGATE_TYPE_P (type) */
               /* :  */CLASS_TYPE_P (type))))
     init = build_x_compound_expr_from_list (init, ELK_MEM_INIT,
                                            tf_warning_or_error);
@@ -2909,7 +2909,7 @@ build_new_constexpr_heap_type (tree elt_type, tree cookie_size, tree full_size)
 static tree
 maybe_wrap_new_for_constexpr (tree alloc_call, tree elt_type, tree cookie_size)
 {
-  if (cxx_dialect < cxx2a)
+  if (cxx_dialect < cxx20)
     return alloc_call;
 
   if (current_function_decl != NULL_TREE
@@ -3611,7 +3611,7 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts,
                 means allocate an int, and initialize it with 10.
 
                 In C++20, also handle `new A(1, 2)'.  */
-             if (cxx_dialect >= cxx2a
+             if (cxx_dialect >= cxx20
                  && AGGREGATE_TYPE_P (type)
                  && (*init)->length () > 1)
                {
index b55c2f85d27eafa9b64d7db494dc847e60d4041b..c94fe8edb8e21e070677df1b781c42ddc53ef39f 100644 (file)
@@ -702,7 +702,7 @@ add_default_capture (tree lambda_stack, tree id, tree initializer)
       initializer = convert_from_reference (var);
 
       /* Warn about deprecated implicit capture of this via [=].  */
-      if (cxx_dialect >= cxx2a
+      if (cxx_dialect >= cxx20
          && this_capture_p
          && LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (lambda) == CPLD_COPY)
        {
index 37282d56973495901c58acd08b00d95fc5069cc7..8a69bc4f170d205232f1cfe0a46c68c0a6c71373 100644 (file)
@@ -229,7 +229,7 @@ init_reswords (void)
 
   if (cxx_dialect < cxx11)
     mask |= D_CXX11;
-  if (cxx_dialect < cxx2a)
+  if (cxx_dialect < cxx20)
     mask |= D_CXX20;
   if (!flag_concepts)
     mask |= D_CXX_CONCEPTS;
index 47f96aa845ec357ef0ddf168f8ea15072d57e1e1..3f8842bf49482a954b708f4929603eddb40df499 100644 (file)
@@ -1095,10 +1095,10 @@ early_check_defaulted_comparison (tree fn)
     ctx = DECL_FRIEND_CONTEXT (fn);
   bool ok = true;
 
-  if (cxx_dialect < cxx2a)
+  if (cxx_dialect < cxx20)
     {
-      error_at (loc, "defaulted %qD only available with %<-std=c++2a%> or "
-                    "%<-std=gnu++2a%>", fn);
+      error_at (loc, "defaulted %qD only available with %<-std=c++20%> or "
+                    "%<-std=gnu++20%>", fn);
       return false;
     }
 
@@ -1802,7 +1802,7 @@ constructible_expr (tree to, tree from)
       const int len = list_length (from);
       if (len > 1)
        {
-         if (cxx_dialect < cxx2a)
+         if (cxx_dialect < cxx20)
            /* Too many initializers.  */
            return error_mark_node;
 
@@ -1831,7 +1831,7 @@ constructible_expr (tree to, tree from)
       /* If t(e) didn't work, maybe t{e} will.  */
       if (expr == NULL_TREE
          && len == 1
-         && cxx_dialect >= cxx2a)
+         && cxx_dialect >= cxx20)
        {
          from = build_constructor_single (init_list_type_node, NULL_TREE,
                                           from);
@@ -2074,7 +2074,7 @@ walk_field_subobs (tree fields, special_function_kind sfk, tree fnname,
             be constexpr, every member must have a user-provided default
             constructor or an explicit initializer.  */
          if (constexpr_p
-             && cxx_dialect < cxx2a
+             && cxx_dialect < cxx20
              && !CLASS_TYPE_P (mem_type)
              && TREE_CODE (DECL_CONTEXT (field)) != UNION_TYPE)
            {
@@ -2226,11 +2226,11 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
       /* "The closure type associated with a lambda-expression has a deleted
         default constructor and a deleted copy assignment operator."
         This is diagnosed in maybe_explain_implicit_delete.
-        In C++2a, only lambda-expressions with lambda-captures have those
+        In C++20, only lambda-expressions with lambda-captures have those
         deleted.  */
       if (LAMBDA_TYPE_P (ctype)
          && (sfk == sfk_constructor || sfk == sfk_copy_assignment)
-         && (cxx_dialect < cxx2a
+         && (cxx_dialect < cxx20
              || LAMBDA_EXPR_CAPTURE_LIST (CLASSTYPE_LAMBDA_EXPR (ctype))
              || LAMBDA_EXPR_DEFAULT_CAPTURE_MODE
                                (CLASSTYPE_LAMBDA_EXPR (ctype)) != CPLD_NONE))
@@ -2274,7 +2274,7 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
   if (constexpr_p)
     *constexpr_p = (SFK_CTOR_P (sfk)
                    || (SFK_ASSIGN_P (sfk) && cxx_dialect >= cxx14)
-                   || (SFK_DTOR_P (sfk) && cxx_dialect >= cxx2a));
+                   || (SFK_DTOR_P (sfk) && cxx_dialect >= cxx20));
 
   bool expected_trivial = type_has_trivial_fn (ctype, sfk);
   if (trivial_p)
index 9b68b15be602a0666ce29c7c6af468997c60536b..4928b60758916b9956c7b8993f1d8fefd6579e65 100644 (file)
@@ -5635,19 +5635,19 @@ get_std_name_hint (const char *name)
     {"make_any", "<any>", cxx17},
     /* <array>.  */
     {"array", "<array>", cxx11},
-    {"to_array", "<array>", cxx2a},
+    {"to_array", "<array>", cxx20},
     /* <atomic>.  */
     {"atomic", "<atomic>", cxx11},
     {"atomic_flag", "<atomic>", cxx11},
-    {"atomic_ref", "<atomic>", cxx2a},
+    {"atomic_ref", "<atomic>", cxx20},
     /* <bitset>.  */
     {"bitset", "<bitset>", cxx11},
     /* <compare> */
-    {"weak_equality", "<compare>", cxx2a},
-    {"strong_equality", "<compare>", cxx2a},
-    {"partial_ordering", "<compare>", cxx2a},
-    {"weak_ordering", "<compare>", cxx2a},
-    {"strong_ordering", "<compare>", cxx2a},
+    {"weak_equality", "<compare>", cxx20},
+    {"strong_equality", "<compare>", cxx20},
+    {"partial_ordering", "<compare>", cxx20},
+    {"weak_ordering", "<compare>", cxx20},
+    {"strong_ordering", "<compare>", cxx20},
     /* <complex>.  */
     {"complex", "<complex>", cxx98},
     {"complex_literals", "<complex>", cxx14},
@@ -5670,17 +5670,17 @@ get_std_name_hint (const char *name)
     {"ofstream", "<fstream>", cxx98},
     /* <functional>.  */
     {"bind", "<functional>", cxx11},
-    {"bind_front", "<functional>", cxx2a},
+    {"bind_front", "<functional>", cxx20},
     {"function", "<functional>", cxx11},
     {"hash", "<functional>", cxx11},
     {"invoke", "<functional>", cxx17},
     {"mem_fn", "<functional>", cxx11},
     {"not_fn", "<functional>", cxx17},
     {"reference_wrapper", "<functional>", cxx11},
-    {"unwrap_reference", "<functional>", cxx2a},
-    {"unwrap_reference_t", "<functional>", cxx2a},
-    {"unwrap_ref_decay", "<functional>", cxx2a},
-    {"unwrap_ref_decay_t", "<functional>", cxx2a},
+    {"unwrap_reference", "<functional>", cxx20},
+    {"unwrap_reference_t", "<functional>", cxx20},
+    {"unwrap_ref_decay", "<functional>", cxx20},
+    {"unwrap_ref_decay_t", "<functional>", cxx20},
     /* <future>. */
     {"async", "<future>", cxx11},
     {"future", "<future>", cxx11},
@@ -5763,7 +5763,7 @@ get_std_name_hint (const char *name)
     {"shared_mutex", "<shared_mutex>", cxx17},
     {"shared_timed_mutex", "<shared_mutex>", cxx14},
     /* <source_location>.  */
-    {"source_location", "<source_location>", cxx2a},
+    {"source_location", "<source_location>", cxx20},
     /* <sstream>.  */
     {"basic_stringbuf", "<sstream>", cxx98},
     {"basic_istringstream", "<sstream>", cxx98},
@@ -5778,7 +5778,7 @@ get_std_name_hint (const char *name)
     {"basic_string", "<string>", cxx98},
     {"string", "<string>", cxx98},
     {"wstring", "<string>", cxx98},
-    {"u8string", "<string>", cxx2a},
+    {"u8string", "<string>", cxx20},
     {"u16string", "<string>", cxx11},
     {"u32string", "<string>", cxx11},
     /* <string_view>.  */
@@ -5804,10 +5804,10 @@ get_std_name_hint (const char *name)
     {"enable_if_t", "<type_traits>", cxx14},
     {"invoke_result", "<type_traits>", cxx17},
     {"invoke_result_t", "<type_traits>", cxx17},
-    {"remove_cvref", "<type_traits>", cxx2a},
-    {"remove_cvref_t", "<type_traits>", cxx2a},
-    {"type_identity", "<type_traits>", cxx2a},
-    {"type_identity_t", "<type_traits>", cxx2a},
+    {"remove_cvref", "<type_traits>", cxx20},
+    {"remove_cvref_t", "<type_traits>", cxx20},
+    {"type_identity", "<type_traits>", cxx20},
+    {"type_identity_t", "<type_traits>", cxx20},
     {"void_t", "<type_traits>", cxx17},
     {"conjunction", "<type_traits>", cxx17},
     {"conjunction_v", "<type_traits>", cxx17},
@@ -5859,8 +5859,8 @@ get_cxx_dialect_name (enum cxx_dialect dialect)
       return "C++14";
     case cxx17:
       return "C++17";
-    case cxx2a:
-      return "C++2a";
+    case cxx20:
+      return "C++20";
     }
 }
 
index f1ddef220fec8dc9de60a841a0b69eeeddec7d08..bc1ee21e8ce96f66bbb5ea01c1289864deece515 100644 (file)
@@ -1809,7 +1809,7 @@ enum
      constexpr.  */
   CP_PARSER_FLAGS_ONLY_TYPE_OR_CONSTEXPR = 0x8,
   /* When parsing a decl-specifier-seq, only allow mutable, constexpr or
-     for C++2A consteval.  */
+     for C++20 consteval.  */
   CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR = 0x10,
   /* When parsing a decl-specifier-seq, allow missing typename.  */
   CP_PARSER_FLAGS_TYPENAME_OPTIONAL = 0x20,
@@ -3369,11 +3369,11 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree id,
               && id_equal (id, "thread_local"))
        inform (location, "C++11 %<thread_local%> only available with "
                "%<-std=c++11%> or %<-std=gnu++11%>");
-      else if (cxx_dialect < cxx2a && id == ridpointers[(int)RID_CONSTINIT])
+      else if (cxx_dialect < cxx20 && id == ridpointers[(int)RID_CONSTINIT])
        inform (location, "C++20 %<constinit%> only available with "
-               "%<-std=c++2a%> or %<-std=gnu++2a%>");
+               "%<-std=c++20%> or %<-std=gnu++20%>");
       else if (!flag_concepts && id == ridpointers[(int)RID_CONCEPT])
-       inform (location, "%<concept%> only available with %<-std=c++2a%> or "
+       inform (location, "%<concept%> only available with %<-std=c++20%> or "
                "%<-fconcepts%>");
       else if (!flag_concepts && id == ridpointers[(int)RID_REQUIRES])
        inform (location, "%<requires%> only available with %<-std=c++2a%> or "
@@ -7362,7 +7362,7 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
                || idk == CP_ID_KIND_TEMPLATE_ID)
              {
                if (identifier_p (postfix_expression)
-                   /* In C++2A, we may need to perform ADL for a template
+                   /* In C++20, we may need to perform ADL for a template
                       name.  */
                    || (TREE_CODE (postfix_expression) == TEMPLATE_ID_EXPR
                        && identifier_p (TREE_OPERAND (postfix_expression, 0))))
@@ -10510,7 +10510,7 @@ cp_parser_lambda_expression (cp_parser* parser)
 
   LAMBDA_EXPR_LOCATION (lambda_expr) = token->location;
 
-  if (cxx_dialect >= cxx2a)
+  if (cxx_dialect >= cxx20)
     /* C++20 allows lambdas in unevaluated context.  */;
   else if (cp_unevaluated_operand)
     {
@@ -10518,7 +10518,7 @@ cp_parser_lambda_expression (cp_parser* parser)
        {
          error_at (LAMBDA_EXPR_LOCATION (lambda_expr),
                    "lambda-expression in unevaluated context"
-                   " only available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                   " only available with %<-std=c++20%> or %<-std=gnu++20%>");
          token->error_reported = true;
        }
       ok = false;
@@ -10528,7 +10528,7 @@ cp_parser_lambda_expression (cp_parser* parser)
       if (!token->error_reported)
        {
          error_at (token->location, "lambda-expression in template-argument"
-                   " only available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                   " only available with %<-std=c++20%> or %<-std=gnu++20%>");
          token->error_reported = true;
        }
       ok = false;
@@ -10714,7 +10714,7 @@ cp_parser_lambda_introducer (cp_parser* parser, tree lambda_expr)
       if (cp_lexer_next_token_is_keyword (parser->lexer, RID_THIS))
        {
          location_t loc = cp_lexer_peek_token (parser->lexer)->location;
-         if (cxx_dialect < cxx2a
+         if (cxx_dialect < cxx20
              && LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (lambda_expr) == CPLD_COPY)
            pedwarn (loc, 0, "explicit by-copy capture of %<this%> redundant "
                     "with by-copy capture default");
@@ -10774,9 +10774,9 @@ cp_parser_lambda_introducer (cp_parser* parser, tree lambda_expr)
       if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS))
        {
          ellipsis_loc = cp_lexer_peek_token (parser->lexer)->location;
-         if (cxx_dialect < cxx2a)
+         if (cxx_dialect < cxx20)
            pedwarn (ellipsis_loc, 0, "pack init-capture only available with "
-                    "%<-std=c++2a%> or %<-std=gnu++2a%>");
+                    "%<-std=c++20%> or %<-std=gnu++20%>");
          cp_lexer_consume_token (parser->lexer);
          init_pack_expansion = true;
        }
@@ -10993,10 +10993,10 @@ cp_parser_lambda_declarator_opt (cp_parser* parser, tree lambda_expr)
        pedwarn (parser->lexer->next_token->location, 0,
                 "lambda templates are only available with "
                 "%<-std=c++14%> or %<-std=gnu++14%>");
-      else if (cxx_dialect < cxx2a)
+      else if (cxx_dialect < cxx20)
        pedwarn (parser->lexer->next_token->location, OPT_Wpedantic,
                 "lambda templates are only available with "
-                "%<-std=c++2a%> or %<-std=gnu++2a%>");
+                "%<-std=c++20%> or %<-std=gnu++20%>");
 
       cp_lexer_consume_token (parser->lexer);
 
@@ -11030,7 +11030,7 @@ cp_parser_lambda_declarator_opt (cp_parser* parser, tree lambda_expr)
       bool is_consteval = false;
       /* For C++20, before parsing the parameter list check if there is
         a consteval specifier in the corresponding decl-specifier-seq.  */
-      if (cxx_dialect >= cxx2a)
+      if (cxx_dialect >= cxx20)
        {
          for (size_t n = cp_parser_skip_balanced_tokens (parser, 1);
               cp_lexer_nth_token_is (parser->lexer, n, CPP_KEYWORD); n++)
@@ -12970,11 +12970,11 @@ cp_parser_init_statement (cp_parser *parser, tree *decl)
            /* That didn't work, try to parse it as an expression-statement.  */
            cp_parser_expression_statement (parser, NULL_TREE);
 
-         if (cxx_dialect < cxx2a)
+         if (cxx_dialect < cxx20)
            {
              pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0,
                       "range-based %<for%> loops with initializer only "
-                      "available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                      "available with %<-std=c++20%> or %<-std=gnu++20%>");
              *decl = error_mark_node;
            }
        }
@@ -14486,7 +14486,7 @@ cp_parser_storage_class_specifier_opt (cp_parser* parser)
      virtual
      explicit
 
-   C++2A Extension:
+   C++20 Extension:
      explicit(constant-expression)
 
    Returns an IDENTIFIER_NODE corresponding to the keyword used.
@@ -14530,10 +14530,10 @@ cp_parser_function_specifier_opt (cp_parser* parser,
            parser->type_definition_forbidden_message
              = G_("types may not be defined in explicit-specifier");
 
-           if (cxx_dialect < cxx2a)
+           if (cxx_dialect < cxx20)
              pedwarn (token->location, 0,
-                      "%<explicit(bool)%> only available with %<-std=c++2a%> "
-                      "or %<-std=gnu++2a%>");
+                      "%<explicit(bool)%> only available with %<-std=c++20%> "
+                      "or %<-std=gnu++20%>");
 
            /* Parse the constant-expression.  */
            expr = cp_parser_constant_expression (parser);
@@ -16682,12 +16682,12 @@ cp_parser_template_id (cp_parser *parser,
          /* This didn't go well.  */
          if (TREE_CODE (templ) == FUNCTION_DECL)
            {
-             /* C++2A says that "function-name < a;" is now ill-formed.  */
+             /* C++20 says that "function-name < a;" is now ill-formed.  */
              if (cp_parser_error_occurred (parser))
                {
                  error_at (token->location, "invalid template-argument-list");
                  inform (token->location, "function name as the left hand "
-                         "operand of %<<%> is ill-formed in C++2a; wrap the "
+                         "operand of %<<%> is ill-formed in C++20; wrap the "
                          "function name in %<()%>");
                }
              else
@@ -17391,7 +17391,7 @@ cp_parser_template_argument (cp_parser* parser)
   else
     {
       /* In C++20, we can encounter a braced-init-list.  */
-      if (cxx_dialect >= cxx2a
+      if (cxx_dialect >= cxx20
          && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE))
        {
          bool expr_non_constant_p;
@@ -18112,7 +18112,7 @@ cp_parser_simple_type_specifier (cp_parser* parser,
     {
       bool qualified_p;
       bool global_p;
-      const bool typename_p = (cxx_dialect >= cxx2a
+      const bool typename_p = (cxx_dialect >= cxx20
                               && (flags & CP_PARSER_FLAGS_TYPENAME_OPTIONAL));
 
       /* Don't gobble tokens or issue error messages if this is an
@@ -18378,7 +18378,7 @@ cp_parser_placeholder_type_specifier (cp_parser *parser, location_t loc,
   /* As per the standard, require auto or decltype(auto), except in some
      cases (template parameter lists, -fconcepts-ts enabled).  */
   cp_token *placeholder = NULL, *close_paren = NULL;
-  if (cxx_dialect >= cxx2a)
+  if (cxx_dialect >= cxx20)
     {
       if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO))
        placeholder = cp_lexer_consume_token (parser->lexer);
@@ -19631,10 +19631,10 @@ cp_parser_namespace_definition (cp_parser* parser)
                                                             RID_INLINE);
       if (nested_inline_p && nested_definition_count != 0)
        {
-         if (cxx_dialect < cxx2a)
+         if (cxx_dialect < cxx20)
            pedwarn (cp_lexer_peek_token (parser->lexer)->location,
                     OPT_Wpedantic, "nested inline namespace definitions only "
-                    "available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                    "available with %<-std=c++20%> or %<-std=gnu++20%>");
          cp_lexer_consume_token (parser->lexer);
        }
 
@@ -20187,13 +20187,13 @@ cp_parser_asm_definition (cp_parser* parser)
   /* Look for the `asm' keyword.  */
   cp_parser_require_keyword (parser, RID_ASM, RT_ASM);
 
-  /* In C++2a, unevaluated inline assembly is permitted in constexpr
+  /* In C++20, unevaluated inline assembly is permitted in constexpr
      functions.  */
   if (parser->in_function_body
       && DECL_DECLARED_CONSTEXPR_P (current_function_decl)
-      && (cxx_dialect < cxx2a))
+      && (cxx_dialect < cxx20))
     pedwarn (asm_loc, 0, "%<asm%> in %<constexpr%> function only available "
-            "with %<-std=c++2a%> or %<-std=gnu++2a%>");
+            "with %<-std=c++20%> or %<-std=gnu++20%>");
 
   /* Handle the asm-qualifier-list.  */
   location_t volatile_loc = UNKNOWN_LOCATION;
@@ -21600,7 +21600,7 @@ cp_parser_direct_declarator (cp_parser* parser,
               - it is a decl-specifier of the decl-specifier-seq of a
                 parameter-declaration in a declarator of a function or
                 function template declaration, ... */
-           if (cxx_dialect >= cxx2a
+           if (cxx_dialect >= cxx20
                && (flags & CP_PARSER_FLAGS_TYPENAME_OPTIONAL)
                && declarator->kind == cdk_id
                && !at_class_scope_p ()
@@ -23082,16 +23082,16 @@ cp_parser_ctor_initializer_opt_and_function_body (cp_parser *parser,
 
   if (in_function_try_block
       && DECL_DECLARED_CONSTEXPR_P (current_function_decl)
-      && cxx_dialect < cxx2a)
+      && cxx_dialect < cxx20)
     {
       if (DECL_CONSTRUCTOR_P (current_function_decl))
        pedwarn (input_location, 0,
                 "function-try-block body of %<constexpr%> constructor only "
-                "available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                "available with %<-std=c++20%> or %<-std=gnu++20%>");
       else
        pedwarn (input_location, 0,
                 "function-try-block body of %<constexpr%> function only "
-                "available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                "available with %<-std=c++20%> or %<-std=gnu++20%>");
     }
 
   /* Begin the function body.  */
@@ -23351,7 +23351,7 @@ cp_parser_array_designator_p (cp_parser *parser)
      initializer-clause ... [opt]
      initializer-list , initializer-clause ... [opt]
 
-   C++2A Extension:
+   C++20 Extension:
 
    designated-initializer-list:
      designated-initializer-clause
@@ -23403,8 +23403,8 @@ cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p,
       bool clause_non_constant_p;
       location_t loc = cp_lexer_peek_token (parser->lexer)->location;
 
-      /* Handle the C++2A syntax, '. id ='.  */
-      if ((cxx_dialect >= cxx2a
+      /* Handle the C++20 syntax, '. id ='.  */
+      if ((cxx_dialect >= cxx20
           || cp_parser_allow_gnu_extensions_p (parser))
          && cp_lexer_next_token_is (parser->lexer, CPP_DOT)
          && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_NAME
@@ -23412,10 +23412,10 @@ cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p,
              || (cp_lexer_peek_nth_token (parser->lexer, 3)->type
                  == CPP_OPEN_BRACE)))
        {
-         if (cxx_dialect < cxx2a)
+         if (cxx_dialect < cxx20)
            pedwarn (loc, OPT_Wpedantic,
                     "C++ designated initializers only available with "
-                    "%<-std=c++2a%> or %<-std=gnu++2a%>");
+                    "%<-std=c++20%> or %<-std=gnu++20%>");
          /* Consume the `.'.  */
          cp_lexer_consume_token (parser->lexer);
          /* Consume the identifier.  */
@@ -23482,7 +23482,7 @@ cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p,
          first_designator = designator;
          first_p = false;
        }
-      else if (cxx_dialect >= cxx2a
+      else if (cxx_dialect >= cxx20
               && first_designator != error_mark_node
               && (!first_designator != !designator))
        {
@@ -23490,7 +23490,7 @@ cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p,
                         "or none of them should be");
          first_designator = error_mark_node;
        }
-      else if (cxx_dialect < cxx2a && !first_designator)
+      else if (cxx_dialect < cxx20 && !first_designator)
        first_designator = designator;
 
       /* Parse the initializer.  */
@@ -23509,7 +23509,7 @@ cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p,
           /* Consume the `...'.  */
           cp_lexer_consume_token (parser->lexer);
 
-         if (designator && cxx_dialect >= cxx2a)
+         if (designator && cxx_dialect >= cxx20)
            error_at (loc,
                      "%<...%> not allowed in designated initializer list");
 
@@ -25111,7 +25111,7 @@ cp_parser_member_declaration (cp_parser* parser)
              width = cp_parser_constant_expression (parser, false, NULL,
                                                     cxx_dialect >= cxx11);
 
-             /* In C++2A and as extension for C++11 and above we allow
+             /* In C++20 and as extension for C++11 and above we allow
                 default member initializers for bit-fields.  */
              initializer = NULL_TREE;
              if (cxx_dialect >= cxx11
@@ -25121,12 +25121,12 @@ cp_parser_member_declaration (cp_parser* parser)
                {
                  location_t loc
                    = cp_lexer_peek_token (parser->lexer)->location;
-                 if (cxx_dialect < cxx2a
+                 if (cxx_dialect < cxx20
                      && identifier != NULL_TREE)
                    pedwarn (loc, 0,
                             "default member initializers for bit-fields "
-                            "only available with %<-std=c++2a%> or "
-                            "%<-std=gnu++2a%>");
+                            "only available with %<-std=c++20%> or "
+                            "%<-std=gnu++20%>");
 
                  initializer = cp_parser_save_nsdmi (parser);
                  if (identifier == NULL_TREE)
@@ -26084,10 +26084,10 @@ cp_parser_try_block (cp_parser* parser)
   cp_parser_require_keyword (parser, RID_TRY, RT_TRY);
   if (parser->in_function_body
       && DECL_DECLARED_CONSTEXPR_P (current_function_decl)
-      && cxx_dialect < cxx2a)
+      && cxx_dialect < cxx20)
     pedwarn (input_location, 0,
             "%<try%> in %<constexpr%> function only "
-            "available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+            "available with %<-std=c++20%> or %<-std=gnu++20%>");
 
   try_block = begin_try_block ();
   cp_parser_compound_statement (parser, NULL, BCS_TRY_BLOCK, false);
@@ -27705,7 +27705,7 @@ cp_parser_requires_clause_opt (cp_parser *parser, bool lambda_p)
        {
          error_at (cp_lexer_peek_token (parser->lexer)->location,
                    "%<requires%> only available with "
-                    "%<-std=c++2a%> or %<-fconcepts%>");
+                   "%<-std=c++20%> or %<-fconcepts%>");
          /* Parse and discard the requires-clause.  */
          cp_lexer_consume_token (parser->lexer);
          cp_parser_constraint_expression (parser);
@@ -28035,7 +28035,7 @@ cp_parser_compound_requirement (cp_parser *parser)
 
       bool saved_result_type_constraint_p = parser->in_result_type_constraint_p;
       parser->in_result_type_constraint_p = true;
-      /* C++2a allows either a type-id or a type-constraint. Parsing
+      /* C++20 allows either a type-id or a type-constraint. Parsing
          a type-id will subsume the parsing for a type-constraint but
          allow for more syntactic forms (e.g., const C<T>*).  */
       type = cp_parser_trailing_type_id (parser);
@@ -29049,7 +29049,7 @@ 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 >= cxx2a /* Implies flag_concept.  */
+  else if (cxx_dialect >= cxx20 /* Implies flag_concept.  */
            && 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.  */
index 7911293571e21a3b865680da01d8aa555fca0761..f0cb7a2acb7d751d83ce3524b3dbaa5ce254b3d5 100644 (file)
@@ -3490,7 +3490,7 @@ template_heads_equivalent_p (const_tree tmpl1, const_tree tmpl2)
   tree parms2 = DECL_TEMPLATE_PARMS (tmpl2);
 
   /* Don't change the matching rules for pre-C++20.  */
-  if (cxx_dialect < cxx2a)
+  if (cxx_dialect < cxx20)
     return comp_template_parms (parms1, parms2);
 
   /* ... have the same number of template parameters, and their
@@ -5776,7 +5776,7 @@ push_template_decl_real (tree decl, bool is_friend)
       else if (VAR_P (decl))
        /* C++14 variable template. */;
       else if (TREE_CODE (decl) == CONCEPT_DECL)
-       /* C++2a concept definitions.  */;
+       /* C++20 concept definitions.  */;
       else
        {
          error ("template declaration of %q#D", decl);
@@ -9070,7 +9070,7 @@ coerce_innermost_template_parms (tree parms,
 static bool
 class_nttp_const_wrapper_p (tree t)
 {
-  if (cxx_dialect < cxx2a)
+  if (cxx_dialect < cxx20)
     return false;
   return (TREE_CODE (t) == VIEW_CONVERT_EXPR
          && CP_TYPE_CONST_P (TREE_TYPE (t))
@@ -26137,11 +26137,11 @@ invalid_nontype_parm_type_p (tree type, tsubst_flags_t complain)
     return false;
   else if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
     {
-      if (CLASS_PLACEHOLDER_TEMPLATE (type) && cxx_dialect < cxx2a)
+      if (CLASS_PLACEHOLDER_TEMPLATE (type) && cxx_dialect < cxx20)
        {
          if (complain & tf_error)
            error ("non-type template parameters of deduced class type only "
-                  "available with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                  "available with %<-std=c++20%> or %<-std=gnu++20%>");
          return true;
        }
       return false;
@@ -26159,11 +26159,11 @@ invalid_nontype_parm_type_p (tree type, tsubst_flags_t complain)
     return false;
   else if (CLASS_TYPE_P (type))
     {
-      if (cxx_dialect < cxx2a)
+      if (cxx_dialect < cxx20)
        {
          if (complain & tf_error)
            error ("non-type template parameters of class type only available "
-                  "with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                  "with %<-std=c++20%> or %<-std=gnu++20%>");
          return true;
        }
       if (dependent_type_p (type))
@@ -28383,7 +28383,7 @@ is_spec_or_derived (tree etype, tree tmpl)
 static tree
 maybe_aggr_guide (tree tmpl, tree init, vec<tree,va_gc> *args)
 {
-  if (cxx_dialect < cxx2a)
+  if (cxx_dialect < cxx20)
     return NULL_TREE;
 
   if (init == NULL_TREE)
@@ -28750,12 +28750,12 @@ do_class_deduction (tree ptype, tree tmpl, tree init,
        error ("non-deducible template %qT used without template arguments", tmpl);
       return error_mark_node;
     }
-  else if (cxx_dialect < cxx2a && DECL_ALIAS_TEMPLATE_P (tmpl))
+  else if (cxx_dialect < cxx20 && DECL_ALIAS_TEMPLATE_P (tmpl))
     {
       /* This doesn't affect conforming C++17 code, so just pedwarn.  */
       if (complain & tf_warning_or_error)
        pedwarn (input_location, 0, "alias template deduction only available "
-                "with %<-std=c++2a%> or %<-std=gnu++2a%>");
+                "with %<-std=c++20%> or %<-std=gnu++20%>");
     }
 
   if (init && TREE_TYPE (init) == ptype)
index d526a6311e06c60d205d75e300cc0bd5622f778b..2090cbf7da7665f8c47ca0420917f38c958e7102 100644 (file)
@@ -691,7 +691,7 @@ build_cplus_new (tree type, tree init, tsubst_flags_t complain)
      it can produce a { }.  */
   if (BRACE_ENCLOSED_INITIALIZER_P (init))
     {
-      gcc_assert (cxx_dialect >= cxx2a);
+      gcc_assert (cxx_dialect >= cxx20);
       return finish_compound_literal (type, init, complain);
     }
 
@@ -4599,7 +4599,7 @@ handle_nodiscard_attribute (tree *node, tree name, tree args,
   return NULL_TREE;
 }
 
-/* Handle a C++2a "no_unique_address" attribute; arguments as in
+/* Handle a C++20 "no_unique_address" attribute; arguments as in
    struct attribute_spec.handler.  */
 static tree
 handle_no_unique_addr_attribute (tree* node,
index d407e4cbfa4895a7dafa28103750c234faca6698..af84c257e963a0c7b27bbf27f4ee1610189cc010 100644 (file)
@@ -1102,7 +1102,7 @@ check_narrowing (tree type, tree init, tsubst_flags_t complain,
   return ok;
 }
 
-/* True iff TYPE is a C++2a "ordinary" character type.  */
+/* True iff TYPE is a C++20 "ordinary" character type.  */
 
 bool
 ordinary_char_type_p (tree type)
@@ -2236,7 +2236,7 @@ build_m_component_ref (tree datum, tree component, tsubst_flags_t complain)
     {
       /* 5.5/6: In a .* expression whose object expression is an rvalue, the
         program is ill-formed if the second operand is a pointer to member
-        function with ref-qualifier & (for C++2A: unless its cv-qualifier-seq
+        function with ref-qualifier & (for C++20: unless its cv-qualifier-seq
         is const). In a .* expression whose object expression is an lvalue,
         the program is ill-formed if the second operand is a pointer to member
         function with ref-qualifier &&.  */
@@ -2261,12 +2261,12 @@ build_m_component_ref (tree datum, tree component, tsubst_flags_t complain)
                           "an lvalue", ptrmem_type);
                  return error_mark_node;
                }
-             else if (cxx_dialect < cxx2a)
+             else if (cxx_dialect < cxx20)
                {
                  if (complain & tf_warning_or_error)
                    pedwarn (input_location, OPT_Wpedantic,
                             "pointer-to-member-function type %qT requires "
-                            "an lvalue before C++2a", ptrmem_type);
+                            "an lvalue before C++20", ptrmem_type);
                  else
                    return error_mark_node;
                }
index 396446f7670ad8274355cebfc2b2643115d84944..fad5eb4c2e50e2be3ea41353cf02c2f06ecd6b60 100644 (file)
@@ -13609,7 +13609,7 @@ generic_parameter_die (tree parm, tree arg,
   dw_die_ref tmpl_die = NULL;
   const char *name = NULL;
 
-  /* C++2a accepts class literals as template parameters, and var
+  /* C++20 accepts class literals as template parameters, and var
      decls with initializers represent them.  The VAR_DECLs would be
      rejected, but we can take the DECL_INITIAL constructor and
      attempt to expand it.  */
index 73a257cead9dd400fb10e6d456ccd9c4431d732d..ea599237ab18cd38013568cf35beebc887f5ca38 100644 (file)
@@ -1,15 +1,15 @@
 // { dg-do compile { target c++11 } }
 struct A {
-  A () = delete;       // { dg-message "declared here" "" { target c++2a } }
+  A () = delete;       // { dg-message "declared here" "" { target c++20 } }
 };
 struct B {
   B () = default;
   int b = 0;
 };
 struct C {
-  C (C&&) = default;   // { dg-message "candidate" "" { target c++2a } }
+  C (C&&) = default;   // { dg-message "candidate" "" { target c++20 } }
   int c, d;
 };
-A a {};                        // { dg-error "use of deleted function" "" { target c++2a } }
-B b = {1};             // { dg-error "could not convert" "" { target { c++11_only || c++2a } } }
-C *c = new C {2, 3};   // { dg-error "no matching function for call to" "" { target c++2a } }
+A a {};                        // { dg-error "use of deleted function" "" { target c++20 } }
+B b = {1};             // { dg-error "could not convert" "" { target { c++11_only || c++20 } } }
+C *c = new C {2, 3};   // { dg-error "no matching function for call to" "" { target c++20 } }
index a072b29191dcc12306b3746437dd37fbf9b07408..04a531c356eaffd8993ce351170ef1edd74ce6f2 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-Wpedantic" }
 
 // Test flexible array member.  Here we're binding int[] to int[].  This worked
index 1156ea32df5549ad22fbe7187769cc36e7fe4282..b0dd81984bbcf1246da035853a418b210d6526d4 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-Wpedantic" }
 
 int arr[1] = { 42 };
index 9908b7e911891da1355ad047f77227b6868458f1..96b65a59795e036c561057a8d8400e21c992b8fd 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T> void foo(T);
 
index 793e85d7b1c9c9c1e00580bb51d73d7f19168862..8406b999dd5ce90dc9b2617870608b4df8cfdd02 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 void f(const int(*)[]);
 void fb(const int(*)[3]);
index 033a74683a71ea740158e9625dea704a0376eb20..17f917af7373bd6553729a5358e0b449d740fd08 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/69531 - DR 1307, Overload resolution based on size of array init-list.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 int f(int, int const(&)[2]) { return 1; }
 int f(double, int const(&)[2]) { return 2; }
index bfb39d1c12c979d44e094e3d6c50e06d7a3eaf73..1413971aaa22a962ab793533b4dd2036823035f5 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 using P = int *(*)[3];
 using S = const int *const (*)[];
index 3313ed466fbaaadab2013a11760dfb5adb7d43b8..a879099d542c168d9a9f2ff82d2b2bc816cf2ec4 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // As conversion/qual1.C, but with [].
 
index 5245d830f1f3f983d91ebdd0b40002ea6d89d017..37e9e0546f692f741823f4980613b8d7b9f296be 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   A();
index 3d92b40124717e84e14b12cd3c83a67be1069ab3..1ce041e8f2ab6e2f459d61516b8b9c16dd0fb42a 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 // Ranking of reference initialization conversions
 
index 979c69b055520850acb9cdbe66fa5e15106fa743..3f6f92c1fedff238825ba36ef4474fb4304889b8 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Ranking of reference initialization conversions
 
index 34678f5cead3bbfcead6853eb24ca1e7bfd715ea..e1058cd83d547ecdae2f5473f2284f95ccd18552 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 // Ranking of list-initialization sequences
 int b(int   (&&)[] ) { return 1; }   // #1
index c2389c822733193677b01030119c44937f6cedaa..dc1064005fc6159c1903e6342ac06cd07bf0b348 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 // Ranking of reference initialization conversions
 
index 07c709ff10f263de57f27de6297cb5d7709e9cb1..1ea1a69c2ff6c2c98a702be424aab16f32e1e728 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/69531 - DR 1307, Overload resolution based on size of array init-list.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 int f(int const(&)[]) { return 1; }
 int f(int const(&)[2]) { return 2; }
index 635c7679a21ba30b80007863726e57f28e8ab2bc..77a07ea038d2432f8e5db9b5cf21b4d6ac68d95b 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/69531 - DR 1307, Overload resolution based on size of array init-list.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 // Example from [over.ics.rank].
 
 int f(int    (&&)[] ) { return 1; }    // #1
index 63318c53e09154eb333f18447b4196981c912718..4081cce57ba693a013d12be4661de262a9949439 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 int arr[1];
 extern int arr2[];
index 43de249bd5af88bf1e7f4270273d9f5afc18f56c..03b210d5f2d1a5e9df61c0642d7a14b6bda385d4 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-final { scan-tree-dump-times "hot label" 5 "gimple" } }
 // { dg-final { scan-tree-dump-times "cold label" 3 "gimple" } }
index 6c59610528ebaa2e08e7f049fef5ac82f78c953e..ee178dec9c551e9d781c9d81ac3ca7891f1f2b59 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 bool b;
 int main()
index bb1265ddb6e4f689883ffc593f6b185837d889f6..6e37dbdc98017fccc5c47874a63cfdb9a99b0d5c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 [[likely]] void f() { }                // { dg-warning "function" }
 
index bf0dc4c5d4eea552d67511b8ecfe25a3cec08953..0a96edc3183285eb0399f905845b64848e7ee50a 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 int a, b, c;
 
index 61ba65a1333d24eb1f6991ec69e33780667e99d6..f7bd72b7f45bbef1187d3954ab6c03588124a331 100644 (file)
@@ -1,5 +1,5 @@
 // Testcase from P1816R0
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T>
 struct S {
index 896554f610a55b20f5fd028a4ec79508181b15cc..2fdf4e8f89f097f41f232acb8a336bee00b10f3a 100644 (file)
@@ -1,5 +1,5 @@
 // Test that non-aggregates don't get the aggregate deduction.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-prune-output "no matching function" }
 
 struct A { A(); };
index ed47eb38f1b5aebfe206acda130265b3272e71e8..6890d0a1f8981a9171222742ed4e18c9f64f5d90 100644 (file)
@@ -1,5 +1,5 @@
 // Testcase from P1814R0
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> struct identity { using type = T; };
 template <class T> using identity_t = typename identity<T>::type;
index d855f7d11ce9e56a5eb35ea90742a7a62609a3d6..07876a4a4968eac88346da2a577464bbed7640e5 100644 (file)
@@ -1,6 +1,6 @@
 // Test that a non-template deduction guide that doesn't match the alias is
 // ignored.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> struct identity { using type = T; };
 template <class T> using identity_t = typename identity<T>::type;
index 8ffe5d74e618adbde3297107a205c87d237ec43a..d9c140db23a37d5295204fe9fdbe99ce1190e52a 100644 (file)
@@ -8,19 +8,19 @@ struct S {
 void
 fn (int *a, int b, int c)
 {
-  a[b,c]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++2a } }
+  a[b,c]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20 } }
   a[(b,c)];
 
-  a[(void) b, c]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++2a } }
+  a[(void) b, c]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20 } }
   a[((void) b, c)];
 
-  a[(void) b, (void) c, (void) b, b]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++2a } }
+  a[(void) b, (void) c, (void) b, b]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20 } }
   a[((void) b, (void) c, (void) b, b)];
 
-  a[S(), 10]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++2a } }
+  a[S(), 10]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20 } }
   a[(S(), 10)];
 
   a[int{(1,2)}];
-  a[int{(1,2)}, int{}]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++2a } }
+  a[int{(1,2)}, int{}]; // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20 } }
   a[(int{(1,2)}, int{})];
 }
index 15fd26ab400f3b5891ba3eddaaf14d8c39bed017..995944f500ef6dc3cf63537de309ec38ca9b6270 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91338 - P1161R3: Deprecate a[b,c].
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-Wno-comma-subscript" }
 
 struct S {
index 23183ad7bc21df10d5334664736aa0dca3361e9c..0d149c7a9af7055f598677b15b69d32825ca65e3 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91338 - P1161R3: Deprecate a[b,c].
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-Wno-deprecated" }
 
 struct S {
index 68d19c09ccf58d7bc9335590251c094b8259ae42..acf5d43ad5d718fb6da9afa2f8e0cb429e5c3d33 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91391 - bogus -Wcomma-subscript warning.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T, typename U>
 int foo(T t, U u) { return t + u; }
index 862879169fb763e9b95ccc2a4b6c94d4abc581cc..b8089679772a9e24782160c8de59f7a141e459e8 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Class = __is_class(T);
index 02e960ad40a36d87d72e59af3b919be7bd21b67d..2ac9ae2ff7274464cbe698933800fc37433a0af5 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T> struct A { };
 template <typename T> concept int_type = __is_same_as (T, int);
index d37ce6a51e88b471d0682c44109b1ea2a4f53c36..26b3d4a2cbbfc19a03d43b35aa06a28319092483 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T> struct A { };
 template <typename T> concept int_type = __is_same_as (T, int);
index 907b0c2e3575104d9ac8cf0df87fb087c5513635..a565de6641284f94f530c6fc2ca1c405fb9cc093 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93377
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct empty
 {};
index aca5c44c48f4bf8c6801972b9dddee876912af2e..b50cb421b3b1e0b9c35f8238108f266875028b26 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Class = __is_class(T);
index b090c3a3719ffacce76ac7d31b6d57f17b2ab3db..d13100b96f9cc37390f1648d072dc5b501b8a6d8 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <cmath>
 
index 25c4ca064ce13b7a1269ecc5c207ef6be57b2107..63f36965f006ab619584052cef0e5f185a41e22d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> concept has_mem_type = requires { typename T::type; };
 
index bb7e31d8b6c51248e69725ddb885e9242efe7713..18564c8da13fa44cd1741e4ba15644d7250bb5b0 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index 821042f44ee02e369ac8515a074a952c6a8c49f9..f61f2602b7889cb496e9ba6f58f3129d8b91d853 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94597
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename b, typename c> concept d = requires(b e) { e.operator c(); };
 
index db3cfdf3cb27cd5f00ac555520507b6605e02d19..13733c645f3feae9f2108acf6c9ba7e71ad456a7 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Tests constrained decltype(auto).
 
index 91eefee602a5d860ee611e817f1e8601f033edbe..800476910047dd54a17627e6cdca1f96417ab0d5 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/66092
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T, typename U, typename... Args>
   concept Similar = true;
index 14d994c9b041aa3e0fa94993d7c90c3919d735bb..5cbf64a8cd3d1f960da5803cae511f851b93161c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-final { scan-assembler "_Z1gI1XEvT_" } }
 // { dg-final { scan-assembler "_Z1gI1YEvT_" } }
 // { dg-final { scan-assembler "_Z1gIiEvT_" } }
index 6074bc78682632c0465d4bb0285d9086b360b70b..5756b0d73a6c4f3f06a16c8e00f70e819f4fb069 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index 03ec9e9a698d6d0dcede1d91afb15796f809e69d..105f39e45fc21b60e554936c029991e0a318d34f 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index 81bc081abbb6df7277efba3789c6118c617fc180..562fc138cfd4a0fde64fb1c7f7dd36517c14fe00 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index d54bcdb32119b753872d710e9b49bfec7a4f6359..2fe479934a8bc82ae05b5d3a32b5f4385086da95 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <cassert>
 
index 4103714b0043a13e28a53e72672e7409424c6e01..99f83cba6cf630813ba340b56fad588631a1bc68 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index 76c6fb9bd34e3cf35e7bc99e54126d07250ce7b9..3f2d62c94fd882ea13a7b290d03f0d841af238dc 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index 0634eafb24875067c61b7ab41f2fccdd0f2b43b6..471eaba773fc4e59e1ef5e599ea401a50c3a97f1 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <cassert>
 
index b682b0d884688750456de87fe4229851109d3578..a15749a88be1cd37bbac50484d8f41577c9f0591 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <cassert>
 
index 13f04d7759418b40bd5989219030232d005ca5b6..e726e1cc91ef3db69cb84cbfe671622cde760077 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 struct A {
index 56fbb683868f48df1dfcf51b3b62730c5f2cf157..50a083287550b3190e54f7e1ecfaea70c50c71f3 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #ifndef __cpp_concepts
 #error __cpp_concepts not defined
index 9287ab8e5d7b3cfdcb311be6b1a63cd73a8c6391..238eb819e909108ff45716dc429a4296e1fa3f12 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Type = true;
index ddf99aa9933196d61cddd9efa091db1ed3ffbad9..c8590b4074b9a3c20afc43ee9d2c1a7e013abe70 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #define assert(E) if (!(E)) __builtin_abort();
 
index b25adcc17c09d4e47711e9f35d8edff4d8d49775..f33251987f73197e207d29f156da69c19db51c6f 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept type = true;
index 8a29ca9360c3749cb501bb2cff7d02e6a9994ac6..4fca936db2b5a7f4494d9bb4bed57d157961e491 100644 (file)
@@ -1,5 +1,5 @@
 // Testcase from [expr.prim.id]/5
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T> struct A {
   static void f(int) requires false;
index e3740d5170e4a9261f8680fe5dd656ccd15301c2..fe80460c9c54a7a20f4d21733a5288904462cf0d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept Eq = requires(T t) { t == t; }; // { dg-message "in requirements" }
index 6aa9d9617791b0ff54c84521cffa055365ed5ebf..d5f700c7d39d344a7602d069177eb50785274c40 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept Eq = requires(T t) { t == t; }; // { dg-message "in requirements" }
index 88f9fe825f8dbc4480b2b1532c2a7568d6ce04be..90ab8f0305d8fe007cbbb7b29f62d8442a039088 100644 (file)
@@ -1,5 +1,5 @@
 // C++20 NB comment US115
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> concept Any = true;
 
index 4e2d13f8eb3a129ebeab5b0f6326225410d6c31f..4ddf516b1a9c58d0a2895a528f812cc74bf035eb 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67240
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-diagnostics-depth=2" }
 
 template <class T, class U> concept Same = __is_same_as(T,U);
index aa244bc04c1222d1aee680910d178563addb2b1f..b858e2770d15950d14a9eb9f87b347f0a49b76e0 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index 34eaf22c26c54d98f50ec62da836824d07c1b76f..7fe930cd865490655e23be96406cd48e8c8eba53 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index c92d6ac774cd6482fec6f478e00b6e10445e34a2..ad29068e49f70b8b06e1acb8b4debb461a08be43 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91930
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T> struct basic_mixin {
   basic_mixin() requires true;
index ef1968899f6ab322858ab366ce4a85ee6c9c53fb..61595749f71c8b24e21c3f99d025f7458bcbd341 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/82565
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct string
 {
index a7419d69a4651010886144c78093fb64b6832f50..44b509dd3808ff2e6e01ad7e99fbafd9493ed748 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept False = false;
index 96da7852a70f060aef7b644ac200a6067fbadcd7..291e451ca1a87534f47ac612cd3291cda798139c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 template<typename T>
 concept C1 = __is_same_as(T, int)
index dfb5f3bcc5e85fd63fcd435d123b1ee26614db18..daaaf31cf6cfc0432518acd94bb44c13d419035c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct a {};
 template <bool> using b = a;
index fe471899c14dc54c8294499f4e7082a824c582da..ee9180e2866e4ff7000ea9ba6930d9b79041b5e0 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92556
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Having this as a hard error is consistent with template argument deduction;
 // it's an open core issue (jason 2020-02-14).
index 6c81c1476ab8e777e482036867b0fd65394cdb55..c841daec7f2848d5fc2bf99dbbed60c2d84d7abd 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S
 {
index f3a2d064dbd79d7350f920d656d57ebb208db29c..cec45b46aa043d44348c4758ced6d6f9460a3a9a 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // FIXME: Diagnostics should be better.
 
index acfa188af21974fc0024f279ffc069896c634ac0..8867b7bf3a15ad70775ce1fc98cfc249add46411 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index f6ad519635244bf6fb7c1d88a70af7a6bdd3d592..77e10c6b5c72daeba2ca954cdc7bd884995ec570 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <cassert>
 
index ee28d5b775476d08c196eb95d860a6ac5cefd2ec..7ddfe62590cf0fb5846b23e3fa7a5d6a66e8ae3e 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T>
 struct A {
index 418040aa56e99c0e24928d5a262f014956d54b2f..987bf27f7848adcbe311103c798a5cbc5e42a99d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 void f1(int);
 void f2(int) noexcept;
index 5ba3ab19c23fc4b688c76e165e157973d2e4631e..fb3272632c70bba4bb9454b3cc207fad4f032c7d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> concept is_int = __is_same_as(T,int);
 
index f33f74969b7b19c37c946930b9ba65757f312fec..8774d4f6fd703f60c716d247cb8f9d37b2ab2bc9 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67138
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T>
 concept Auto = true;
index 2bb4bacb2ef37fd1e5fc32e5b17dc84a24247835..9e455d5d3a2dd00d549dae33186fe648cb9c3af2 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67152
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T>
 concept HasType = requires { typename T::type; };
index cbea81d6b2106499477e4c16a32c4807a6a71908..887fe4df3a9ea5c905e99dc58aad4d4ca3be420b 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class T, class U>
 concept Same = __is_same_as(T, U);
index b04354cf8d08cb8e960cc0ad840d36cf93dd7514..9e6fd16c3682c7925a770c3b26fb606eea83383c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94481
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept C = true;
index 5af2a40e9a3df67806d039143df01e4d098888c7..7176efbc6080d8cff013fbe6dc4191cbab220a59 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Concept =
index 52f24ec90be2f4333f0bc1cfbf108f1747ef8443..54405f2ca6ef8e40005e49d4576879df4d832ca4 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept C1 =
index b99a3433f6c51b88cba955d4a3fa588cf990e021..1bcc051243fda355e62e61f14ded292f01c3134b 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 using TD = int;
 
index b246d254bc31e34f0c98456c684ded74b3994225..2868f9cfadcd7aa0f792e9940d32a4112f33d8f6 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Performance test... This should be fast.
 
index 53bb9a355f1cb732615f744c90cb1a5b663f31dd..93dc32de922562c66ffe7dd04adac5ad4ac84128 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/65854
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Handle alias templates in type requirements.
 
index c32f4d1184b5b6f85255ad6a224351bd1db5985b..afeee5927e592e027585f23a52712fc50cada598 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/66844
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U>
 concept Same = __is_same_as(T, U);
index ca57a0915f14c80544cbb17d35a9f15342f1b7e0..c6dfe5d1c79a818c1a1489e8eac87b141d637586 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/66962
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename> struct remove_cv;
 template <typename> struct is_reference;
index 88017dc723fdb567cfd80682b94eb0670c6bee90..fbaac1c34a3d503c369c1d9a829f60821c810a41 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T>
 concept C1 =
index db8c37e2191d14a74f4dd21b495b81ead8796d73..1e83fbae3bf9371f5dfed36270b99dbf063de520 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67147
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class F, class I1, class I2 = I1>
 concept IndirectCallableRelation = true;
index c5939960a141d1d88ff5e05042da0ea0c90f7df8..97f80cfcfa861ed49bb8e35d2e4dee3118a88a31 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67148
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 namespace std
index 7154fc2b7fe1fdabfcb4047f284549e962a2c3dc..c74f6f00a5c56aa0ba5458a471d03d79e06f9273 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67178
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept c = true;
index 044e677363c8ce9f44f56161dd1889b8dd633c3f..a31750eb495b47f719a81e42d18dea0d99fbf273 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67210
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U>
 concept C = true;
index 35618aed5d359d7780ada2b4ce41e07d04dc42fc..b1a7a8c333a5e025523cb7e999647555d6afca36 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67217
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T>
   requires __is_same_as(T, double)
index 500e6314119d75e35f89bf0575322ee690e91e22..d59d4f95bfb8007d36e197b73d4cb56f00128605 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67225
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template <class T, class U> 
index 62181768dcc68901e936f8073a5ba03febb48e47..f8d99ffe006eaf4323aa9ec89668e2e9c100ba55 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67225
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename Target>
index d08efb661f0adbf38f227807e09d62408e18c095..937098d394f8a2a09675ec3572719d5a83eb8ae6 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67225
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template <class>
index 0ef5ed872641edcd8497689c74cc8a42cb60462a..e37ad28c1bc1e73b3690b99a2ca00ee79901a97c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67225
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template <class, class>
index 9a25831f4a2808729ed91ab1790402a560d2c379..92f42982a3886ecadd58709bb4516e64ee58917d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67225
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename A, typename T>
index 6eb1c440ed4743963dc151d1c46a7e685d91229a..5399780cfbf27595aa0bcdea0c4db1ff21a50da4 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67319
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template <typename T>
index fcad30183d6c0c6222f146f7ee2bfb160bffdadb..fad43be6c5baf49036f5554a09fd1a2509505f1e 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67427
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template <class S, class I>
index 27ee205a7fc262ebb1f513259dadcec5f41950bf..5087344d2c9088dddcd7447982f7de764b5eebd9 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67427
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template <bool... Values> struct and_c_impl {
index 087f4fc83aea1172f785e18b765d68d6bdb0cd9a..530cb333f3834b5077bc62e8d190a6009575d62c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<class T> concept bool C1() { return false; }
index 35e92954414bd97dd1ea5eed73482cd5433e6fa4..392492214e2b08cd3d74194cfe37d228a35922f6 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<class T>
index 139ecd6d798577ab4ba973398a40c1c864f74e9c..c712d727235f2d078e6caaa88b76822a23357968 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class T>
 bool f(T x) {
index 44c077b16a1f05f507ea1517dbf35ba04321c753..27083371ae1fae54963ca47dc545d9d2c68cd61c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<class X>
index d28b44559bd3d785bf7a941298b0e5ca853f147d..c3c5c235455bee65026ecb574711751ff80618d2 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<class X> concept bool C() {
index d363c59f6d5726dc08b5cdb9fa7df9464339024f..5ee5c2dac8f348c42271f88cd3e8459a3516d4d0 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 #include <type_traits>
index fff414b8eb245825545481fd619d3025320998ae..64cd9d2d33642c88d063db36162c0ce5f829dce0 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 struct A {
index 8bad0319a05769e4668997fcbee319754eee47c5..693237fa78351357fb6dd6bf5de2c45183eb9a53 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 #include <type_traits>
index 222e528091318d4aea9400576ba0138fb35aed95..b42ce8b7c301192f753fe85093d4b76e6a48d5d9 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 typedef int size_t;
index 4f2ab510389363d5f9184138797679fe80823fab..b809553c07a518a02a8e110cf4c74d401cc118a0 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 template <class, class>
 class NumericArray {};
index bf95210384153e2cf6a26ccb1483a179090da373..bc679a71f9c1749931ab50ae2e0d80898c9c3277 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 template <typename t>
 struct S
 {
index 91e3c80653d9259597994ff0dea298f60f9e84a9..2dd46dae6d7dfca5937cc9a013fa8c782e6772d6 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 template <class T>
 concept bool True = true;
index d1416ebc99cde1ee88fcddcb39a13367e2816bd5..9fc90ff39a6b65e534215d36e4dc059b79ef29d9 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename F>
index 23ecf4de2bc5be298b5656b9511e9f12df8febd2..1fbda9f9ca0c516483abca597721075b4c59cba2 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class>
 concept C1 = true;
index f11d69f75fd203ef56b10f8559ae08b9273c0d1a..0a8715d91cca159e89c0492d728b353dd9448bb8 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/68683
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename, typename>
 struct is_same {
index 2d809e8591455264f1a2736848b16bfacae31ceb..324b3ad8b37e6029e1a58bb7aa93ffa9cf80e26e 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 namespace zero
index 5e96d0e7b7de42206de6807ae474b3f91dff94b5..1df563b341c5a92087fe0360bcb16d35715ec26a 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename T>
index c67e632d4438ab5ae11dc32b041eb672fe326990..d83440d49c6fc4027e627e40461914ccb1adc4bd 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/71368
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U> concept Same = __is_same_as(T,U);
 
index f31997c920da099ec1da47509019417d90e53438..aee27bc0c98cefa77abc075a77c7c0a188f57b33 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class From, class To>
 concept convertible_to = requires(From (&f)(), void (&g)(To)) { g(f()); };
index 4619cf993afd5e3bd619daa27b295ea3204d3db3..cdad62ca440be3dee7fb299065b952a9bf03f675 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T>
 concept Destructible = false;
index 40eeaa7d57bb83422dfb6a37be04886fee8f08e3..447b149b80cad52c62f3cd4aa28343fa180ccd5a 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 #include <type_traits>
index a99103c97dd59d894cbfe987608c130e6af6e5a8..5fdd64eb26fe3a4fca41e25489110372a3b6b578 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename T, T N>
index 69e2fbec4d8a5fd5ca70822ec62b6cbcb63e88f8..1a0008e7a98936d8ed58d92eeb0ed7185f4618f1 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename T, typename T::type>
index 34b96c59582b26d45a1abdd4cd52d4697891e3c8..92e89da545197b4267b719c55087cef881450ab1 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename F>
index f7438552ca9c4fa194bc040a0fcbed106540ea3e..81a671c7b1ab892e218f801b1da53d2748745f40 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<class I>
index 6e0f062c14bbc5034a420b88df195f1e0020d106..01a42a4e73fb4199ef0a22735191c931374f4163 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<class T>
index 83a9083cf17642022b43b0c869c2496069b3448f..b604f7e00bf18f703fd1fa65680ac95112504742 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 template<class, class> constexpr bool is_same_v = false;
 template<class T> constexpr bool is_same_v<T, T> = true;
index e40796f497554c9b9d4b4676ef833e29c68f793c..ef1d278e99bd64dae16b131bb14d701f7daed146 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/84551
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-g -O" }
 
 template<typename> concept C = true;
index b330e4be051cce8ed7d09996e3e14fa7e9a97008..8d7cb89f3f5905f91af8f321e02a1868c762f509 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 template<class> constexpr bool is_int = false;
 template<> constexpr bool is_int<int> = true;
 
index bcba830bc0dc3a3aa726dbcfa1ae1beb6f7cc852..f32ca63d5eeaa0701f41ef5412270979785d2cbf 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 namespace X
index 4428ee1796c4f355a466e8a5e3b4e206030210e1..6fb430d90a38eca60d226c70683163c0a8a17477 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 #include <type_traits>
 
index bcd4ba5407138a6ed5d366cbeb2b1c3d1e43f1eb..28be9e9e0ea4a09c7f158a41da7bf050b7fa4220 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename X, typename Y = X>
index ad24da9cb47e1de381e9481dc58e211a936ff8e5..1c25252d47b62b3f55e493311e5d3176da339a11 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U>
 concept Concept2 = requires (T t, U u)
index 9bfb896cc78dbc49f162110cf54b27f373075362..6df9b852fb1b49638f6fdbc2695c592ba4b30b24 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename I>
 struct iterator_traits
index ee83d560cf6c283a748537a8775251e62fbe4c78..22696c30d81676b9c3aaa176994290202b5cc64e 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<int N, typename T>
 concept Foo = requires(T t) { foo<N + 1>(t); }; // { dg-error "template instantiation depth" }
index d76f12eb209c7c1b234bec15f36d60710245676b..992fcbbfccb642e47abf57e5a10aa137948942d8 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Fooable = requires(T t) { foo(t); }; // { dg-error "template instantiation depth" }
index b8ca91647920d6754b6c01b3c5808da8f27d63c5..679f5cfbf696383954b0ba5b79b20a990d69fc54 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Fooable = requires(T t) { foo(t); };
index 7afd34d11fda77a71ba42ad74fb9697b95b3b0d5..03668d34384d728d62f1aa25d198c953fcf2d325 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Class = __is_class(T);
index bb0e3b0667f17244be471d87343afafc77a40bd5..0364d2e313833d8e9420a4674c27812485f8f901 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/66988
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<bool B>
 struct bool_constant {
index be6409ebad817ac59812c41f52c33a22c3c42034..816a37c10b7d8e8000b8f28b96790bab030d4311 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67018
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T>
 constexpr bool Val = true;
index c8e3cfd5c63bc1260a6cee15d6317f53a1d66279..2d8c2911a9c6d3f6b2cfad65752add5952342e00 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class> struct all_same {
   static constexpr bool value = true;
index 8ba3862583493bee139eb61ddd0b2814e60bc76f..062d22c5aeebcf93cdc19c3e94ba3e409c8f6b7e 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> concept C = true;
 
index e2893c061ded36cb6b872265224046ac06513cd4..06908a419e0bd082b21b2808e0956960310670c1 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept A = sizeof(T) >= 4;
index 9b82061af11c40cb6d6bb5971077306b81509e03..27af524f7ba12593a7b7a98294a3891736950237 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct string;
 
index b9532a36eb573b7f8a04e98a1d69fa28ccdb5d72..cb2ac5d93115be137abe886ff1b45689e035ebef 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // A poor mans Integral concept.
 template<typename T>
index 1ec1d59fc847786ae7ae388ed20d50c580427ec5..6b665ac52ea3a6abe5ec5fb0bc3c4e76a0371905 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Type = true;
index c97704565a1bd9186333e741601c6022b1c340b1..9d8ec94f696cd1ead5cd80f3f3b159e36fc31901 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept integer = __is_same_as(T, int);
index 071a838f754f007159ec69df938188733b1abae3..b020250da50d01a25f8c0725734b789dcf5cf941 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept check_c = false;
index 282dba63e293a69269ca3d512f2bc61809950d08..a9b422b5bac5e3ed130be3dda09c4f23626101cc 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Test the types of atomic constraints
 
index 089db2ba01351bc884bdda507151ee19cf615dd6..5f7aec5b2817e49580dce0611b0938528bfd93b8 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename ...>
 constexpr bool r () { return true; }
index 1d21cce7eee929fe17e58a1a72f60b6f8edee483..bc38b893c689b81a01139523f1a18b948d2a628c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94480
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T, typename U>
 constexpr bool is_same_v = __is_same (T, U);
index bbcba0d5806f6b9b3cb7f666f26566d6e32d6b0a..292ce20ee73ce4580de16884041236a7d0a17687 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Test basic expression requirements
 
index 61aa72d0452a680606d62c238e4883ef61bb405e..3153afa4c4de54b699c326f8c2eef70c74ccafb7 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Test associated type requirements
 
index 2f912b13d6ad52c920b10cd547811524e3cca5aa..976efe67c460adef64c60ed9706ae621dee7e113 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts -fconcepts-diagnostics-depth=2" }
 
 // Test conversion requirements (not in C++20)
index d98992503421f2162094c5cebd7d84b264d0be63..a4e4402a6cf6a52580e1bab0d1e702d86cda857f 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Test deduction requirements.
 
index 89057c4244121ed7c907555c30d83fb92176ea6a..8101d03100bdc690698cef73e82f16d08c6974ee 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/66758
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U>
 concept C = requires (T t, U u) { t + u; };
index 0d61a0ab313a8ec2f08f39b45dba2317395161cd..0170042b2adf178669fbd544b222a06b4d19e99d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U>
 concept C = requires (T t, U u) { t + u; }; // { dg-message "in requirements" }
index 3594176627fe833e1bcbafa6cbf66ffb29b5c5fd..c9ff9cace6ea70ee3bcda75235acf5eb6df1d8f5 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/66832
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U, unsigned N>
   requires requires (T& t, U &u) { t.foo(); u.foo(); }
index 1d005f059d0dd8478d330c39a450781d03dda4ce..84c9ae9d6dab9290ea84ad926c447ca69947258c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92268
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> concept Two = true;
 template <class T> concept One = Two<typename T::type>;
index 4ff401a98e9ccf0e11394843febbd9db69280039..39e0d7d8ac7519b9d42ad0ffeeeafcda2c8f9d2d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Int = __is_same_as(T, int);
index 239b485f717e678355749528a7f1b5309063e51d..047c19e95ac0efbe3307ce5a1ffc2cfaa3b809cc 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class>
 concept Dummy = true;
index 7c1d69b38d10234d57f4ae16c047bacc50693125..3bb2f576a873d645a4e65db97c827b1ef7714a53 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept Int = __is_same_as(T, int);
index 78b6f1c799bc19c59437209a26dc66d1486e66ae..46c50a6ef5c46af1061c0de356532699884cadc0 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept Int = __is_same_as(T, int);
index 47c8ef72c90721e7827e19beaea4284233aaea43..c7d9964f7388bc6c5042463d9d3693d0a7c2858e 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename... Ts> struct are_same;
 
index adcffed060c40d957219fdccd3b5eeccc96b3ad7..265d8947957031f9a2a21d8a99a250f349307897 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index d578b35408412a037c7ab5d54d9830ad9a724938..00cc21067ce7cbbcceecede99f6a9c56e7ba4c65 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept C = __is_class(T);
index 2bdd3d370c273e0b308a24427cfced4f7fdba8f0..18baac48e4dc894bc1cf3c9ad10d6d92c1fabfbc 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
   concept Nothrow_assignable = __has_nothrow_assign(T);
index b3acec15986accbd6693e1b256394114c2626ccc..1cefe3b243f237c8213beac0939164ebed80a27d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 // This tests the terse notation.
index f731bac8c2a3da6f8a466aced8a3c9c701607fdf..d28002c035ad73e0e615d6fb63743a8118a10b47 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 // Basic tests using function concepts.
index 434a5e2651b015bcbe7dd4db2c8adf802dc92447..9d47a7a083d05b86fe8cee2b46550632c5442d8b 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 // Basic tests using variable concepts.
index aa96621d9cf8ed3c78905d1f080c5b10503545f6..23ed929acf4fc79d4ec4db046c56f095f0fd0992 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 // Basic tests for introduction syntax.
index cdc40df4387a5d4bd07791137dfc2043a0d1f996..06244882167bbc9c3cd8f35e20ccd25d80b5c35e 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 struct Base {
index bf665aa6308998ee094148060c435f5e719ac444..597ad5e1ae1e712af441d520248404b140c9f8fb 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
 
 template<typename T, int N, typename... Xs> concept bool C1 = true;
index 733382db0f5bd0117da34dc87ef65ee943e9a9b4..adfecf85c13bbfed7d1177a00f4dadc2eeca8e2e 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/79591
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class> concept True = true;
 
index 5839207177c57ed19fd38a0578ac0fae4b885f3d..ebeeebf60bbd4334ff6a0d16f904930aefd31381 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Change in grammar for the expression trailing `requires`.
 template<typename T>
index a99343fc04df12a55e70e815bbf42ec2dc9e2e89..87adf8c7a69f7e71905aeae2612441ba693b8110 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept Class = __is_class(T);
index d3b45f7ddaa64e0a1fffefa293448c001a9387f0..04e7ee6f892f2bef33949507131fa02662baf0cd 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 concept True = true;
index 34dacade330ec6f1c3dfcfb641f4bbc6e1ba0341..4ccfd0805b7b7f7aed1f7a2ec240c669f533ee02 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U> concept same_as = __is_same_as(T,U);
 
index 388fad7514b55e530785986d7b639c89391ef0ad..5f08ae383ed8ead51c330a32cce98a2e6c076746 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> struct A { static const int x = 42; };
 
index 24ac2aa4095ab4f16035696ead1c22750c1ab913..ed8028f8540be6bfd1fecbacad4729509700d2a9 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 
 template <typename T, typename U>
index d69628b0318e02f8d2756aa452820ff62685194e..0524bb90a80ce9e4968251c93aa9a90685f114eb 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace a
 {
index 554f8a3328a3e3eeb90468922ee9e92a48024de7..531ec1c4c725f3a2222a96530b18eddf5101a41c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/67348
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <type_traits>
 #include <vector>
index 783cf4c7ef7fe2921433bdf5fb7433249b61abcb..b572650626aaaa6ecbcc2ce62f336e732937affe 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93257
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <bool, typename>
 consteval void test() {}
index 397cfb0f1a18496a9a7228c51271c2e34a38130d..7b3903c24eb0474aa858c7acbdd1b9865f51bf57 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S
 {
index d9461836970760f4e5bee4490c060983b9d9fe83..193ae93933dea2d98b5b8c34c1c87d6019607041 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S
 {
index 68ad69c186d17e3408cf6826a25887ffe7ac6e9c..ad03987f8902a63caa406db63ef661481229b1bc 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92414
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A { virtual void foo (); };
 
index e8ba63d9609c1fda105cee71c64450d4e698e965..c37753b05c5cd35219c8d52b5898ce58c5b4caef 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Downcast.
 
index c226292a07d49a0b34dcae22ae8713ca8c8df2e4..f9f82236d15f9ad540013f4b1079b4ac5abf3520 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Virtual base.
 
index 8dfa03a9cd59f9f3d178260db616e67b37ceb8f9..9ee93c334e9d8867aac1772287780c79ca4c83a3 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 // dynamic_cast in a constructor.
index 0ce9beb8d72b60cfea50a234618ff11d1039eb50..4aedf9893ada4c67a056390c50435029cd786ef1 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // dynamic_cast in a destructor.
 
index 203067a2581edae677f1b0fbed8feec12bb4e8ad..1df0772b499ac9c55fadcd340552be1b906ad644 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Adopted from g++.old-deja/g++.other/dyncast1.C.
 
index f739c6df94b815e4b470699ec86572dff248fe8b..cc1cadae3bc00669d699518d1a8e1529d61cc132 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Adopted from g++.old-deja/g++.other/dyncast1.C.
 // But use reference dynamic_cast.
index fcf507289c4de37b7d6e3222a900c0e04521ecd1..aed95c29585439e86b5ab24d4000e6b8cbb743b1 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Test HINT = -3 (SRC is a multiple public non-virtual base of DST).
 
 struct A { virtual void a() {} };
index f0394d130a3286eaf5323c2414aae2f4ae4291df..1d2b8cbebbf32e5c1c7fe4d1ae201a22e4571b48 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Here the hint turns out to be wrong: A is a public base of B2, but the
 // dynamic_cast operand is not that subobject, but rather a sibling base of
 // B2.
index c574e75510393473b5edb6bfd675f68db73b5b91..a26678e6ed766dc5f8f2ffb3765e193a7321aa98 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 // dynamic_cast in a constructor.
index 346f9f5647099201b7190cb8fc5a8367bbb33a55..25d98c2b661f31fa00456ec820e4bc116fe9c00a 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93414 - poor diagnostic for dynamic_cast in constexpr context.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Here 'b' doesn't point/refer to a public base of Derived.
 
 struct Base {
index aae03f691ca41bec49c371696062fd786077257d..2e5ea0e7eb4306d7f94be26a9c8f9123be0afd92 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Downcast, with hint > 0.
 
index c3e09808e3200fb315c473cd9c7423aa8e784e2c..9caeb241df617682f3c1ace5335dd78b66b6edb3 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Sidecast.
 
index 6f42d20ec4143bea6ede7f5bc86fd6d5247f4740..da647bfca5e3ab98d60246c8d3b1fac037d368cc 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 // From clang's constant-expression-cxx2a.cpp.
index 743b3018d2f3954f16f8f483663a630197e76eb3..77c7043a6fd18695c71d9b0bdf5eb909d2b848f6 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Multiple levels.
 
index 23434734e26bf46e383a908db80270c747ce6027..d67c3072b5445c250f4343f351c09f8f23e41e2d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Private base.
 
index d71497aae6d20ec25a6c3e16f252bb2889880446..bc3efd05bccbd9eeb4705549d67d6dc11065a61b 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Protected base.
 
index 8056f30bb993676e1c73d6a8c87cc8b774dc677c..1958cae441db840955d50bb5f0acd5e5e061997c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Unrelated type.
 
index d8cbb2f2f0dbef7e9c2c8a4b81c7ced016788460..7d42ffa5a78f51f1c77d5e71b050b9ecf0e8d57e 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Ambiguous base.
 
index ab7b89da9e899e8b52bd952c1b32fc4bc6135925..75984a2fdcb7335a13940a969a3e24cf4e68ab1c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Test basic use.
 
 struct S {
index 74bf8e6677bddab4bfbb80527ee835a698e91c81..3834457a276833c9cc9e213c08d0d6558ba13a1e 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // In c++2a we don't emit a call to _ZN3FooI3ArgEC1Ev.
 
 struct Arg;
index 1c7836a674aed1bccb8b362e9a24bc0114af5929..79ad61895b083758f7dafe30fea75f78da18f313 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   int i;
index 7d3d3729b31802be251b05f578fb845ba880b444..4eb8753906ab2a18e879291186a3603d3197f460 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   int uninit;
index 3d4460a0eb87fb91fc0189f43c947d343f72778e..96140e6c212b7100266b5b8bf693d345b34c77ff 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct E { };
 
index 6ab6abf150567d251fb6c795cc7fba187f45a55d..1335e51c853b2767975277096cf90a3e34f0893a 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct E {
   constexpr E() = default;
index f80d3f2c27c436d98e95a4d5e94269e3a6b76fa3..3cfc23a210e9655755eba9582ec59fd0c07169ea 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct E {
   constexpr E() = default;
index 16db2974f2a2c44618d58428b3be911170ed8e61..87de38a678d49e6d907e89c3da9963319e0f9709 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93803 - ICE with constexpr init and [[no_unique_address]].
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct empty { };
 
index 34d9fe58ecb8e49b1136ced6c2b593b9795f773b..ec362ad91605bce24c686c8bfa719d4001451c63 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93803 - ICE with constexpr init and [[no_unique_address]].
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct empty { };
 
index 541da1c023fd33cbede1fb44fcb085a1d7aef269..d0d0411f99dc06956b7f4a5b68e339c61283f9d0 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A
 {
index dd2735289cb669902b6570d78d11b5f58a9de90e..1c0c0183cd06c186f3b2ab06d44cd30b11a583bf 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A
 {
index dd614ede2c69be0806048e3769dcd463d3ada6f1..78f3ebd74f683000415e096b5caec9060b6ac1fd 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // This bullet in [dcl.constexpr] is now gone:
 //  - every non-static data member and base class sub-object shall be initialized
index 0d21f26da0ef4ce709018809f65e92256a2ab24b..a9e717d91f94b862f252310c0b630da46bbec690 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S { int i; };
 
index a2994f5272ca73aef90ab8b4f87665dbe80c0f93..a1634aab03125990a0528e539a29a5a3bb518bd0 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 /* We used to get the "constexpr constructor for union S::<unnamed union>
    must initialize exactly one non-static data member" error, but not anymore
index dd2741efa8c4152f1f4cbb46857d961dcd74dcab..2e62b5377b143966408529fd228b3c4a2a4500db 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   int a = 1;
index 0d5a4a79c904599d34ff8b83e203ab66f7d1b983..8bb9a9c8dbcf3041f2a583e5ec90cf1012f107e4 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   constexpr S(int) {}
index b44098cc89b122fefb33d5ea41c884f8da26ce07..1ac14c223194a2a9257d87843afd3f5ed386ab49 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   constexpr S(int) {}
index 5d1b7ef10192967734fbff3ceb91e7391277087d..a936c1e1294f41ad881f18cf15f7f3fd82f455a3 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 struct S { constexpr S () : s (5) {} constexpr S (int x) : s (x) {} int s; };
index bc5e6e5c78a9fdc989f93930c64cdbc5ad189dd2..6f6b11c2481ca3336709fa021b117029eb5f2a34 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91369
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 struct S {
index 2bf359a350f56628ac2c72f1c466ae95f32a1e14..5adf13e6a0452bb33ed99ff2ad05c84dec80d904 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93633
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 struct A {
index 04f75975c972c75f8c236651f6b8f63b2b68ee81..fcf398f000e60139e9e13ea18ce9188698610eaa 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93633
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 struct A {
index 21219039152b2db72fa53ad913b3cf407922b1b2..6762c24a34271fcc5caf149f75c9518595eb9568 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93633
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   constexpr A () : a (0) {}
index d3733e831b63edff05fd920f7a207266716b0c17..0c513bd9f1271b324d9138ad3fb71889285f7c6a 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 template <int N>
index 6e7880adcb204909e8c1c57669774370f8fd576a..70b841208f8460b417559a11a6b8ee7436d69b18 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 constexpr int *
index b9bd5ea19c176acd24d6f24296bd7b4664bac514..4be1bf041fa48aa7e49de2abec770fe8bec770bf 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 struct S
index b2b65f2ba8263f6d22224db8556246e8e283399e..2bb407a4b517d4d43fa891836a40d75e02e096d3 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std
 {
index 5c0c2b6f967fe4d04682eb28fcea877d4a4e1454..d51bdbb8269d8e0377267455943a766c35f6546e 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std
 {
index 5fc130e4432dcd1267c7b989e83fbb322692d516..bb60a8ee91bf3bd312a5284d082e2e2861c80ad3 100644 (file)
@@ -1,5 +1,5 @@
 // P0784R7
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std
 {
index f13da10443900c99c53f49dc36addcea99d7c237..e61323adaed220f860f68457bf4ec93c08394893 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91369
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 struct A {
index f99f0808f7c32c6475dd74fa67cb27620f202401..db45cdf72dc77389f377f50ff90d78c0f6bea18d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91369
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 struct S {
index a81f649b44b8438d230945251de7d41db77823b4..32f63a51e42068a1d3156835f80c630bd68306cc 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Test non-polymorphic type.
 
 #include <typeinfo>
index 51c8fb451b8e6a6594e7b0cf880233ce777b7e5c..495914f1cca20288777197a72789dadc4d43b903 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Test polymorphic type.
 
 #include <typeinfo>
index 38b9e609a9f7a6279d7d908f7e195880212e1ce4..e58026ac6203b2856e9837f359129d472acba690 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Test typeid in a template.
 
 #include <typeinfo>
index c38167ad798d7329b6872bab19e418b38549e8e7..ac8aa5f669cb8c7cdee9237b8356488818cc3f87 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 union U
 {
index b29d3f6aefb0630744caaf42864043214db3b468..db00a3f6f28c98319dc917646ce938fd8e85c82d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92695
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   virtual int get () = 0;
index cb55aa3bb5609919887d1ea7adc8aed327e24668..88229cfd8483e4fb3b97b5a6a7cc1f02892bc1e0 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92695
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A { virtual int get() = 0; };
 struct B : A { constexpr int get() override { return 10; } };
index 9d1c0289a62710262a88ec3cd310bb4364b39014..1dc00eaff6f7fcd12b3cb5b95706fefad1f743a8 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Test basic usage of 'constinit'.
 
 const char *g() { return "dynamic init"; }
index a50f285ecb1570eb9e778e28c95d36c2a7f7da15..b678788541ecb3b0b8aa607820016a3600fb68de 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // From PR83428.
 
 struct S1
index ab3715b2064deb7dc5d9f53171c9c8e5599ebf87..e8b3bcb570b7dd0e3d6f5876b73de275ee357782 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 int foo ();
 constexpr int constfoo () { return 42; }
index b5b736f87c20427eda3b43314af7c44b679f4340..cc6569b2277b241235372c485f220339e2e8d53d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   S(int) { }
index 72bfab667b8deeb65180e659b963b9fcf2695808..86a058b632cccccdb0f8ad1d65251f09307490ce 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92134 - constinit malfunction in static data member.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct Value {
   Value() : v{new int{42}} {}
index 325943343302e6faaf75250f29f6ecc3194d1e35..29e8b51326d4b07424c1176e13b6689610c93a48 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92058 - constinit malfunction in static data member.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct B {
     B() {}
index 1db16feafcb4eee73b86fa96d1a8b0a87a48d36d..a29c594657ac07f371b8498e58c03edd6351c183 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 constinit constinit int v1; // { dg-error "duplicate .constinit." }
 constexpr constinit int v2 = 1; // { dg-error "can use at most one of the .constinit. and .constexpr. specifiers" }
index 748a7ffa3a9c147693c34e27d2048a99f272d47c..0630e18ee0c0bf4a1fed213af4055e4b1ce5de6f 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S { };
 constinit extern S s;
index 3d21f48dbee9b0f621f7fe98309935f577e5ccc0..951c6fe1852f8311cbddc267af49686273cb87c3 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Check that we preserve DECL_DECLARED_CONSTINIT_P in duplicate_decls.
 
 int gl = 42;
index c6b2975350c1241687bd7ec2d11049a08fa26b63..50bc13f2ce9f98e92de3586507dd98c4dad63edc 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Variable templates.
 
 int nonconst;
index 4c7f89251698d82204a21eed663f407cc4f3c7a5..9c5c848f7fcb1a7824a5db1e181c8e64b526fcc2 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91360 - Implement C++20 P1143R2: constinit
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 // A run-time test.
 
 constexpr int foo (int x) { return x; }
index 442e8b74aa4d086d7f6f20dd0e6b6f7be67f9bdb..a931e34860472d738749b5060aad079d68ff9632 100644 (file)
@@ -11,6 +11,6 @@ void
 baz ()
 {
   foo ({.d = 5, 6, .b = 2, 3});        // { dg-error "designator order for field 'S::b' does not match declaration order in 'S'" }
-                               // { dg-error "either all initializer clauses should be designated or none of them should be" "" { target c++2a } .-1 }
+                               // { dg-error "either all initializer clauses should be designated or none of them should be" "" { target c++20 } .-1 }
   bar ({.b = 1, .a = 2});      // { dg-error "designator order for field 'T::a' does not match declaration order in 'T'" }
 }
index 7a036182062767a7a1e4d46f902904c65e726442..c993134fea0d4ccc4e5b3101368891a4214e75f1 100644 (file)
@@ -5,8 +5,8 @@ struct S { int a, b, c; };
 
 S a = { 1, 2, 3 };
 S b = { .a = 1, .b = 2, .c = 3 };
-S c = { 1, .b = 2, .c = 3 };   // { dg-error "either all initializer clauses should be designated or none of them should be" "" { target c++2a } }
-S d = { .a = 1, 2, 3 };                // { dg-error "either all initializer clauses should be designated or none of them should be" "" { target c++2a } }
+S c = { 1, .b = 2, .c = 3 };   // { dg-error "either all initializer clauses should be designated or none of them should be" "" { target c++20 } }
+S d = { .a = 1, 2, 3 };                // { dg-error "either all initializer clauses should be designated or none of them should be" "" { target c++20 } }
 S e = { .b = 1, .b = 2 };      // { dg-error "designator used multiple times in the same initializer list" }
 
 #if __cplusplus > 201103L
@@ -14,6 +14,6 @@ template <int... N>
 void
 foo ()
 {
-  S f = { .a = N... };         // { dg-error "'...' not allowed in designated initializer list" "" { target c++2a } }
+  S f = { .a = N... };         // { dg-error "'...' not allowed in designated initializer list" "" { target c++20 } }
 }
 #endif
index 329588be7ab56a0ac12b34b52ecd3a7383f1210c..210a5a54c348c90920d0c416a0170fe7a0eff3a4 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <new>
 
index 2592c0757a3314d065aa4665c91d85e4fb2ec2bc..10cb80acfd1709441153ab01bd4d68c24745be4d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88969
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <new>
 
index 112fb0ad67e2a5dfc913c93547e6d0f201ff5225..9cc495e6d725c9f0aafc8b78e4fba7cb6a6c0f6d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88969
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <new>
 
index c122cee4942ac482b303e604c97e44460fd8cc18..2bf0c09cefc6f5aa1897fddd32b30f0a75a16af4 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/90171
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <new>
 
index 9c3acc32ac45b4f4c208cbaeb4d9bbb73261fd9b..3e510feee23e377b6301f344fd16033af397038d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/89420
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename>
 struct S {
index e0058f6dc8727b823cd7dfd1d8d27f5ea51b1966..939456c93f04aa32e7879e91636a9073c5e99e2c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/89836
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct W { 
   constexpr explicit operator bool() { return true; };
index 6038c111eb077075ef468b6d32670e41e0506d64..874e4cd3e299bb4e299d620c2e4b08e3d16ae448 100644 (file)
@@ -1,6 +1,6 @@
 // P1668R1: Permit unevaluated inline asm in constexpr functions
 // PR c++/91346
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 constexpr int
 foo (bool b)
index b636e3b2d8759f415de3d84b63151c21cdec8bc8..a7476b1d9d1a48fbbda4100fdf936088437d9307 100644 (file)
@@ -1,5 +1,5 @@
 // P1668R1: Permit unevaluated inline asm in constexpr functions
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-Wno-pedantic" }
 
 constexpr int
index 378336989922b89c8546a29ad2be6ed5e9f43dc1..0e96a1a372911a918a002e2dc9fc97fc6977d481 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91428 - warn about std::is_constant_evaluated in if constexpr.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-Wtautological-compare" }
 
 namespace std {
index 3d69dbb8e9898cbf1df6de342f7b649c42c72910..ab1a4e42bd98fef2baaeb64f12713e44c44ee294 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94546
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> T&& forward(T&& t) { return static_cast<T&&>(t); }
 
index e608e9520bf92196e4c484d2fd35c471f0c62f4f..4430611376081120a804011c18d44aadef7d646e 100644 (file)
@@ -3,4 +3,4 @@
 // { dg-options "-std=c++2a" }
 
 int j = []<class T>(T t, int i) { return i; }(3, 4);
-// { dg-bogus "lambda templates are only available with" "" { target c++2a } .-1 }
+// { dg-bogus "lambda templates are only available with" "" { target c++20 } .-1 }
index bedba683671df0eeddb36948369979ff9f9eef80..de45742053012df723727af94910556300e4ec71 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94507 - ICE-on-invalid with lambda template.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S { };
 
index 8ee9b0327a5a6b898abad108c7b8e109353250d1..35abc9179e70e8f990b91803f037a2c7cc48f3cc 100644 (file)
@@ -1,5 +1,5 @@
 // Test lambda mangling
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-require-weak "" }
 // { dg-options "-fno-inline" }
 
index 89c63532831439d37d6f6c9e35bb83a035b2de49..e5942ac0550a1c585820ce1d4f0f1822fedaa4d2 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 void bar();
 void bar(int);
index 55d689dbc6797a044a0adf889f1f2bed1856f0ed..e950d6575740d92f549070705ebf523839a506c7 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/89686
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename... Ts>
 void foo(Ts... xs)
index e7c815b92d45b33e71499ca1524a86c891149017..b49e26dc7a38f8114ec5da11530d42e1230dffc2 100644 (file)
@@ -1,5 +1,5 @@
 // P2095R0
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "" }
 
 template <class... T>
index 492fc479e942a371e6fc685486aa9b1cf4f6e109..5fcf41b1a1f7658ebb9d94082d23484b545c72be 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94483
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<int... a> constexpr auto x1
   = [...z = -a] (auto F) { return F(z...); };
index b2d30d64e5a69bf9b1daa64c7383fa868ce04cf7..3e00e68e9060c9448981cbd7ca19548e6211f9b1 100644 (file)
@@ -6,8 +6,8 @@ struct X {
   int x;
   void foo (int n) {
     auto a1 = [=] { x = n; }; // { dg-bogus "implicit capture" "" { target c++17_down } }
-                             // { dg-warning "implicit capture of 'this' via '\\\[=\\\]' is deprecated" "" { target c++2a } .-1 }
-                             // { dg-message "add explicit 'this' or '\\\*this' capture" "" { target c++2a } .-2 }
+                             // { dg-warning "implicit capture of 'this' via '\\\[=\\\]' is deprecated" "" { target c++20 } .-1 }
+                             // { dg-message "add explicit 'this' or '\\\*this' capture" "" { target c++20 } .-2 }
     auto a2 = [=, this] { x = n; };
     // { dg-warning "explicit by-copy capture" "" { target c++17_down } .-1 }
     auto a3 = [=, *this]() mutable { x = n; };
@@ -16,14 +16,14 @@ struct X {
     auto a6 = [&, *this]() mutable { x = n; };
 
     auto a7 = [=] { // { dg-bogus "implicit capture" "" { target c++17_down } }
-                   // { dg-warning "implicit capture of 'this' via '\\\[=\\\]' is deprecated" "" { target c++2a } .-1 }
-                   // { dg-message "add explicit 'this' or '\\\*this' capture" "" { target c++2a } .-2 }
+                   // { dg-warning "implicit capture of 'this' via '\\\[=\\\]' is deprecated" "" { target c++20 } .-1 }
+                   // { dg-message "add explicit 'this' or '\\\*this' capture" "" { target c++20 } .-2 }
       auto a = [=] { // { dg-bogus "implicit capture" "" { target c++17_down } }
-                    // { dg-warning "implicit capture of 'this' via '\\\[=\\\]' is deprecated" "" { target c++2a } .-1 }
-                    // { dg-message "add explicit 'this' or '\\\*this' capture" "" { target c++2a } .-2 }
+                    // { dg-warning "implicit capture of 'this' via '\\\[=\\\]' is deprecated" "" { target c++20 } .-1 }
+                    // { dg-message "add explicit 'this' or '\\\*this' capture" "" { target c++20 } .-2 }
         auto a2 = [=] { x = n; }; // { dg-bogus "implicit capture" "" { target c++17_down } }
-                                  // { dg-warning "implicit capture of 'this' via '\\\[=\\\]' is deprecated" "" { target c++2a } .-1 }
-                                  // { dg-message "add explicit 'this' or '\\\*this' capture" "" { target c++2a } .-2 }
+                                  // { dg-warning "implicit capture of 'this' via '\\\[=\\\]' is deprecated" "" { target c++20 } .-1 }
+                                  // { dg-message "add explicit 'this' or '\\\*this' capture" "" { target c++20 } .-2 }
       };
     };
 
index 8a1703304ab82a1612aef075759c1114828f45f7..816b6e994def76e9bbae7bfdd24217b89637eb21 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 typedef decltype([]{}) C; // the closure type has no name for linkage purposes
 
index a04262494c73e5e5dc5b65e7893589c431979328..01ad27f11515dea0a9ac66f7f624ac4fe5c5f2ba 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92010
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T> void spam(decltype([]{}) (*s)[sizeof(T)] = nullptr)
 { }
index 24d2e701e44751cb9231893a5d4ac47b2cc614e6..c66c6f8353f9b09f55b3fd546ee73e496ba316d7 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94521
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T>
 void spam(decltype([]{}) *s)
index f29a59e26fdbf5c9157614e3136ac9cf8b7b3588..d8b20bdc2a42a350d0915ef3c85fc11fd70cd553 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // ill-formed, no diagnostic required: the two expressions are
 // functionally equivalent but not equivalent
index 3c9b1e1cd4523c0613a8f3828e140253ab471bfc..994d184b643fc93f0819486be1eff2e888e01024 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <int N> void foo(const char (*s)[([]{}, N)]) {}
 template <class T> void spam(decltype([]{}) (*s)[sizeof(T)]) {}
index e75a1270c72a21b3b628ef744e55875967f33c12..f12273910d31204dbdd028af07288b3641d64a17 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do link { target c++2a } }
+// { dg-do link { target c++20 } }
 
 template <class T> T f(T t) { return t; }
 using L = decltype([]{ return f(42); });
index 7fb05c3ce9c77418587e57ede2b3a4ea68306670..dc19004d3a1d39f402d8e103d7bc191967b814f7 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 using L = decltype([]{ });
 void f(L) { }
index 0396f9ff10d48a9a4adc650d0f23d91f222b5cf9..7d5aa316e93063dbd28ea6f84af245e894853d0d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 static decltype([] { }) f();
 static decltype([] { }) f(); // { dg-error "ambiguating" }
index 41028824ce88295c5118733b56c59ad94a76514c..efe3691d8c9ee390f4d21683ef7959edb11bdc0b 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <int N>
 struct A { };
index 3692154f9becda7b5f966b8365bb26303ea6150a..966da0cc3fa1d0039ed2c24a7650b7eb95f88330 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <auto N>
 struct A {
index e32d447819edbeadd09c71862ca408ca1f6d03f4..f512ae7a0f7a874786062977c083a43ed37a80df 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 // { dg-additional-sources "lambda-uneval9.cc" }
 
 #include "lambda-uneval9.h"
index 01e41424bc7aaf74a4594e411d5b8f93d24428ad..e7024babe541243e6007b761de4cfabaceaee9f3 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <new>
 
@@ -8,5 +8,5 @@ namespace delete_selection_d {
     void operator delete(B *, std::destroying_delete_t) = delete;
   };
   void delete_B(B *b) { delete b; }  // { dg-bogus "deleted .* deleted" }
-  // { dg-error "deleted" "" { target c++2a } .-1 }
+  // { dg-error "deleted" "" { target c++20 } .-1 }
 }
index 314e2e9b697c1579719e425827e6965396557ee1..5db55c4198768abb048feec6873e471fbc2eb52c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <new>
 
@@ -8,5 +8,5 @@ namespace delete_selection_r {
     void operator delete(void*) = delete;
   };
   void delete_B(B *b) { delete b; }  // { dg-bogus "deleted .* deleted" }
-  // { dg-error "deleted" "" { target c++2a } .-1 }
+  // { dg-error "deleted" "" { target c++20 } .-1 }
 }
index 9b5f2cab47b020498e4abe28e753488e631ac46d..a1cbe52124b595dfd987c6d05f135e0fc1a6e01e 100644 (file)
@@ -1,5 +1,5 @@
 // P1094R2
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 inline namespace A::B { // { dg-error "a nested namespace definition cannot be inline" }
   int i;
index dd019393f28319c3782eebe463e3a3603fbc515f..9cc8b94abb4016735734177a3d951e1236a45034 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 [[no_unique_address]] struct B { }; // { dg-warning "attribute" }
 [[no_unique_address]] int i;       // { dg-warning "attribute" }
index a5c2c6514cf38658bf5d9f441529ed72485a02d7..9af4e59c3dca5a03145fccd7b7e7baf8014612f0 100644 (file)
@@ -1,5 +1,5 @@
 /* nodiscard attribute tests  */
-/* { dg-do compile { target c++2a } } */
+/* { dg-do compile { target c++20 } } */
 /* { dg-options "-O -ftrack-macro-expansion=0" } */
 
 struct A { [[nodiscard("bad constructor")]] A() {} };
index 78349715aaea4e2d5b3333aa828b2315eda0c63b..c810fd0daad2c74ed7f4d6b80afca1c58d020dcf 100644 (file)
@@ -1,5 +1,5 @@
 /* nodiscard attribute tests  */
-/* { dg-do compile { target c++2a } } */
+/* { dg-do compile { target c++20 } } */
 /* { dg-options "-O -ftrack-macro-expansion=0" } */
 
 [[nodiscard, nodiscard]] int check1 (void); /* { dg-error "nodiscard\[^\n\r]*can appear at most once" } */
index 76692e732c4fff9aff771d01b07bab757bae6b29..d81baf0ebcdbcf72b2c0a859681b40e66476ff4c 100644 (file)
@@ -1,5 +1,5 @@
 /* nodiscard attribute tests  */
-/* { dg-do compile { target c++2a } } */
+/* { dg-do compile { target c++20 } } */
 /* { dg-options "-O -ftrack-macro-expansion=0" } */
 
 [[nodiscard(123)]] int check1 (void); /* { dg-error "nodiscard\[^\n\r]*must be a string constant" } */
index d42f4dc7bbe970020537de33911c1f3f80b62826..6104a5ffa085bee433f8da872284bcd259143680 100644 (file)
@@ -1,5 +1,5 @@
 /* nodiscard attribute tests  */
-/* { dg-do compile { target c++2a } } */
+/* { dg-do compile { target c++20 } } */
 /* { dg-options "-O -ftrack-macro-expansion=0" } */
 
 [[nodiscard("not", "allowed")]] int check1 (void); /* { dg-error "wrong number of arguments.\[^\n\r]*nodiscard" } */
index 5fda058c9eece681d261a3e7dcd9d68a75653620..2db2303c72d244b0109215134d5760c8b35bbe2b 100644 (file)
@@ -1,5 +1,5 @@
 /* nodiscard attribute tests, adapted from gcc.dg/attr-warn-unused-result.c.  */
-/* { dg-do compile { target c++2a } } */
+/* { dg-do compile { target c++20 } } */
 /* { dg-options "-O -ftrack-macro-expansion=0" } */
 
 #define NODIS [[nodiscard("exact_message")]]
index a3334fc7d480f5a1f5f1aa1a9db244dd8b42db3d..8f3b32948d08175d52c33e87cca2b19cdc220040 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
 
 struct A
index 5cc179300ca52b74715a6c75861e2eb3410ea090..31520c8de1ba85ff6cd2a8e9887770e7548013de 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88196
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct C { C *c; };
 template <C> struct D;
index 8a06d23904b901f0c6b60e50b96b181c9001b50d..502a835bc966d24fde50dc6504a55304cd6b4091 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88538
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   unsigned a;
index 11f8c12f3ffaf63c790adb2feb60ac4aaf7c2070..824f0b40141f52185e9f79f7b88e28d3a0ad0166 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88744
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #define SA(X) static_assert((X),#X)
 
index 14c601ba04017b9129b36cf43c16f29713ce4ec5..035dbb161e94691f0181f274c21d9bc6b52a73a0 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/77304
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {};
 
index 9cc14460734dde7c839a757687425c9d5512efaf..3d451a90b11124941a32a6e3d857be3c972021bf 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/89532
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct tuple;
 
index d684785a77f63175bb0949bc2724f9b7121986be..1142974495dcf4963fdc18af82b4c03bb305ffed 100644 (file)
@@ -1,7 +1,7 @@
 // PR c++/89833
 // Test to verify that the same specializations on non-type template
 // parameters of class types are in fact treated as the same.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A1 { char c[5]; };
 
index 3afb5d24261b650d885f774153b051fcbd07c881..8ed742ff625e8dbf65c7080b9ebb6fbb8c9ff7d6 100644 (file)
@@ -2,7 +2,7 @@
 // Test to verify that arrays of null pointer to members used as
 // non-type template arguments are interprested as null regardless
 // of the form of their initialization.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-O2 -Wall -fdump-tree-optimized" }
 
 struct A { int i; };
index ca5f68e16114ce8caa909e1a9edec736172dde5d..2e1433939dc8333c25592176661addb0affd5b52 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<auto>
 struct S { };
index 22f47884d08ec6a7c275a9882a88457c8c0dcf66..5319ca1e583c905e24382f8c6273e8cc37f7578d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/90101
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename List>
 struct A;
index 91267aca3839bf4c0b27929c87562d893f0e292f..fe87ffc5404ec013e98c2a9299e354208a6cc7ce 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/90099
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct Unit {
   int value;
index 2785f9475448a919722eaa897905ce0fa3c480d2..6811c2741bbb85f08a12b3adfa8bf3fd20730d60 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   int i;
index 5d3479c345e9b8e44791ab28835d1011438cc848..4b4d32989ca67f571a83cd7879ce6f95a57211b7 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/90098
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   int value;
index c58fe05b9dd9596f9890a3131f436d01d53e4937..7f3d3620fef4977bac759d9676adb87b480d0fab 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/90101
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<int N>
 struct A{};
index 026855f0bc65e08850b538f94da47faca7e1eec7..193095b237d5341d2a99dfd1bbaf2efc04682d98 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/90100
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 inline constexpr bool is_nontype_list = false;
index ab9e80fd335d97fdd4bc7eeb2cbf1e76dc2f13a0..134d1bf4d984517ec99140362015ba3171a22905 100644 (file)
@@ -3,7 +3,7 @@
 // parameters of class types are in fact treated as the same.  Unlike
 // nontype-class15.C which involves only one-dimensional arrays this
 // test involves arrays of arrays and arrays of structs.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct AA3
 {
index aa96de36a80fa13b385881df2015b57685694bc6..6c703b7f8ed14dc30324a606e34f6bb99f3fa78b 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92150
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct X {
   int value;
index 67d6f0949684437a9c5dd4a8e4e7009600881436..279d4d00e36c1cf194ba3564492d545dbdbfc16f 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct base { int i{}; };
 struct derived : private base {};
index 315e0ac23098676c461e9944e73568ce3b3249b0..7707f439aadc99821167dc71c369f3c5f1b90f17 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct p { unsigned p_ {}; };
 
index 23eae64c64b6fb74894ba182221cfafd9e53e690..ae64fac81c23b61f7716e769a2da19aebebf670e 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92965
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<int>
 class TS {
index 80b9b4993555564703db08157bdcc815db7aa098..a8b05fe8380263852096e2772b7fd1fe447b38fa 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92948 - Fix class NTTP with template arguments.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   constexpr A(int) { }
index 2d2e9690a06e67eb7b3d73dfc9e5136c8a2f21ef..a3c1446af5d927f1204b658fd532e42602e0978b 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92948 - Fix class NTTP with template arguments.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 struct A {
   int i;
index 0c0fcf6be337838db76babe2904e0eb0de3e68ab..750accdd5256e49601accb1b84e11f0faf949045 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   int i;
index b2e174c7fd35e8569ad0ac9ed519fdfb1d266ab3..44b8338b0ae33b8c6b5296a5d5836e771fa05f37 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91754 - Fix template arguments comparison with class NTTP.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {};
 
index 329b3129e1b17064f9d76c77bcf0d735146aa740..dbecf91c46d322a8ed727557df041eb9613e6476 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88092
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 struct S {
index 6a4dac5c90e873aae31a78c9ee3d4bf884d8501d..9c6d6f93bda9dddb83690102d5ff04ba66bfb7da 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88819
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T, template<T> class TT, class R = TT <0>> struct A 
 {
index 1b9dfb88918bd401a374ec8a6d18ca07aad7cd35..7a1b9e66f0c6cbbfcad75af0c56142bbb7eeeee7 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/90938 - Initializing array with {1} works, but not {0}
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-Wall" }
 
 struct A { int i; };
index 2d3ba018618dd9d9d4362f6e359d0bb1cc05326f..acbc62151f80cfdd370c48fda83b0a7a981f124a 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94592 - ICE with { } as template argument.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   constexpr A() {}
index 78cf0a39c81664a7e8f85106a95cfb0be55db18e..7d0126c64fbc599a7f1ddb771d59684106013a3b 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94592 - ICE with { } as template argument.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
     int i;
index 1c1e23c10a87c4dc57a209ad2c77d5ae2a47c7a2..8371eb96621f780d3e66c776bbb5d7e3a9c95807 100644 (file)
@@ -1,5 +1,5 @@
 /* PR c++/94510 - nullptr_t implicitly cast to zero twice in std::array
-   { dg-do compile { target c++2a } }
+   { dg-do compile { target c++20 } }
    { dg-options "-Wall" } */
 
 struct A { int i; int f (); };
index 5649fa2e6dc180dd3c1dfed9b537f4dcfb27b9a0..f5e9826d243109aaaac00419426df7d3bdc0f7ef 100644 (file)
@@ -1,5 +1,5 @@
 /* PR c++/94510 - nullptr_t implicitly cast to zero twice in std::array
-   { dg-do compile { target c++2a } }
+   { dg-do compile { target c++20 } }
    { dg-options "-Wall" } */
 
 struct A { char a[4]; };
index fc0e7c9655de9a7762acdd4c14ba75d16a0af7d3..6235fc8f3f529330aee4353e1edb32b4b8c7c26d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T>
 struct A {
index 8c39cd72715125317d7a75c12281228f9f06dd7a..67c57099f741032ba593008b5a4e712d4bad89cc 100644 (file)
@@ -1,5 +1,5 @@
 // Example from P0732
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class T, T p> class X {
   /* ... */
index 246fab6c17869ca54f51e1d8d9c50876e73e505f..377a151d343e47795957870f903e8ed4097c1024 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   char ar[10];
index 15389e185370e485f9d9bed2c3b5b48bf2805b38..436f4fdfe1121a25de8bf1f71e5fd87d31cc9a4d 100644 (file)
@@ -1,5 +1,5 @@
 // Example from P0732.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   using size_t = decltype(sizeof(1));
index 47fc9c7f5c0ccd8214802cb36bdd31a893665ade..af22a9389be00f88fdcd7ddda2530bf853ee8348 100644 (file)
@@ -1,7 +1,7 @@
 // If the entity is a template parameter object for a template parameter of
 // type T, the type of the expression is const T.
 
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U> struct same;
 template <class T> struct same<T,T> {};
index 737f712be4701772a09467fc02272cb3cd4a40de..d62be58d57d257e9960e57a35633f727a1781bd4 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88216
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <class T, class U> struct same;
 template <class T> struct same<T,T> {};
index a54b2ccaf6dcf1f9047922b24836fe9a778d4811..316c162dd525b512e9564fef583b2544153815e3 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 struct A {
   int i;
index 5c70d9d59eee97631770057b664507b0008e4e96..8e635de4514bf11ed7b8cd50a259afbb9a8925d2 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Test from [dcl.init].
 
index 82ca26695451e9e42a3767cd07145cd5dae8bcb8..638e9c2ecca9a07f5469f468850f8b4d63634829 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Test ill-formed code.
 
index d7be6f2b55da5500dc7c62cbd43ca17a98ee2df5..c53b4b53542808b9349e835243e2c3792a6368eb 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A;
 
index 4b9107c70ff42613f7f2e99e443f17f151627d3c..31c7d4e1669c2daf32c7457d8bce66fd3efd4296 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct X { int a, b; };
 struct Y { X x; };
index 4311dd4df595541185f76a35b0f6ba0177a84487..ddaea8fd90d904b203763dcf23c2abc52899a632 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   int i;
index c8ed924877e823b29244bd9e78de235c53bbf250..dd991aec8c872ae2a5be3f16fecf994401689e55 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S { int a[2]; };
 struct A { S s[1]; };
index 0aea493f2145fdc7c74239557609999ee3306b6d..40a65a573cfad2e8d47cc90bffe69d6960812352 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A { int a, b, c; };
 struct S { A a; };
index 73643fa3aa2ffe364f7c0f383ab9c3a205332466..065e16a21bef6ac7d60386e11a4f960360398735 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   int i[2];
index e9e90d7acb6a7d7ba33b37b7a5c4012598fc8d6c..f1221b286e8767d206b7cb10cca1e0627c058d2b 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 struct A {
   int i = 0;
index 05da7604686a87c31f2a0620b4bca6646606d123..4dcc94d5630f27d9d0ba038d000a4f4074440641 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92878 - Parenthesized init of aggregates in new-expression.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // Test new TYPE(...).
 
 int f ();
index cfd37193f6685ccc4790e561e38118f2086170ea..f8e6c4bee1c88abb338c736b980698cca506e203 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92947 - Paren init of aggregates in unevaluated context.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   int a;
index 1b2959e7731cd04a3d6158557951b4746ea2c80c..ac7ab9c58084bb92267d5a82dd7d485a38ce7b37 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94155 - crash in gimplifier with paren init of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S { int i, j; };
 
index 6038f63be5ad0e6e5e9ee203be9cf0052b6de39a..b6761ddb85d79a2d62bd709f1d8f2b3a52a75a09 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93790 - wrong paren-init of aggregates interference.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   int i;
index 4e97bbc5b561e9a5199d6f289bb6dd4be99d4e1e..261bcbffb456479edaaf945b68941678fa02e8ed 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94149 - make __is_constructible work with paren-init of aggrs.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <type_traits>
 
index 53855a9ef9ead0ccb63a6c18c1ea3d2bc264f52e..011ff318536d8e724233ef68b8d0c9a097653c45 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94149 - make __is_constructible work with paren-init of aggrs.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct nonaggr {
   nonaggr() {}
index 0b98ebf43bb65ba094cb232a73778eb85fb93851..cf1edb6bdf96ec6b2eb248a986225bd9dd1d933c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94885 - paren-init of aggregates accepts invalid code.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T, typename = decltype(T(0))> // { dg-error "could not convert" }
 void foo();
index f444005a09fe5974088dd04b5059bb34b75bd96b..ebfa8db033a9a6f8f1d57759b50f290b53466c18 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 class a {
   int b{};
index f8c7bd10b63c27eecabacd5077a973b4b7cf2d24..0bfddf0bbb83deb65ad418eaf63c969873b18308 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 // Test T[]().
 
index a64cb00ebbc34966dfb55c119917814d6a1d8984..6d2efd70731ffdf782cea220e9fe0855ae996cb5 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 union U {
   int a;
index b5d97dcb3d8eb83107835f939a771226bbbba84c..96a3284452857e96dfb58f4305e91b56336cc7eb 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Test that we don't perform lifetime extension for () init.
 
index 32af1a7265ceee7f1895020d6e6e9f7cedbb1704..81f909e943b3380da8d2cc594fc67d72a741510d 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 int h;
 struct i {
index 30e71650bc9298b4ecc7533648cf0e856015ad43..6433c17f55d6462c79696b774397435d5b9e7eb0 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Test that we don't accept designated inits in ( ).
 
index c44b206feb842036d03e1e726e3adaf7b035e2ef..7058d274c1d35a765e269bbdce74d597b8b9ba94 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct B { };
 struct A : B {
index 54faf385f11aa21d76f7982296c360ae4a9f5c6a..2da38142bf07ec29b70244824b9e5a527ceb0ba8 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-g" }
 
 typedef __SIZE_TYPE__ size_t;
index d558d45f5783086554607ca0537b3bd44f424a9e..8d59643037b4f9f3c43fa059301a8dec7d806d6f 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-g" }
 
 struct pair {
index c06847e67c359ff32ea3783a372769315a5f7810..8ef9b1e2830276fa63b0be0effe1cef5e254c6a1 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename...> using A = auto; // { dg-error "not allowed" }
 // In pre-20, the error is "invalid use of auto"
index 9d008f19feac6789aa2d84230fc1a96cb64419bc..6ccc7e8507bda90a2b02cde7e884c05f419ddad2 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A
 {
index 02f92b10aef091e9517301cb81addd805f649ca8..2610864f29cb0e5893e8c43ad5af43af1e47e404 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/93650
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   using type = enum _Ord { less };
index bc673b2e0204587196877cef0141ea4d0c4bc30f..217e34fe79fc9737ab428e874e4c6c0510ba293f 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92560
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <compare>
 
index 19a03fb04dfc430f010342a888a6ece5c4244f99..88e2d36988e8f550c7f563063e6a2de08960c13d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 struct D
 {
index 7e98c472cd1b4abf73e513862dc5e086f9034fd9..1e26e57f06537550b490d6e715c6e66dce55f2d8 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 template <class T>
 struct D
index 06b988f6e57e398001cf3c1aae71fcf5c2bf3232..8de75bd2f3b47caf3edc24ac9107595f69559600 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct D
 {
index 490726de56f13f35e840955aed8430468a08273b..d31faef095d0dac0cf9feb883fb5807fa4914f34 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   bool operator==(const A&) const;
index d89fc885e5013aa064a73eea88a02bf7f5b92b90..66b228d07afda6dbd9e3db9095380bc86ce34b20 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   int operator==(const A&) const = default; // { dg-error "return .bool" }
index ac24f366c94d496c4091248211ab06f6cd3726d2..429d31a2212406f65756d3e951a833cf72e7ac70 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A {
   int &r;                      // { dg-message "reference" }
index f804e133714124bfa6c22a46709c1923cd647750..265d075ab18d38f8fe46b40f521320b471b100c7 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct A
 {
index 8112eaa4f80a4aebc86090c11a3e4004d45cbd04..b1351886176b3e35c869ff3efad4a3d78d60f793 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 union A
 {
index aabbd324d862aacf9364b33c2d3eb4d55ae1ccb7..61bcde55d1c1e0af54b76758723146a63c100ef9 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92966
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct S {
   int operator==(const S&) const = default;    // { dg-error "must return 'bool'" }
index 4f5df2264104b96ea16a1c08e83827f1709dbc84..5533481a61b12c79d4a2a006b49a92ec7d4f0e69 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94462
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct strong_ordering { };
index ce7b56ce57415e699b7eaa289447dcba22366cba..905b60086d958eefa1561e6bd8337e2f8d2bc619 100644 (file)
@@ -1,5 +1,5 @@
 // Test that we suggest adding #include <compare>.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 auto x = 1<=>2;                        // { dg-error "" }
 // { dg-message "<compare>" "" { target *-*-* } .-1 }
index 6461c6ab60a782e7155e4e704fffe8026c049614..56ab343c9a7aa00154e89fd4d0e46ec7074fb648 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <compare>
 template <class T, T x = (T() <=> T())> // { dg-error "31:0 <=> 0" }
index e756ebca94587801e38307d9f751a0220c00410f..825bd7032a79aee6ca35b4ece1f30c2666b8ba05 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std
 {
index 00f90ced25554928fc1d2251effabbcaad57a3f4..b044914bbfccaabaa7ea9afbb5741cc29b524aa0 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94478 - ICE with defaulted comparison operator.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct B {};
 bool operator!=(const B&, const B&) = default; // { dg-error "equality comparison operator can only be defaulted in a class definition" }
index bb60302622f7262de2d8600aae86090a48c55353..c4030cd2f4d684693c56e2d8ba5889441b2d8b1b 100644 (file)
@@ -1,5 +1,5 @@
 // This should continue to work.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class T>
 struct A {
index ef29cffbd0b92d10bcce60c2faf60f51322e8bad..d0e4a89222588c3c910a4f7d0372d93240c1201d 100644 (file)
@@ -1,10 +1,10 @@
 // Test that very different operators still cause ambiguity with reversed.
 
 struct X { operator int(); };
-bool operator==(X, int);    // #1 { dg-message "reversed" "" { target c++2a } }
+bool operator==(X, int);    // #1 { dg-message "reversed" "" { target c++20 } }
 struct Y { operator int(); };
-bool operator==(Y, int);    // #2 { dg-message "reversed" "" { target c++2a } }
+bool operator==(Y, int);    // #2 { dg-message "reversed" "" { target c++20 } }
 
 X x; Y y;
-bool b1 = x == y;              // { dg-error "ambiguous" "" { target c++2a } }
-bool b2 = y == x;              // { dg-error "ambiguous" "" { target c++2a } }
+bool b1 = x == y;              // { dg-error "ambiguous" "" { target c++20 } }
+bool b2 = y == x;              // { dg-error "ambiguous" "" { target c++20 } }
index c068b5ab2949eca3dc68c507598df9626ba1b397..f3488ea07541b83d9f1a6d1af82a19964cd2911d 100644 (file)
@@ -8,5 +8,5 @@ struct const_iterator {
 struct iterator {
   bool operator==(const const_iterator &ci) const {
     return ci == *this;                // { dg-error "deleted" "" { target c++17_down } }
-  }                            // { dg-warning "reversed" "" { target c++2a } .-1 }
+  }                            // { dg-warning "reversed" "" { target c++20 } .-1 }
 };
index 182bf2b909260d992edbc8e6b19ebb005ef5c5bc..6e08acf2b2081588c8ccfa179d727d7c26118f18 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <compare>
 
index 0d1dd63d36835c88701f01af987dcb1fc47fc6e2..c4971aafc03f98e70d7508ea7f3d32dc0ab8bb26 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index 552c92aa5bd3a45ada765da3255a5820135cb71c..3607c81666415d1d8a9138c09b63e8f3c4d46d99 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index d3cb0a6b0f0a8513d74427c7c21c7b828cf16b3b..9d96944399ab05549b1e7b7c7753efe05a413403 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <compare>
 
index 7dacaf4b81d03885262fdcbd3aaf09b742bb471b..e6baaa262c7498fb7889d621de537d9327191fe9 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-fext-numeric-literals" }
 
 int main()
index 6a03f54b91aee6ecaf6bd7eae0f4f2e34edc84a4..eb199186153afc22c4d894c653779be5277ded57 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // missing #include <compare>
 template <class T, T x = (T() <=> T()) == 0>
index f9b2dc449e2c0a7067df7b410b5f7dbaa11c79aa..6c35f70ea6cebf6f0c9356a66f5af8aee372113e 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <compare>
 
index ecc249a67b7adfc6f7b8758cef62af269ef84282..486db6cbbf9c047cbbfed89ddb37e48ccc83a06e 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92774
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <compare>
 
index 45ce4ee047a4efcac6c7bd5e218ef1275d3a75b3..a4d8b32922fba9e904ddbe5a236a3559f882a088 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/92496
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<auto V>
 struct A {};
index 2a35de99e09dea14154a22f6a90eda3ae259bfc9..1872fb5382ca364d2ad2a33e238d0275623375cb 100644 (file)
@@ -1,5 +1,5 @@
 // Test with all operators explicitly defaulted.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index 32314579dcbc403ba44ba85fb5d86d293bd9e2fa..899a83c80b31a523f90f4a63085f149853148e02 100644 (file)
@@ -1,5 +1,5 @@
 // Test with all operators explicitly defaulted.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index cf23c9771e01328952c4d42eda807e755afa9eab..e6401d29ef0d89de52ee3ca9786d6cec6c28bbbe 100644 (file)
@@ -1,5 +1,5 @@
 // Test with only spaceship defaulted.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index 11fe32f86dce5bc8e8564078d8a9f7c76a179a87..959e376b446730e7767e3bf0b12f21582950373c 100644 (file)
@@ -1,5 +1,5 @@
 // Test with only spaceship defaulted.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index 2632f525aadc0f68a8a1520ef03a1d145eab010c..65915ce6c0af112f805781bb1e8df6a7b1348cf5 100644 (file)
@@ -1,5 +1,5 @@
 // Test with only spaceship defaulted.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index 0fc5aa2c9b84b839950fc0af24abdda3a715193a..aac0013725d0fff26c8945f1f4a09a3d86c02804 100644 (file)
@@ -1,5 +1,5 @@
 // Test for reversed candidates.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index 89f84899fcce8d462ce5e1d5232161f23e8faf55..20da546d82a631ce9f90f8adcddc30022eea786c 100644 (file)
@@ -1,5 +1,5 @@
 // Test for reversed candidates.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index 033578122ae006b94f5a74548fb89106eee29178..291f6e839cfad9c99ee8b0d74ce08328f9fe154e 100644 (file)
@@ -1,5 +1,5 @@
 // Test with all operators explicitly defaulted.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index 8e4aa864b27de1271d9ce261b3aa109157d44258..49f88f6f69450413076393f87864dfe8db5bcd33 100644 (file)
@@ -1,5 +1,5 @@
 // Test with all operators explicitly defaulted.
-// { dg-do run { target c++2a } }
+// { dg-do run { target c++20 } }
 
 #include <compare>
 
index e8296bbb60a866ed2fbff243d7296fd40c36b009..4765601f2390797420f44ecfdf613eb83df8a731 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94583
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std { struct strong_ordering { }; }
 
index 86b661ca6e00db42bb1b618e8b65f4498a3aefc9..7cb201416f9206281951b70c94fbf2c26b5d7eb2 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94583
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std { struct strong_ordering { }; }
 
index d0d68c7fa6fe24e7a0bc9a5c98afe6cbdeefe59a..bd1c4d2af2f0b559f485dec7756c3edb5390eb1c 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/94907
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std { struct strong_ordering { }; }
 
index 83547691118da249d11bc99523386b0b741f12c0..bc1ec63113a5848d023fcdd3d03eeb97b771184b 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <compare>
 
index 1ff39549973cf4d581f470000d97f1beb9d3c196..400d9931b6688eee0a8adf6eb62c28d613f3275b 100644 (file)
@@ -1,5 +1,5 @@
 // Test explicit weak_ordering.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 #include <compare>
 struct A
index c88bc146a5db9e4ef469d1a881ec5a9847fac10b..6e19ff77756becf2466cdd10258b321267f6bdd8 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index a27016d1e3646063889a3b23a92f20d5baa8f4c0..1be78d9f7bd09b931d0265ceba1c96304d77db9c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index 742a8925e549355f702988b2800133268af5c374..abc850fcd43debfe2747bda5c1489ce6dd3079b6 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index 900e5a8cab8835986dddad016a24a6b2e9a34c17..49a7e569b7fc47e0888c7e49cebd9f570a46fd31 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index 890931236b8d91a78b31978f128ca31dc858e831..ee7b1248354a8dece0a34cf4ba1dc75b14d36123 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index 21ab8311d36b44fb7a0f9c9ea8271f2960e07dda..2730143c6ee2e2756c2e27a9b93a70ff1d140033 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index 380d83428cfd2d1be3b571d82dfeb8f301373b36..5ef09bbb1b1ba7fb3292c74b52deeb9c01cb7cfa 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   inline namespace _8 { }
index b841ff6ceaa160f4a6dc92856fec53408ec4eaa2..29587e4ebb5b67d9dd0297cc0c1a9778f20535fe 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 auto x = __builtin_source_location (); // { dg-error "'source_location' is not a member of 'std'" }
 // { dg-message "std::source_location' is defined in header '<source_location>'; did you forget to '#include <source_location>'" "" { target *-*-* } .-1 }
index c8c5f51393139fc731004c02bf8f2e2e755cb58a..c10f64b95d266e03f59ee3bfe89e5f622101af72 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   void source_location ();
index 0e89a00a13cf09ea0d934d30c5ed16754cbae12e..ce7170b6dceaca75975a0865fea03f857c31cd5d 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   typedef int source_location;
index a389add2e7c90fb5af965479d1001490bcf2ff83..89c6887cb464c2c912ca3db4dae1ea3720869237 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index 2a8b569a1af48b952914528c53a633adf426bd3d..ef56edf9426adf73539bf4b1c82f1250f13348a5 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index db56bb5ff90116cd3071c988690506f74991c152..caef812b464b1a7e8039bf8c9a25c7473ded5b4b 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index 01ba00aaf41443cef8b39295e6bb3eb6f9aaba39..47fce003913cac4199eff8176965bb0fea95833e 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
   struct source_location {
index 0c1f6309c5bde7ceef46c6989393a95460fb6887..726c9df5c88eeff2db8e671eff65ba069853942d 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // OK, return type of a function declaration at global scope.
 template<class T> T::R f();
index 1413268ba16f4c637a88ce8dbac56db46d565dcb..cdd1465d010eea536ee9480221bc5b3e565d09d4 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace N {
  // template<typename T> extern T::type v; // #1a
index ed7ad958f62c538e898dc0f25fab78fc22a1c81d..5dd81f105ca7aef261618078dd146afdb453411f 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 struct A
index 97962e53d65edb46b6388794c0ecbb017b650596..99a235961a329ba28076580046c4437dcffbbfcf 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct W {
   template<typename T>
index c439f726c5d868926d17fbcfabb6978159c96698..5aa5a516cd4ead6d6c09814cc2b5a397aae0d043 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3, PR c++/88358
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template <typename T>
 int pi(T::your_pi);
index 4750db35cd84702639fb9585bcc896322c8f3b7d..8d82b6b8d34f71159ad496e9257582f78de2bd63 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88325
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename> struct A
 {
index 9094190cec97cb2d82db53a19620bb695ec7129a..72476712562d2a2e53e0c1eebbed64b35ffe4acd 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/88979
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 struct B {
index 7f4242a1dbae77343df0158247c18baf074b941a..bb6d528201fe1ace12ce78f7259f793779adbaa3 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/90572
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct X { X(int); };
 
index bf534f1717f59ca148d5152adb260cc2f64855de..5f8be8f9e01093a601eeb98c3a1a61970daf9b34 100644 (file)
@@ -1,5 +1,5 @@
 // DR 2413 - typename in conversion-function-ids.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class T> struct S {
   operator T::X();
index 7c9261770043ee5b011e63867c156a564ddd5b38..4a2a1cde53e05d6bade7cc7b973cd569daa83894 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class T> typename T::R f();
 
index e64aa0316efb87d4c4e994b2690f834248d04941..55ad378c1b16ff5aab926257a34aa22e20446a5c 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class T>
 void f(int i)
index 69154e7daaf614a8e6cc476fb667da41a6c0ada1..fc65eee85cf30edf94797960f92f96feccb2ecf0 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<class T>
 struct A {
index 97c27adafcc166ea2c0e61729b515fb6e6d20752..6913d088dcecde2e9e908c79dbd144559f3eea2d 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct X {
   template<typename T>
index e96e2ab802c89e13b095d378c54acaa7f02bdfab..8b5a4533f8b38885403fb65bb7bf05a5e74ac712 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // (5.2.1) simple-declaration or a function-definition in namespace scope
 
index 713db51d9724ebcef104f8967fb41bceac1f0b5c..2354fafcfa0e3c4e12cd6c5b97677d8bbd335d62 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 // Not in namespace scope.
 template<typename T>
index 3ebfde45ec54fcdf6124a813dfea5fe398d8e31f..afba0f83b31ab28f9a03d46bd7e9f874d526f213 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 template<typename T>
 struct S {
index 7b1865222b3176cd41e88c56cee6d679721579c4..70f9e3996f8f24c14082c161d7916cbb8250cbb7 100644 (file)
@@ -1,5 +1,5 @@
 // P0634R3
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-fconcepts" }
 
 template <typename, typename> class A { class B; };
index 2e6ce11d2e771f43a1fdbd389b9f4ce99d11d629..ee7011b4a3b7163b0aff276101ef0f338d0bbff6 100644 (file)
@@ -6,11 +6,11 @@ const char16_t *a = u"\U0001F914\u2753";
 const char32_t *b = U"\U0001F914\u2753";
 const char16_t *c = u"\uD802";         // { dg-error "is not a valid universal character" }
 const char16_t *d = u"\U0000DFF0";     // { dg-error "is not a valid universal character" }
-const char16_t *e = u"\U00110000";     // { dg-error "is outside the UCS codespace" "" { target c++2a } }
+const char16_t *e = u"\U00110000";     // { dg-error "is outside the UCS codespace" "" { target c++20 } }
                                        // { dg-error "converting UCN to execution character set" "" { target *-*-* } .-1 }
 const char32_t *f = U"\uD802";         // { dg-error "is not a valid universal character" }
 const char32_t *g = U"\U0000DFF0";     // { dg-error "is not a valid universal character" }
-const char32_t *h = U"\U00110001";     // { dg-error "is outside the UCS codespace" "" { target c++2a } }
+const char32_t *h = U"\U00110001";     // { dg-error "is outside the UCS codespace" "" { target c++20 } }
 #if __cpp_unicode_characters >= 201411
 const char8_t i = u8'\u00C0';          // { dg-error "character constant too long for its type" "" { target c++17 } }
 #endif
@@ -22,9 +22,9 @@ const char8_t l = u8'ab';             // { dg-error "character constant too long for its ty
 const char16_t m = u'ab';              // { dg-error "character constant too long for its type" }
 const char32_t n = U'ab';              // { dg-error "character constant too long for its type" }
 #if __cpp_unicode_characters >= 201411
-const char8_t o = u8'\U00110002';      // { dg-error "is outside the UCS codespace" "" { target c++2a } }
+const char8_t o = u8'\U00110002';      // { dg-error "is outside the UCS codespace" "" { target c++20 } }
                                        // { dg-error "character constant too long for its type" "" { target c++17 } .-1 }
 #endif
-const char16_t p = u'\U00110003';      // { dg-error "is outside the UCS codespace" "" { target c++2a } }
+const char16_t p = u'\U00110003';      // { dg-error "is outside the UCS codespace" "" { target c++20 } }
                                        // { dg-error "converting UCN to execution character set" "" { target *-*-* } .-1 }
-const char32_t q = U'\U00110004';      // { dg-error "is outside the UCS codespace" "" { target c++2a } }
+const char32_t q = U'\U00110004';      // { dg-error "is outside the UCS codespace" "" { target c++20 } }
index 437fa9b5ab8965914aab0b10f70073dad82eb56f..b91e01ce0b37b46e229017229ed65db6a7a8bb0b 100644 (file)
@@ -1,7 +1,7 @@
 // PR c++/88095
 // Test class non-type template parameters for literal operator templates.
 // Validate handling of failed class template argument deduction.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
 using size_t = decltype(sizeof(int));
index 89bb5d39d7dbfc6988b0e6388275ed700a47b656..067fdbac81eb1bc45dee98b25ee2d30665d21ae9 100644 (file)
@@ -1,7 +1,7 @@
 // PR c++/88095
 // Test class non-type template parameters for literal operator templates.
 // Validate rejection of class template parameter packs.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
 using size_t = decltype(sizeof(int));
index f6877a960c95b65c9c571602790145e4c53050d0..e9421bc40729d3362f897af8d9546ff62fd24f5b 100644 (file)
@@ -1,7 +1,7 @@
 // PR c++/88095
 // Test class non-type template parameters for literal operator templates.
 // Validate support for class template argument deduction.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 namespace std {
 using size_t = decltype(sizeof(int));
index 8f7e3f295117d008111d5019f7d5b96257f6fb2a..85b3fe7fc61b45063ec0264475120393d9bdefb2 100644 (file)
@@ -1,7 +1,7 @@
 // PR c++/88095
 // Test class non-type template parameters for literal operator templates.
 // Validate that parameter packs are rejected.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct literal_class {
   constexpr literal_class(...) { }
index 71ba8f981a0d0adb4abc6d8013f777d556842a08..62cb86ae6954f1e6ef5152293d816d674818fa6d 100644 (file)
@@ -1,7 +1,7 @@
 // PR c++/88095
 // Test class non-type template parameters for literal operator templates.
 // Validate that non-literal class types are rejected.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct non_literal_class {
   constexpr non_literal_class(...) { }
index dcaca3e4070115dfa792facae0fc9ada0e6538b6..b7ef79d68a0c7926d5b46942b3ff9945723d0cd6 100644 (file)
@@ -1,7 +1,7 @@
 // PR c++/88095
 // Test class non-type template parameters for literal operator templates.
 // Validate basic support.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 
 struct literal_class {
   constexpr literal_class(...) { }
index e47591b13bce5d0f2a82eaa8a257c86124cbda96..7ea6b477ca27f5eebe52f05dcf2f3bbc861913ee 100644 (file)
@@ -24,21 +24,21 @@ struct W {
   W& operator=(volatile W&) volatile;
 };
 
-volatile int // { dg-warning ".volatile.-qualified return type is deprecated" "" { target c++2a } }
-fn (volatile int i) // { dg-warning ".volatile.-qualified parameter is deprecated" "" { target c++2a } }
+volatile int // { dg-warning ".volatile.-qualified return type is deprecated" "" { target c++20 } }
+fn (volatile int i) // { dg-warning ".volatile.-qualified parameter is deprecated" "" { target c++20 } }
 {
   volatile int v = 10;
   int *volatile p = nullptr;
 
   // Pre/post ++/--.
-  v++; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++2a } }
-  ++v; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++2a } }
-  v--; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++2a } }
-  --v; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++2a } }
-  p++; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++2a } }
-  ++p; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++2a } }
-  p--; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++2a } }
-  --p; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++2a } }
+  v++; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++20 } }
+  ++v; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++20 } }
+  v--; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++20 } }
+  --v; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++20 } }
+  p++; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++20 } }
+  ++p; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++20 } }
+  p--; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++20 } }
+  --p; // { dg-warning "expression of .volatile.-qualified type is deprecated" "" { target c++20 } }
   return v + i + *p;
 }
 
@@ -55,45 +55,45 @@ fn2 ()
   vi = 42;
   vi = i;
   vi = i = 42;
-  i = vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  &(vi = i); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  i = vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  &(vi = i); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
   (vi = 42, 45);
-  (i = vi = 42, 10); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  (i = vi = 42, 10); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
   i = vi; // LHS not volatile.
   i = (vi = i, 42);
   static_cast<void>(vi = i);
-  static_cast<void>(i = vi = 42); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  static_cast<void>(i = vi = 42); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
   (void)(vi = i);
-  (void)(i = vi = 42); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  (void)(i = vi = 42); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
 
   // Unevaluated operand.
   decltype(vi = 42) x = vi;
   decltype(i = vi = 42) x3 = i;
 
   // Compound assignments.
-  vi += i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  vi -= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  vi %= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  vi ^= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  vi |= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  vi /= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  vi = vi += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  vi += vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  vi += i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  vi -= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  vi %= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  vi ^= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  vi |= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  vi /= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  vi = vi += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  vi += vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
   i *= vi;
-  decltype(vi -= 42) x2 = vi; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  decltype(vi -= 42) x2 = vi; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
 
   // Structured bindings.
   int a[] = { 10, 5 };
   const auto & [cxr, cyr] = a;
-  const volatile auto & [cvxr, cvyr] = a; // { dg-warning ".volatile.-qualified structured binding is deprecated" "" { target c++2a } }
-  volatile auto & [vxr, vyr] = a; // { dg-warning ".volatile.-qualified structured binding is deprecated" "" { target c++2a } }
+  const volatile auto & [cvxr, cvyr] = a; // { dg-warning ".volatile.-qualified structured binding is deprecated" "" { target c++20 } }
+  volatile auto & [vxr, vyr] = a; // { dg-warning ".volatile.-qualified structured binding is deprecated" "" { target c++20 } }
 }
 
 void
 fn3 ()
 {
   volatile int i, j, k = 0;
-  i = j = k; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  i = j = k; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
 
   ACCESS_ONCE(j);
 
@@ -102,13 +102,13 @@ fn3 ()
 
   volatile U u;
   u.c = 42;
-  i = u.c = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  u.c += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  i = u.c = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  u.c += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
 
   volatile T t;
   t.a = 3;
-  j = t.a = 3; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  t.a += 3; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  j = t.a = 3; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  t.a += 3; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
 
   volatile int *src = &i;
   *src; // No assignment, don't warn.
@@ -130,8 +130,8 @@ void raccoon ()
 {
   volatile T t, u;
   t = 42;
-  u = t = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
-  t &= 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++2a } }
+  u = t = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
+  t &= 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } }
 }
 
 void
index 1a7889a6a8cb3b0596e940e720a8cc90a6d1af5d..92526b5058bd6e3c70a4ca0cd7e7d0c690018336 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91361 - P1152R4: Deprecating some uses of volatile.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-Wno-volatile" }
 
 #define ACCESS_ONCE(x) (*(volatile __typeof(x) *)&(x))
index 2148cdeb3d1564a28cae6f5f1057ac7ecf91390c..e22ee6c95689c38744431fed387e246439fb10d6 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/91361 - P1152R4: Deprecating some uses of volatile.
-// { dg-do compile { target c++2a } }
+// { dg-do compile { target c++20 } }
 // { dg-options "-Wno-deprecated" }
 
 #define ACCESS_ONCE(x) (*(volatile __typeof(x) *)&(x))
index 7c41c4e15392d1e016ec356f1cdf8993fedd4307..f425bac3fb97109ff7efc624fb5e820761250d28 100644 (file)
@@ -1,3 +1,8 @@
+2020-05-13  Jason Merrill  <jason@redhat.com>
+
+       * include/cpplib.h (enum c_lang): Change CXX2A to CXX20.
+       * init.c, lex.c: Adjust.
+
 2020-05-12  Nathan Sidwell  <nathan@acm.org>
 
        EOF location is at end of file
index d9281c5fb976b064256162f0e7ce7de4b116d0e5..db47235b84718bc80a52bd95727f71ff1e01dde8 100644 (file)
@@ -1021,7 +1021,7 @@ ucn_valid_in_identifier (cpp_reader *pfile, cppchar_t c,
 
    If the hexadecimal value is larger than the upper bound of the UCS
    codespace specified in ISO/IEC 10646, a pedantic warning is issued
-   in all versions of C and in the C++2a or later versions of C++.
+   in all versions of C and in the C++20 or later versions of C++.
 
    *PSTR must be preceded by "\u" or "\U"; it is assumed that the
    buffer end is delimited by a non-hex digit.  Returns false if the
index 2b1e33f94ae9582127a0716d78764cddb5a377a2..7f47402f9b960c4d8d2fcbc6c7b09dd5bc35a405 100644 (file)
@@ -173,7 +173,7 @@ enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, CLK_GNUC17, CLK_GNUC2X,
             CLK_STDC2X,
             CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11,
             CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX17, CLK_CXX17,
-            CLK_GNUCXX2A, CLK_CXX2A, CLK_ASM};
+            CLK_GNUCXX20, CLK_CXX20, CLK_ASM};
 
 /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
 struct GTY(()) cpp_string {
@@ -484,7 +484,7 @@ struct cpp_options
   /* Nonzero for C2X decimal floating-point constants.  */
   unsigned char dfp_constants;
 
-  /* Nonzero for C++2a __VA_OPT__ feature.  */
+  /* Nonzero for C++20 __VA_OPT__ feature.  */
   unsigned char va_opt;
 
   /* Nonzero for the '::' token.  */
index a3cd8e28f6263267a391f9fc137f578eff5705e6..1f8996af47f0a15ce8daeda97de7d347b2e50a5d 100644 (file)
@@ -117,8 +117,8 @@ static const struct lang_flags lang_defaults[] =
   /* CXX14    */  { 1,  1,  0,  1,  1,  1,  1,   1,   1,   1,    1,     1,     1,   0,      0,   1,     0 },
   /* GNUCXX17 */  { 1,  1,  1,  1,  1,  0,  1,   1,   1,   1,    1,     1,     0,   1,      1,   1,     0 },
   /* CXX17    */  { 1,  1,  1,  1,  1,  1,  1,   1,   1,   1,    1,     1,     0,   1,      0,   1,     0 },
-  /* GNUCXX2A */  { 1,  1,  1,  1,  1,  0,  1,   1,   1,   1,    1,     1,     0,   1,      1,   1,     0 },
-  /* CXX2A    */  { 1,  1,  1,  1,  1,  1,  1,   1,   1,   1,    1,     1,     0,   1,      1,   1,     0 },
+  /* GNUCXX20 */  { 1,  1,  1,  1,  1,  0,  1,   1,   1,   1,    1,     1,     0,   1,      1,   1,     0 },
+  /* CXX20    */  { 1,  1,  1,  1,  1,  1,  1,   1,   1,   1,    1,     1,     0,   1,      1,   1,     0 },
   /* ASM      */  { 0,  0,  1,  0,  0,  0,  0,   0,   0,   0,    0,     0,     0,   0,      0,   0,     0 }
 };
 
@@ -533,8 +533,8 @@ cpp_init_builtins (cpp_reader *pfile, int hosted)
 
   if (CPP_OPTION (pfile, cplusplus))
     {
-      if (CPP_OPTION (pfile, lang) == CLK_CXX2A
-         || CPP_OPTION (pfile, lang) == CLK_GNUCXX2A)
+      if (CPP_OPTION (pfile, lang) == CLK_CXX20
+         || CPP_OPTION (pfile, lang) == CLK_GNUCXX20)
        _cpp_define_builtin (pfile, "__cplusplus 201709L");
       else if (CPP_OPTION (pfile, lang) == CLK_CXX17
          || CPP_OPTION (pfile, lang) == CLK_GNUCXX17)
index 043852d14e2062759d3e99c51f1dd22f6c21e731..f0ee0f9d4f6c5176ac9f90c3098c85bd53d7a58a 100644 (file)
@@ -1372,7 +1372,7 @@ maybe_va_opt_error (cpp_reader *pfile)
         system headers.  */
       if (!cpp_in_system_header (pfile))
        cpp_error (pfile, CPP_DL_PEDWARN,
-                  "__VA_OPT__ is not available until C++2a");
+                  "__VA_OPT__ is not available until C++20");
     }
   else if (!pfile->state.va_args_ok)
     {
@@ -1380,7 +1380,7 @@ maybe_va_opt_error (cpp_reader *pfile)
         variadic macro.  */
       cpp_error (pfile, CPP_DL_PEDWARN,
                 "__VA_OPT__ can only appear in the expansion"
-                " of a C++2a variadic macro");
+                " of a C++20 variadic macro");
     }
 }
 
@@ -2994,7 +2994,7 @@ _cpp_lex_direct (cpp_reader *pfile)
          buffer->cur++, result->type = CPP_LESS_EQ;
          if (*buffer->cur == '>'
              && CPP_OPTION (pfile, cplusplus)
-             && CPP_OPTION (pfile, lang) >= CLK_GNUCXX2A)
+             && CPP_OPTION (pfile, lang) >= CLK_GNUCXX20)
            buffer->cur++, result->type = CPP_SPACESHIP;
        }
       else if (*buffer->cur == '<')
index 2573f316bf512dfdb40cfbb6f437daac38fe1d96..dc4366ffefd36fd663262340249ba7aba2e77654 100644 (file)
@@ -1035,7 +1035,7 @@ _cpp_arguments_ok (cpp_reader *pfile, cpp_macro *macro, const cpp_hashnode *node
 
   if (argc < macro->paramc)
     {
-      /* In C++2a (here the va_opt flag is used), and also as a GNU
+      /* In C++20 (here the va_opt flag is used), and also as a GNU
         extension, variadic arguments are allowed to not appear in
         the invocation at all.
         e.g. #define debug(format, args...) something