aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2018-10-20 17:21:19 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2018-10-20 17:21:19 +0000
commitbe515b4ce0891e0019511d65c2073e0ebf9f9309 (patch)
tree735f98fc939ad847b620a55583a4dfd614998209
parentca66a6cd6101b234a0506715f517cc16e570b123 (diff)
downloadgcc-be515b4ce0891e0019511d65c2073e0ebf9f9309.zip
gcc-be515b4ce0891e0019511d65c2073e0ebf9f9309.tar.gz
gcc-be515b4ce0891e0019511d65c2073e0ebf9f9309.tar.bz2
*.C: Use target c++17 instead of explicit dg-options.
* g++.dg/*.C: Use target c++17 instead of explicit dg-options. * lib/g++-dg.exp: Don't test C++11 by default. Add C++17 to the list of default stds to test. From-SVN: r265343
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/concepts/alias1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/alias2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/alias3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/alias4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/auto1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/auto3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/auto4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class-deduction1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class-deduction2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/class6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/constrained-parm.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/debug1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/decl-diagnose.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/deduction-constraint1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/diagnostic1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/disjunction1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/dr1430.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/equiv.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/equiv2.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-inst1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-inst2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-inst3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-inst4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-spec1.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-spec2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-spec3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-spec4.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-spec5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/explicit-spec6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/expression.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/expression2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/expression3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/feature-macro.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn-concept1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn-concept2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn10.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn3.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn7.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn8.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/fn9.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/friend1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/friend2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/generic-fn-err.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/generic-fn.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/iconv1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/inherit-ctor1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/inherit-ctor2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/inherit-ctor3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/inherit-ctor4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/intro1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/intro2.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/intro3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/intro4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/intro5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/intro6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/intro7.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/locations1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/member-concept.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/memfun-err.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/memfun.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/memfun2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/memtmpl1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/partial-concept-id1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/partial-concept-id2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/partial-spec.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/partial-spec2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/partial-spec3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/partial-spec4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/partial-spec5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/partial-spec6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/placeholder1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/placeholder2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/placeholder3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/placeholder4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/placeholder5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/placeholder6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr65552.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr65575.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr65634.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr65636.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr65681.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr65848.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr65854.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr66091.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr67249.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr67595.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr68434.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr68683.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr71368.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr71385.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req-neg1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req1.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/req10.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req11.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req12.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req13.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req14.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req15.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req16.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req17.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req18.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req19.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req20.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req3.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/req4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req7.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/req8.C4
-rw-r--r--gcc/testsuite/g++.dg/concepts/req9.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm10.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm11.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm12.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm7.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm8.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-parm9.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/template-template-parm1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/traits1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/traits2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-concept1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-concept2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-concept3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-concept4.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-concept5.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-concept6.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-concept7.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-templ1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-templ2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/var-templ3.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/variadic1.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/variadic2.C3
-rw-r--r--gcc/testsuite/g++.dg/concepts/variadic4.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/Wpessimizing-move1.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aggr-base1.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aggr-base2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aggr-base3.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aggr-base4.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aggr-base5.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aggr-base6.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aligned-new1.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aligned-new2.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aligned-new3.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aligned-new7.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/aligned-new8.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/bool-increment1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/byte1.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/byte2.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction10.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction11.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction12.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction13.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction14.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction15.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction16.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction17.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction18.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction19.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction20.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction21.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction22.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction23.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction24.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction25.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction26.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction27.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction28.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction29.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction3.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction30.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction31.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction32.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction33.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction34.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction35.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction36.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction38.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction39.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction4.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction40.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction41.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction42.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction43.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction44.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction45.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction46.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction48.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction49.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction5.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction50.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction51.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction52.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction54.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction55.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction56.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction57.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction58.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction6.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction7.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction8.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction9.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-83692.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if15.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if16.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if17.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if18.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if19.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if20.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if21.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if22.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if23.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-if24.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda17.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda19.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda20.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda21.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/cplusplus.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp10.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp11.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp12.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp15.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp16.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp17.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp20.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp21.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp27.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp29.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp30.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp37.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp38.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp9.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/elide1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/eval-order2.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/eval-order3.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fallthrough1.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold-ice1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold-lambda.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold-lambda2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold-mangle.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold1.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold2.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold3.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold4.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold6.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold7.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold8.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold9.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/init-statement2.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/init-statement3.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/init-statement4.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/init-statement5.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/init-statement6.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/init-statement7.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/init-statement8.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/init-statement9.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/inline-var1.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/inline-var1a.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/inline-var4.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/lambda-__func__.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/lambda-this3.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/namespace-attribs2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nodiscard3.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type15.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type18.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto12.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto13.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto14.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype3.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/pr78771.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/pr79143.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/pr81016.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/pr83020.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/pr83644.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/pr83918.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/pr84325.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/pr84533.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/range-for1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/regress1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/regress2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/static1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/static2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/utf8-2.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/utf8-neg.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/utf8.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/lambda-this3.C4
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C4
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C4
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C4
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C4
-rw-r--r--gcc/testsuite/g++.dg/ext/integer-pack4.C2
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr84556.C4
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr81248.C4
-rw-r--r--gcc/testsuite/g++.dg/pr81194.C4
-rw-r--r--gcc/testsuite/g++.dg/pr82836.C2
-rw-r--r--gcc/testsuite/g++.dg/ubsan/pr79589.C4
-rw-r--r--gcc/testsuite/lib/g++-dg.exp2
369 files changed, 554 insertions, 433 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 86fa756..eff5d08 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-10-20 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/*.C: Use target c++17 instead of explicit dg-options.
+ * lib/g++-dg.exp: Don't test C++11 by default. Add C++17 to
+ the list of default stds to test.
+
2018-10-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/87647
diff --git a/gcc/testsuite/g++.dg/concepts/alias1.C b/gcc/testsuite/g++.dg/concepts/alias1.C
index 1b643cd..279a478 100644
--- a/gcc/testsuite/g++.dg/concepts/alias1.C
+++ b/gcc/testsuite/g++.dg/concepts/alias1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/alias2.C b/gcc/testsuite/g++.dg/concepts/alias2.C
index 2de2aa4..06ffb1a 100644
--- a/gcc/testsuite/g++.dg/concepts/alias2.C
+++ b/gcc/testsuite/g++.dg/concepts/alias2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/alias3.C b/gcc/testsuite/g++.dg/concepts/alias3.C
index 6e1c39c..2901c04 100644
--- a/gcc/testsuite/g++.dg/concepts/alias3.C
+++ b/gcc/testsuite/g++.dg/concepts/alias3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/alias4.C b/gcc/testsuite/g++.dg/concepts/alias4.C
index e7d93d5..2c9f5de 100644
--- a/gcc/testsuite/g++.dg/concepts/alias4.C
+++ b/gcc/testsuite/g++.dg/concepts/alias4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/auto1.C b/gcc/testsuite/g++.dg/concepts/auto1.C
index 0c6fa46..2682940 100644
--- a/gcc/testsuite/g++.dg/concepts/auto1.C
+++ b/gcc/testsuite/g++.dg/concepts/auto1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T1, class T2> class A { };
diff --git a/gcc/testsuite/g++.dg/concepts/auto3.C b/gcc/testsuite/g++.dg/concepts/auto3.C
index 7b80fe3..abfb201 100644
--- a/gcc/testsuite/g++.dg/concepts/auto3.C
+++ b/gcc/testsuite/g++.dg/concepts/auto3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class...> class tuple {};
diff --git a/gcc/testsuite/g++.dg/concepts/auto4.C b/gcc/testsuite/g++.dg/concepts/auto4.C
index e80341e..4eb2ae8 100644
--- a/gcc/testsuite/g++.dg/concepts/auto4.C
+++ b/gcc/testsuite/g++.dg/concepts/auto4.C
@@ -1,5 +1,6 @@
// PR c++/85006
-// { dg-additional-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-additional-options "-fconcepts" }
template<typename... Ts> struct A {};
diff --git a/gcc/testsuite/g++.dg/concepts/class-deduction1.C b/gcc/testsuite/g++.dg/concepts/class-deduction1.C
index 476830d..936dd68 100644
--- a/gcc/testsuite/g++.dg/concepts/class-deduction1.C
+++ b/gcc/testsuite/g++.dg/concepts/class-deduction1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T>
concept bool Isint = __is_same_as(T,int);
diff --git a/gcc/testsuite/g++.dg/concepts/class-deduction2.C b/gcc/testsuite/g++.dg/concepts/class-deduction2.C
index 286e59a..e0718d1 100644
--- a/gcc/testsuite/g++.dg/concepts/class-deduction2.C
+++ b/gcc/testsuite/g++.dg/concepts/class-deduction2.C
@@ -1,5 +1,6 @@
// PR c++/85706
-// { dg-additional-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-additional-options "-fconcepts" }
template<class T> struct S {
S(T);
diff --git a/gcc/testsuite/g++.dg/concepts/class.C b/gcc/testsuite/g++.dg/concepts/class.C
index 1c5242f..dc5523e 100644
--- a/gcc/testsuite/g++.dg/concepts/class.C
+++ b/gcc/testsuite/g++.dg/concepts/class.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Class() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/class1.C b/gcc/testsuite/g++.dg/concepts/class1.C
index 94a5d23..a738e6e 100644
--- a/gcc/testsuite/g++.dg/concepts/class1.C
+++ b/gcc/testsuite/g++.dg/concepts/class1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/class2.C b/gcc/testsuite/g++.dg/concepts/class2.C
index 6389128..ec87181 100644
--- a/gcc/testsuite/g++.dg/concepts/class2.C
+++ b/gcc/testsuite/g++.dg/concepts/class2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/class3.C b/gcc/testsuite/g++.dg/concepts/class3.C
index b275756..256370d 100644
--- a/gcc/testsuite/g++.dg/concepts/class3.C
+++ b/gcc/testsuite/g++.dg/concepts/class3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/class4.C b/gcc/testsuite/g++.dg/concepts/class4.C
index 86eecbc..b583e55 100644
--- a/gcc/testsuite/g++.dg/concepts/class4.C
+++ b/gcc/testsuite/g++.dg/concepts/class4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Class() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/class5.C b/gcc/testsuite/g++.dg/concepts/class5.C
index 76398609..7bf620e 100644
--- a/gcc/testsuite/g++.dg/concepts/class5.C
+++ b/gcc/testsuite/g++.dg/concepts/class5.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool One() { return sizeof(T) >= 4; }
diff --git a/gcc/testsuite/g++.dg/concepts/class6.C b/gcc/testsuite/g++.dg/concepts/class6.C
index 29dcb8f..bdd60918 100644
--- a/gcc/testsuite/g++.dg/concepts/class6.C
+++ b/gcc/testsuite/g++.dg/concepts/class6.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool One() { return sizeof(T) >= 4; }
diff --git a/gcc/testsuite/g++.dg/concepts/constrained-parm.C b/gcc/testsuite/g++.dg/concepts/constrained-parm.C
index feaf3bb..c2b6614a 100644
--- a/gcc/testsuite/g++.dg/concepts/constrained-parm.C
+++ b/gcc/testsuite/g++.dg/concepts/constrained-parm.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/debug1.C b/gcc/testsuite/g++.dg/concepts/debug1.C
index eeb6365..87f2ac9 100644
--- a/gcc/testsuite/g++.dg/concepts/debug1.C
+++ b/gcc/testsuite/g++.dg/concepts/debug1.C
@@ -1,5 +1,6 @@
// PR c++/84551
-// { dg-options "-g -O -std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-g -O -fconcepts" }
template<typename> concept bool C() { return true; }
diff --git a/gcc/testsuite/g++.dg/concepts/decl-diagnose.C b/gcc/testsuite/g++.dg/concepts/decl-diagnose.C
index caf6b2e..7ac7872 100644
--- a/gcc/testsuite/g++.dg/concepts/decl-diagnose.C
+++ b/gcc/testsuite/g++.dg/concepts/decl-diagnose.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
typedef concept int CINT; // { dg-error "'concept' cannot appear in a typedef declaration" }
diff --git a/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C b/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
index 5eec87b..bebbda1 100644
--- a/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
+++ b/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
@@ -1,5 +1,6 @@
// PR c++/67007
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class U>
concept bool A =
diff --git a/gcc/testsuite/g++.dg/concepts/diagnostic1.C b/gcc/testsuite/g++.dg/concepts/diagnostic1.C
index c977eaa..9bb1506 100644
--- a/gcc/testsuite/g++.dg/concepts/diagnostic1.C
+++ b/gcc/testsuite/g++.dg/concepts/diagnostic1.C
@@ -1,5 +1,6 @@
// PR c++/67159
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T, class U>
concept bool SameAs = __is_same_as(T, U);
diff --git a/gcc/testsuite/g++.dg/concepts/disjunction1.C b/gcc/testsuite/g++.dg/concepts/disjunction1.C
index 9bd5097..930adf4 100644
--- a/gcc/testsuite/g++.dg/concepts/disjunction1.C
+++ b/gcc/testsuite/g++.dg/concepts/disjunction1.C
@@ -1,5 +1,6 @@
// PR c++/66962
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <typename> struct remove_cv;
template <typename> struct is_reference;
diff --git a/gcc/testsuite/g++.dg/concepts/dr1430.C b/gcc/testsuite/g++.dg/concepts/dr1430.C
index 9fd4f43..f865d5e 100644
--- a/gcc/testsuite/g++.dg/concepts/dr1430.C
+++ b/gcc/testsuite/g++.dg/concepts/dr1430.C
@@ -1,5 +1,6 @@
// PR c++/66092
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
#include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/equiv.C b/gcc/testsuite/g++.dg/concepts/equiv.C
index d666d9a..faec354 100644
--- a/gcc/testsuite/g++.dg/concepts/equiv.C
+++ b/gcc/testsuite/g++.dg/concepts/equiv.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Check equivalence of short- and longhand declarations.
diff --git a/gcc/testsuite/g++.dg/concepts/equiv2.C b/gcc/testsuite/g++.dg/concepts/equiv2.C
index 694d87a..2094ca9 100644
--- a/gcc/testsuite/g++.dg/concepts/equiv2.C
+++ b/gcc/testsuite/g++.dg/concepts/equiv2.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
// template<typename T>
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-inst1.C b/gcc/testsuite/g++.dg/concepts/explicit-inst1.C
index 58d8dec..99bd72e 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-inst1.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-inst1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-inst2.C b/gcc/testsuite/g++.dg/concepts/explicit-inst2.C
index f47b758..ea31387 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-inst2.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-inst2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-inst3.C b/gcc/testsuite/g++.dg/concepts/explicit-inst3.C
index 00dee2f..18d3c49 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-inst3.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-inst3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-inst4.C b/gcc/testsuite/g++.dg/concepts/explicit-inst4.C
index c0f585c..20f4377 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-inst4.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-inst4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec1.C b/gcc/testsuite/g++.dg/concepts/explicit-spec1.C
index 3873068..bff06f2 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-spec1.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec2.C b/gcc/testsuite/g++.dg/concepts/explicit-spec2.C
index 17d48e7..ca8b8a0 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-spec2.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-spec2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec3.C b/gcc/testsuite/g++.dg/concepts/explicit-spec3.C
index 1edc83e..fd48da1 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-spec3.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-spec3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec4.C b/gcc/testsuite/g++.dg/concepts/explicit-spec4.C
index 963c030..75a2dec 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-spec4.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec5.C b/gcc/testsuite/g++.dg/concepts/explicit-spec5.C
index e0d89bc..d83eec1 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-spec5.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec6.C b/gcc/testsuite/g++.dg/concepts/explicit-spec6.C
index 0af1df4..b548707 100644
--- a/gcc/testsuite/g++.dg/concepts/explicit-spec6.C
+++ b/gcc/testsuite/g++.dg/concepts/explicit-spec6.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
struct A {
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 6430f89..33dad0a 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
#include <iostream>
diff --git a/gcc/testsuite/g++.dg/concepts/expression2.C b/gcc/testsuite/g++.dg/concepts/expression2.C
index 3583452..c5447df 100644
--- a/gcc/testsuite/g++.dg/concepts/expression2.C
+++ b/gcc/testsuite/g++.dg/concepts/expression2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1()
diff --git a/gcc/testsuite/g++.dg/concepts/expression3.C b/gcc/testsuite/g++.dg/concepts/expression3.C
index 4148aa6..26b829d 100644
--- a/gcc/testsuite/g++.dg/concepts/expression3.C
+++ b/gcc/testsuite/g++.dg/concepts/expression3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C()
diff --git a/gcc/testsuite/g++.dg/concepts/feature-macro.C b/gcc/testsuite/g++.dg/concepts/feature-macro.C
index ad2bfb0..d3d9b54 100644
--- a/gcc/testsuite/g++.dg/concepts/feature-macro.C
+++ b/gcc/testsuite/g++.dg/concepts/feature-macro.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
#ifndef __cpp_concepts
#error __cpp_concepts not defined
diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept1.C b/gcc/testsuite/g++.dg/concepts/fn-concept1.C
index b858c1a..a4ade7c 100644
--- a/gcc/testsuite/g++.dg/concepts/fn-concept1.C
+++ b/gcc/testsuite/g++.dg/concepts/fn-concept1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Tuple() { // { dg-error "multiple statements" }
diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept2.C b/gcc/testsuite/g++.dg/concepts/fn-concept2.C
index fe88dce..0d70728 100644
--- a/gcc/testsuite/g++.dg/concepts/fn-concept2.C
+++ b/gcc/testsuite/g++.dg/concepts/fn-concept2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept auto C1() { return 0; } // { dg-error "16:concept .concept auto C1\\(\\). declared with a deduced return type" }
diff --git a/gcc/testsuite/g++.dg/concepts/fn1.C b/gcc/testsuite/g++.dg/concepts/fn1.C
index 800a0d3..17f14b9 100644
--- a/gcc/testsuite/g++.dg/concepts/fn1.C
+++ b/gcc/testsuite/g++.dg/concepts/fn1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/fn10.C b/gcc/testsuite/g++.dg/concepts/fn10.C
index 71bd82c..6993f34 100644
--- a/gcc/testsuite/g++.dg/concepts/fn10.C
+++ b/gcc/testsuite/g++.dg/concepts/fn10.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Test that constraint satisfaction checks work even when
// processing template declarations.
diff --git a/gcc/testsuite/g++.dg/concepts/fn2.C b/gcc/testsuite/g++.dg/concepts/fn2.C
index 67e35ac..250e0a8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn2.C
+++ b/gcc/testsuite/g++.dg/concepts/fn2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 6695f2f..bc0e126 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
diff --git a/gcc/testsuite/g++.dg/concepts/fn4.C b/gcc/testsuite/g++.dg/concepts/fn4.C
index ecc3d7b..830a174 100644
--- a/gcc/testsuite/g++.dg/concepts/fn4.C
+++ b/gcc/testsuite/g++.dg/concepts/fn4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/fn5.C b/gcc/testsuite/g++.dg/concepts/fn5.C
index d4a2e00..018b12f 100644
--- a/gcc/testsuite/g++.dg/concepts/fn5.C
+++ b/gcc/testsuite/g++.dg/concepts/fn5.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Check shorthand notation.
diff --git a/gcc/testsuite/g++.dg/concepts/fn6.C b/gcc/testsuite/g++.dg/concepts/fn6.C
index 1293607..97155f8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn6.C
+++ b/gcc/testsuite/g++.dg/concepts/fn6.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Redefinition errors.
diff --git a/gcc/testsuite/g++.dg/concepts/fn7.C b/gcc/testsuite/g++.dg/concepts/fn7.C
index 1df21fe..0052f1a 100644
--- a/gcc/testsuite/g++.dg/concepts/fn7.C
+++ b/gcc/testsuite/g++.dg/concepts/fn7.C
@@ -1,5 +1,5 @@
-// { dg-do link }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do link { target c++17 } }
+// { dg-options "-fconcepts" }
// FIXME: What is this actually testing?
diff --git a/gcc/testsuite/g++.dg/concepts/fn8.C b/gcc/testsuite/g++.dg/concepts/fn8.C
index b91f1ae..a3daf4e 100644
--- a/gcc/testsuite/g++.dg/concepts/fn8.C
+++ b/gcc/testsuite/g++.dg/concepts/fn8.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Class() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 1efde5f..84ed77c 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
diff --git a/gcc/testsuite/g++.dg/concepts/friend1.C b/gcc/testsuite/g++.dg/concepts/friend1.C
index c437c79..9050b55 100644
--- a/gcc/testsuite/g++.dg/concepts/friend1.C
+++ b/gcc/testsuite/g++.dg/concepts/friend1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Eq() { return requires(T t) { t == t; }; }
diff --git a/gcc/testsuite/g++.dg/concepts/friend2.C b/gcc/testsuite/g++.dg/concepts/friend2.C
index 5f14905..8ef6002 100644
--- a/gcc/testsuite/g++.dg/concepts/friend2.C
+++ b/gcc/testsuite/g++.dg/concepts/friend2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Eq() { return requires(T t) { t == t; }; }
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn-err.C b/gcc/testsuite/g++.dg/concepts/generic-fn-err.C
index c34f832..5a95565 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn-err.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn-err.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 7a48e76..3b10327 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
#include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/iconv1.C b/gcc/testsuite/g++.dg/concepts/iconv1.C
index 38a0b17..e99254f 100644
--- a/gcc/testsuite/g++.dg/concepts/iconv1.C
+++ b/gcc/testsuite/g++.dg/concepts/iconv1.C
@@ -1,5 +1,6 @@
// PR c++/67240
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
int foo(int x)
{
diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C
index 952c8f6..4b3f561 100644
--- a/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C
+++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor2.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor2.C
index b36b993..cb81d13 100644
--- a/gcc/testsuite/g++.dg/concepts/inherit-ctor2.C
+++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C
index c7ad84a..6f04632 100644
--- a/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C
+++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor4.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor4.C
index 26940ba..43df6e6 100644
--- a/gcc/testsuite/g++.dg/concepts/inherit-ctor4.C
+++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/intro1.C b/gcc/testsuite/g++.dg/concepts/intro1.C
index ac8a708..84fa6db 100644
--- a/gcc/testsuite/g++.dg/concepts/intro1.C
+++ b/gcc/testsuite/g++.dg/concepts/intro1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C = __is_class(T);
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 928cc2e..9c7c173 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
diff --git a/gcc/testsuite/g++.dg/concepts/intro3.C b/gcc/testsuite/g++.dg/concepts/intro3.C
index 78d091d..5e93f31 100644
--- a/gcc/testsuite/g++.dg/concepts/intro3.C
+++ b/gcc/testsuite/g++.dg/concepts/intro3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename ... T>
concept bool C1 = true;
diff --git a/gcc/testsuite/g++.dg/concepts/intro4.C b/gcc/testsuite/g++.dg/concepts/intro4.C
index 2a3e2ba..a7e5135 100644
--- a/gcc/testsuite/g++.dg/concepts/intro4.C
+++ b/gcc/testsuite/g++.dg/concepts/intro4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename ... T>
concept bool C1 = true;
diff --git a/gcc/testsuite/g++.dg/concepts/intro5.C b/gcc/testsuite/g++.dg/concepts/intro5.C
index c5fac80..e7cd7a4 100644
--- a/gcc/testsuite/g++.dg/concepts/intro5.C
+++ b/gcc/testsuite/g++.dg/concepts/intro5.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T, typename U = int>
concept bool C()
diff --git a/gcc/testsuite/g++.dg/concepts/intro6.C b/gcc/testsuite/g++.dg/concepts/intro6.C
index 6624c88..57b325a 100644
--- a/gcc/testsuite/g++.dg/concepts/intro6.C
+++ b/gcc/testsuite/g++.dg/concepts/intro6.C
@@ -1,5 +1,6 @@
// PR c++/67003
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
namespace X {
template<class>
diff --git a/gcc/testsuite/g++.dg/concepts/intro7.C b/gcc/testsuite/g++.dg/concepts/intro7.C
index 9cb4a76..d5bdc7e 100644
--- a/gcc/testsuite/g++.dg/concepts/intro7.C
+++ b/gcc/testsuite/g++.dg/concepts/intro7.C
@@ -1,5 +1,6 @@
// PR c++/66985
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <template <class> class T>
concept bool _Valid = requires { typename T<int>; };
diff --git a/gcc/testsuite/g++.dg/concepts/locations1.C b/gcc/testsuite/g++.dg/concepts/locations1.C
index 6e7529b..33c3b62 100644
--- a/gcc/testsuite/g++.dg/concepts/locations1.C
+++ b/gcc/testsuite/g++.dg/concepts/locations1.C
@@ -1,4 +1,5 @@
-// { dg-additional-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-additional-options "-fconcepts" }
struct S
{
diff --git a/gcc/testsuite/g++.dg/concepts/member-concept.C b/gcc/testsuite/g++.dg/concepts/member-concept.C
index 4eae9f5..ef577a1 100644
--- a/gcc/testsuite/g++.dg/concepts/member-concept.C
+++ b/gcc/testsuite/g++.dg/concepts/member-concept.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
struct Base {
template<typename T>
diff --git a/gcc/testsuite/g++.dg/concepts/memfun-err.C b/gcc/testsuite/g++.dg/concepts/memfun-err.C
index a42554a..69ce6b8 100644
--- a/gcc/testsuite/g++.dg/concepts/memfun-err.C
+++ b/gcc/testsuite/g++.dg/concepts/memfun-err.C
@@ -1,5 +1,5 @@
-// { dg-do run}
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
diff --git a/gcc/testsuite/g++.dg/concepts/memfun.C b/gcc/testsuite/g++.dg/concepts/memfun.C
index d387234..818c7e6 100644
--- a/gcc/testsuite/g++.dg/concepts/memfun.C
+++ b/gcc/testsuite/g++.dg/concepts/memfun.C
@@ -1,5 +1,5 @@
-// { dg-do run}
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
#include <cassert>
diff --git a/gcc/testsuite/g++.dg/concepts/memfun2.C b/gcc/testsuite/g++.dg/concepts/memfun2.C
index a5965fc..78a2cf7 100644
--- a/gcc/testsuite/g++.dg/concepts/memfun2.C
+++ b/gcc/testsuite/g++.dg/concepts/memfun2.C
@@ -1,5 +1,6 @@
// PR c++/72415
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<int... Indices>
struct indices {};
diff --git a/gcc/testsuite/g++.dg/concepts/memtmpl1.C b/gcc/testsuite/g++.dg/concepts/memtmpl1.C
index fe0f1d5..dc00a07 100644
--- a/gcc/testsuite/g++.dg/concepts/memtmpl1.C
+++ b/gcc/testsuite/g++.dg/concepts/memtmpl1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T>
struct A {
diff --git a/gcc/testsuite/g++.dg/concepts/partial-concept-id1.C b/gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
index 90a8ec7..5f0f346 100644
--- a/gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
+++ b/gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Type() { return true; }
diff --git a/gcc/testsuite/g++.dg/concepts/partial-concept-id2.C b/gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
index 4c1373a..e51894b 100644
--- a/gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
+++ b/gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Make sure that we check partial concept ids
// with variable concepts.
diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec.C b/gcc/testsuite/g++.dg/concepts/partial-spec.C
index c3836d4..0ff8ec2 100644
--- a/gcc/testsuite/g++.dg/concepts/partial-spec.C
+++ b/gcc/testsuite/g++.dg/concepts/partial-spec.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Check that constraints don't break unconstrained partial
// specializations.
diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec2.C b/gcc/testsuite/g++.dg/concepts/partial-spec2.C
index 26d0ff4..2449c37 100644
--- a/gcc/testsuite/g++.dg/concepts/partial-spec2.C
+++ b/gcc/testsuite/g++.dg/concepts/partial-spec2.C
@@ -1,5 +1,6 @@
// PR c++/67084
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T>
constexpr bool p = false;
diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec3.C b/gcc/testsuite/g++.dg/concepts/partial-spec3.C
index 2ac5b98..d407181 100644
--- a/gcc/testsuite/g++.dg/concepts/partial-spec3.C
+++ b/gcc/testsuite/g++.dg/concepts/partial-spec3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T> struct A { };
template <class T> requires false struct A<T*> { };
diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec4.C b/gcc/testsuite/g++.dg/concepts/partial-spec4.C
index 5669bd4..70461b4 100644
--- a/gcc/testsuite/g++.dg/concepts/partial-spec4.C
+++ b/gcc/testsuite/g++.dg/concepts/partial-spec4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T> concept bool is_int = __is_same_as(T,int);
diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec5.C b/gcc/testsuite/g++.dg/concepts/partial-spec5.C
index 18ef242..a5b853c 100644
--- a/gcc/testsuite/g++.dg/concepts/partial-spec5.C
+++ b/gcc/testsuite/g++.dg/concepts/partial-spec5.C
@@ -1,5 +1,6 @@
// PR c++/67138
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T>
concept bool _Auto = true;
diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec6.C b/gcc/testsuite/g++.dg/concepts/partial-spec6.C
index af4411b..1d80ee3 100644
--- a/gcc/testsuite/g++.dg/concepts/partial-spec6.C
+++ b/gcc/testsuite/g++.dg/concepts/partial-spec6.C
@@ -1,5 +1,6 @@
// PR c++/67152
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T>
concept bool HasType = requires { typename T::type; };
diff --git a/gcc/testsuite/g++.dg/concepts/placeholder1.C b/gcc/testsuite/g++.dg/concepts/placeholder1.C
index bf7f959..edd0003 100644
--- a/gcc/testsuite/g++.dg/concepts/placeholder1.C
+++ b/gcc/testsuite/g++.dg/concepts/placeholder1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T, typename U>
struct is_same
diff --git a/gcc/testsuite/g++.dg/concepts/placeholder2.C b/gcc/testsuite/g++.dg/concepts/placeholder2.C
index c8981b61..3d6fc81 100644
--- a/gcc/testsuite/g++.dg/concepts/placeholder2.C
+++ b/gcc/testsuite/g++.dg/concepts/placeholder2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Check argument deduction constraints.
// TODO: We shoul have more of these...
diff --git a/gcc/testsuite/g++.dg/concepts/placeholder3.C b/gcc/testsuite/g++.dg/concepts/placeholder3.C
index 44dba8b..93f0c0d 100644
--- a/gcc/testsuite/g++.dg/concepts/placeholder3.C
+++ b/gcc/testsuite/g++.dg/concepts/placeholder3.C
@@ -1,5 +1,6 @@
// PR c++/66218
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T, class U>
concept bool Same = __is_same_as(T, U);
diff --git a/gcc/testsuite/g++.dg/concepts/placeholder4.C b/gcc/testsuite/g++.dg/concepts/placeholder4.C
index b35238c..d130813 100644
--- a/gcc/testsuite/g++.dg/concepts/placeholder4.C
+++ b/gcc/testsuite/g++.dg/concepts/placeholder4.C
@@ -1,5 +1,6 @@
// PR c++/66218
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T, class U>
concept bool Same = __is_same_as(T, U);
diff --git a/gcc/testsuite/g++.dg/concepts/placeholder5.C b/gcc/testsuite/g++.dg/concepts/placeholder5.C
index c0b67b9..245e27a 100644
--- a/gcc/testsuite/g++.dg/concepts/placeholder5.C
+++ b/gcc/testsuite/g++.dg/concepts/placeholder5.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T, class U>
concept bool Same = __is_same_as(T, U);
diff --git a/gcc/testsuite/g++.dg/concepts/placeholder6.C b/gcc/testsuite/g++.dg/concepts/placeholder6.C
index ab56c63..51282d9 100644
--- a/gcc/testsuite/g++.dg/concepts/placeholder6.C
+++ b/gcc/testsuite/g++.dg/concepts/placeholder6.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <int I> struct B { static const int i = I; };
template <int I> concept bool Few = I < 10;
diff --git a/gcc/testsuite/g++.dg/concepts/pr65552.C b/gcc/testsuite/g++.dg/concepts/pr65552.C
index 57375d7..318fdcc 100644
--- a/gcc/testsuite/g++.dg/concepts/pr65552.C
+++ b/gcc/testsuite/g++.dg/concepts/pr65552.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Concept() {
diff --git a/gcc/testsuite/g++.dg/concepts/pr65575.C b/gcc/testsuite/g++.dg/concepts/pr65575.C
index 6745b84..efaf958 100644
--- a/gcc/testsuite/g++.dg/concepts/pr65575.C
+++ b/gcc/testsuite/g++.dg/concepts/pr65575.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C = false;
diff --git a/gcc/testsuite/g++.dg/concepts/pr65634.C b/gcc/testsuite/g++.dg/concepts/pr65634.C
index db36a6b..e383653 100644
--- a/gcc/testsuite/g++.dg/concepts/pr65634.C
+++ b/gcc/testsuite/g++.dg/concepts/pr65634.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1() {
diff --git a/gcc/testsuite/g++.dg/concepts/pr65636.C b/gcc/testsuite/g++.dg/concepts/pr65636.C
index 01c72a7..2aec0e5 100644
--- a/gcc/testsuite/g++.dg/concepts/pr65636.C
+++ b/gcc/testsuite/g++.dg/concepts/pr65636.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
using TD = int;
diff --git a/gcc/testsuite/g++.dg/concepts/pr65681.C b/gcc/testsuite/g++.dg/concepts/pr65681.C
index 1df9a59..0d8a69d 100644
--- a/gcc/testsuite/g++.dg/concepts/pr65681.C
+++ b/gcc/testsuite/g++.dg/concepts/pr65681.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C()
diff --git a/gcc/testsuite/g++.dg/concepts/pr65848.C b/gcc/testsuite/g++.dg/concepts/pr65848.C
index 5af6e7d..0678018 100644
--- a/gcc/testsuite/g++.dg/concepts/pr65848.C
+++ b/gcc/testsuite/g++.dg/concepts/pr65848.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Performance test... This should be fast.
diff --git a/gcc/testsuite/g++.dg/concepts/pr65854.C b/gcc/testsuite/g++.dg/concepts/pr65854.C
index 395fac4..28eac88 100644
--- a/gcc/testsuite/g++.dg/concepts/pr65854.C
+++ b/gcc/testsuite/g++.dg/concepts/pr65854.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Handle alias templates in type requirements.
diff --git a/gcc/testsuite/g++.dg/concepts/pr66091.C b/gcc/testsuite/g++.dg/concepts/pr66091.C
index e5b3c28..a71cd7b 100644
--- a/gcc/testsuite/g++.dg/concepts/pr66091.C
+++ b/gcc/testsuite/g++.dg/concepts/pr66091.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1()
diff --git a/gcc/testsuite/g++.dg/concepts/pr67249.C b/gcc/testsuite/g++.dg/concepts/pr67249.C
index 87e9bb5..a0eca9b 100644
--- a/gcc/testsuite/g++.dg/concepts/pr67249.C
+++ b/gcc/testsuite/g++.dg/concepts/pr67249.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<class T> concept bool C1 = true;
template<class A, class B> struct Pair {};
diff --git a/gcc/testsuite/g++.dg/concepts/pr67595.C b/gcc/testsuite/g++.dg/concepts/pr67595.C
index 76d1fe6..7b5d712 100644
--- a/gcc/testsuite/g++.dg/concepts/pr67595.C
+++ b/gcc/testsuite/g++.dg/concepts/pr67595.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class X> concept bool allocatable = requires{{new X}->X * };
template <class X> concept bool semiregular = allocatable<X>;
diff --git a/gcc/testsuite/g++.dg/concepts/pr68434.C b/gcc/testsuite/g++.dg/concepts/pr68434.C
index 19ce383..fc45898 100644
--- a/gcc/testsuite/g++.dg/concepts/pr68434.C
+++ b/gcc/testsuite/g++.dg/concepts/pr68434.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class>
concept bool C1 () {
diff --git a/gcc/testsuite/g++.dg/concepts/pr68683.C b/gcc/testsuite/g++.dg/concepts/pr68683.C
index 31a98f3..ff7709e 100644
--- a/gcc/testsuite/g++.dg/concepts/pr68683.C
+++ b/gcc/testsuite/g++.dg/concepts/pr68683.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <typename, typename>
struct is_same {
diff --git a/gcc/testsuite/g++.dg/concepts/pr71368.C b/gcc/testsuite/g++.dg/concepts/pr71368.C
index f0e0a95..5cd2b54 100644
--- a/gcc/testsuite/g++.dg/concepts/pr71368.C
+++ b/gcc/testsuite/g++.dg/concepts/pr71368.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
struct inner;
diff --git a/gcc/testsuite/g++.dg/concepts/pr71385.C b/gcc/testsuite/g++.dg/concepts/pr71385.C
index bd5d08c..42d21f5 100644
--- a/gcc/testsuite/g++.dg/concepts/pr71385.C
+++ b/gcc/testsuite/g++.dg/concepts/pr71385.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<class T>
concept bool Addable(){
diff --git a/gcc/testsuite/g++.dg/concepts/req-neg1.C b/gcc/testsuite/g++.dg/concepts/req-neg1.C
index 97b45cd..637f993 100644
--- a/gcc/testsuite/g++.dg/concepts/req-neg1.C
+++ b/gcc/testsuite/g++.dg/concepts/req-neg1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
void f1(int a) requires true; // OK
auto f2(int a) -> bool requires true; // OK
diff --git a/gcc/testsuite/g++.dg/concepts/req1.C b/gcc/testsuite/g++.dg/concepts/req1.C
index 688cb19..fedea73 100644
--- a/gcc/testsuite/g++.dg/concepts/req1.C
+++ b/gcc/testsuite/g++.dg/concepts/req1.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Class () { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/req10.C b/gcc/testsuite/g++.dg/concepts/req10.C
index 8cbd89f..949859c 100644
--- a/gcc/testsuite/g++.dg/concepts/req10.C
+++ b/gcc/testsuite/g++.dg/concepts/req10.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Test that standard conversions are checked with
// implicit conversion constraints.
diff --git a/gcc/testsuite/g++.dg/concepts/req11.C b/gcc/testsuite/g++.dg/concepts/req11.C
index 2d0c5c0..8891cce 100644
--- a/gcc/testsuite/g++.dg/concepts/req11.C
+++ b/gcc/testsuite/g++.dg/concepts/req11.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Check that we can evaluate constant requires-expressions
// as constant expressions, for the curious case when they
diff --git a/gcc/testsuite/g++.dg/concepts/req12.C b/gcc/testsuite/g++.dg/concepts/req12.C
index 38c2c3e..c6b345a 100644
--- a/gcc/testsuite/g++.dg/concepts/req12.C
+++ b/gcc/testsuite/g++.dg/concepts/req12.C
@@ -1,5 +1,6 @@
// PR c++/66218
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
#include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/req13.C b/gcc/testsuite/g++.dg/concepts/req13.C
index 2f58742..4fd2312 100644
--- a/gcc/testsuite/g++.dg/concepts/req13.C
+++ b/gcc/testsuite/g++.dg/concepts/req13.C
@@ -1,5 +1,6 @@
// PR c++/66758
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T, class...Args>
concept bool Constructible =
diff --git a/gcc/testsuite/g++.dg/concepts/req14.C b/gcc/testsuite/g++.dg/concepts/req14.C
index de00a1e..6e60b6f 100644
--- a/gcc/testsuite/g++.dg/concepts/req14.C
+++ b/gcc/testsuite/g++.dg/concepts/req14.C
@@ -1,5 +1,6 @@
// PR c++/66758
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T, class U>
concept bool C = requires (T t, U u) { t + u; };
diff --git a/gcc/testsuite/g++.dg/concepts/req15.C b/gcc/testsuite/g++.dg/concepts/req15.C
index 53d796c..385d51d 100644
--- a/gcc/testsuite/g++.dg/concepts/req15.C
+++ b/gcc/testsuite/g++.dg/concepts/req15.C
@@ -1,5 +1,6 @@
// PR c++/66832
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T, class U, unsigned N>
requires requires (T& t, U &u) { t.foo(); u.foo(); }
diff --git a/gcc/testsuite/g++.dg/concepts/req16.C b/gcc/testsuite/g++.dg/concepts/req16.C
index ee80da0..ca04d60 100644
--- a/gcc/testsuite/g++.dg/concepts/req16.C
+++ b/gcc/testsuite/g++.dg/concepts/req16.C
@@ -1,5 +1,6 @@
// PR c++/66988
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
#include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/req17.C b/gcc/testsuite/g++.dg/concepts/req17.C
index e1e3eac..472cfef 100644
--- a/gcc/testsuite/g++.dg/concepts/req17.C
+++ b/gcc/testsuite/g++.dg/concepts/req17.C
@@ -1,5 +1,6 @@
// PR c++/67018
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <typename T>
constexpr bool Val = true;
diff --git a/gcc/testsuite/g++.dg/concepts/req18.C b/gcc/testsuite/g++.dg/concepts/req18.C
index 5ddb9e7..cccfaed 100644
--- a/gcc/testsuite/g++.dg/concepts/req18.C
+++ b/gcc/testsuite/g++.dg/concepts/req18.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class> struct all_same {
static constexpr bool value = 1;
diff --git a/gcc/testsuite/g++.dg/concepts/req19.C b/gcc/testsuite/g++.dg/concepts/req19.C
index d52ac23..97cd9e5 100644
--- a/gcc/testsuite/g++.dg/concepts/req19.C
+++ b/gcc/testsuite/g++.dg/concepts/req19.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
struct B
{
diff --git a/gcc/testsuite/g++.dg/concepts/req2.C b/gcc/testsuite/g++.dg/concepts/req2.C
index 3f35ee8..b32845a 100644
--- a/gcc/testsuite/g++.dg/concepts/req2.C
+++ b/gcc/testsuite/g++.dg/concepts/req2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Class () { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/req20.C b/gcc/testsuite/g++.dg/concepts/req20.C
index 38ade56..bd6b0f9 100644
--- a/gcc/testsuite/g++.dg/concepts/req20.C
+++ b/gcc/testsuite/g++.dg/concepts/req20.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T> concept bool C = true;
diff --git a/gcc/testsuite/g++.dg/concepts/req3.C b/gcc/testsuite/g++.dg/concepts/req3.C
index 8322e71..8ce58e5 100644
--- a/gcc/testsuite/g++.dg/concepts/req3.C
+++ b/gcc/testsuite/g++.dg/concepts/req3.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do run { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Class () { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/req4.C b/gcc/testsuite/g++.dg/concepts/req4.C
index b8c4209..fcc13c6 100644
--- a/gcc/testsuite/g++.dg/concepts/req4.C
+++ b/gcc/testsuite/g++.dg/concepts/req4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
struct fool {
constexpr fool operator&&(fool) const { return {}; }
diff --git a/gcc/testsuite/g++.dg/concepts/req5.C b/gcc/testsuite/g++.dg/concepts/req5.C
index a3a315c..7ad1cab 100644
--- a/gcc/testsuite/g++.dg/concepts/req5.C
+++ b/gcc/testsuite/g++.dg/concepts/req5.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
struct fool { };
diff --git a/gcc/testsuite/g++.dg/concepts/req6.C b/gcc/testsuite/g++.dg/concepts/req6.C
index 50fa3b4..dd7dbdd 100644
--- a/gcc/testsuite/g++.dg/concepts/req6.C
+++ b/gcc/testsuite/g++.dg/concepts/req6.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
struct X { };
int operator==(X, X) { return 0; }
diff --git a/gcc/testsuite/g++.dg/concepts/req7.C b/gcc/testsuite/g++.dg/concepts/req7.C
index 38933e4..a6cfb4b 100644
--- a/gcc/testsuite/g++.dg/concepts/req7.C
+++ b/gcc/testsuite/g++.dg/concepts/req7.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
#include <vector>
diff --git a/gcc/testsuite/g++.dg/concepts/req8.C b/gcc/testsuite/g++.dg/concepts/req8.C
index 5a34358..201be37 100644
--- a/gcc/testsuite/g++.dg/concepts/req8.C
+++ b/gcc/testsuite/g++.dg/concepts/req8.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
// Check that type requirements are normalized correctly.
diff --git a/gcc/testsuite/g++.dg/concepts/req9.C b/gcc/testsuite/g++.dg/concepts/req9.C
index c4d6b57..497154c 100644
--- a/gcc/testsuite/g++.dg/concepts/req9.C
+++ b/gcc/testsuite/g++.dg/concepts/req9.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
struct S1 {};
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm1.C b/gcc/testsuite/g++.dg/concepts/template-parm1.C
index 88731d6..192226f 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm1.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1 = __is_same_as(T, int);
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm10.C b/gcc/testsuite/g++.dg/concepts/template-parm10.C
index cbce4f3..33bf372 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm10.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm10.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<int N, class T>
concept bool P() { return true; }
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm11.C b/gcc/testsuite/g++.dg/concepts/template-parm11.C
index 352acc2..04e11e2 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm11.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm11.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool NameProvider()
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm12.C b/gcc/testsuite/g++.dg/concepts/template-parm12.C
index aee63dc..8745bb1 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm12.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm12.C
@@ -1,5 +1,6 @@
// Conceptized version of template/ttp23.C
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T> concept bool Foo = true;
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm2.C b/gcc/testsuite/g++.dg/concepts/template-parm2.C
index 6a32cfe..adecc12 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm2.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1 = __is_same_as(T, int);
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm3.C b/gcc/testsuite/g++.dg/concepts/template-parm3.C
index 61fa86d..3d37e9c 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm3.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1 = __is_same_as(T, int);
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm4.C b/gcc/testsuite/g++.dg/concepts/template-parm4.C
index c384042..f546a75 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm4.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1 = __is_same_as(T, int);
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm5.C b/gcc/testsuite/g++.dg/concepts/template-parm5.C
index 5e537b0..cd93c607 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm5.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm5.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1 = __is_same_as(T, int);
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm6.C b/gcc/testsuite/g++.dg/concepts/template-parm6.C
index eb4bb16..9efe409 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm6.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm6.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename... Ts> struct are_same;
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm7.C b/gcc/testsuite/g++.dg/concepts/template-parm7.C
index 27d19e9..1dfa0d1 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm7.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm7.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename... Ts> struct are_same;
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm8.C b/gcc/testsuite/g++.dg/concepts/template-parm8.C
index 63a12c4..63c4512 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm8.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm8.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/template-parm9.C b/gcc/testsuite/g++.dg/concepts/template-parm9.C
index e34c606..64308cd 100644
--- a/gcc/testsuite/g++.dg/concepts/template-parm9.C
+++ b/gcc/testsuite/g++.dg/concepts/template-parm9.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C() { return __is_class(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/template-template-parm1.C b/gcc/testsuite/g++.dg/concepts/template-template-parm1.C
index e828db9..6c4dc2c 100644
--- a/gcc/testsuite/g++.dg/concepts/template-template-parm1.C
+++ b/gcc/testsuite/g++.dg/concepts/template-template-parm1.C
@@ -1,5 +1,6 @@
// PR c++/66937
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
#include <tuple>
diff --git a/gcc/testsuite/g++.dg/concepts/traits1.C b/gcc/testsuite/g++.dg/concepts/traits1.C
index b5a7185..27610e2 100644
--- a/gcc/testsuite/g++.dg/concepts/traits1.C
+++ b/gcc/testsuite/g++.dg/concepts/traits1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Nothrow_assignable() { return __has_nothrow_assign(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/traits2.C b/gcc/testsuite/g++.dg/concepts/traits2.C
index 3383d26..71dcfd3 100644
--- a/gcc/testsuite/g++.dg/concepts/traits2.C
+++ b/gcc/testsuite/g++.dg/concepts/traits2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool Nothrow_assignable() { return __has_nothrow_assign(T); }
diff --git a/gcc/testsuite/g++.dg/concepts/var-concept1.C b/gcc/testsuite/g++.dg/concepts/var-concept1.C
index 1456c07..90a88d8 100644
--- a/gcc/testsuite/g++.dg/concepts/var-concept1.C
+++ b/gcc/testsuite/g++.dg/concepts/var-concept1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1 = __is_class(T);
diff --git a/gcc/testsuite/g++.dg/concepts/var-concept2.C b/gcc/testsuite/g++.dg/concepts/var-concept2.C
index c71e8a4..c16d3e4 100644
--- a/gcc/testsuite/g++.dg/concepts/var-concept2.C
+++ b/gcc/testsuite/g++.dg/concepts/var-concept2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1 = __is_class(T);
diff --git a/gcc/testsuite/g++.dg/concepts/var-concept3.C b/gcc/testsuite/g++.dg/concepts/var-concept3.C
index d4f4f57..f3d642b 100644
--- a/gcc/testsuite/g++.dg/concepts/var-concept3.C
+++ b/gcc/testsuite/g++.dg/concepts/var-concept3.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T>
concept bool C1 = __is_class(T);
diff --git a/gcc/testsuite/g++.dg/concepts/var-concept4.C b/gcc/testsuite/g++.dg/concepts/var-concept4.C
index 677deda..3864c9d 100644
--- a/gcc/testsuite/g++.dg/concepts/var-concept4.C
+++ b/gcc/testsuite/g++.dg/concepts/var-concept4.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T, typename U>
concept bool Same = __is_same_as(T, U);
diff --git a/gcc/testsuite/g++.dg/concepts/var-concept5.C b/gcc/testsuite/g++.dg/concepts/var-concept5.C
index 68c4a6f..b1e9cb5 100644
--- a/gcc/testsuite/g++.dg/concepts/var-concept5.C
+++ b/gcc/testsuite/g++.dg/concepts/var-concept5.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename T1, typename T2>
concept bool C1 = true;
diff --git a/gcc/testsuite/g++.dg/concepts/var-concept6.C b/gcc/testsuite/g++.dg/concepts/var-concept6.C
index 645e8ca..8f5ac62 100644
--- a/gcc/testsuite/g++.dg/concepts/var-concept6.C
+++ b/gcc/testsuite/g++.dg/concepts/var-concept6.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T>
concept int C = true; // { dg-error "bool" }
diff --git a/gcc/testsuite/g++.dg/concepts/var-concept7.C b/gcc/testsuite/g++.dg/concepts/var-concept7.C
index 0df4a49..8371b37 100644
--- a/gcc/testsuite/g++.dg/concepts/var-concept7.C
+++ b/gcc/testsuite/g++.dg/concepts/var-concept7.C
@@ -1,5 +1,6 @@
// PR c++/85133
-// { dg-additional-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-additional-options "-fconcepts" }
template<typename> concept bool C; // { dg-error "no initializer" }
diff --git a/gcc/testsuite/g++.dg/concepts/var-templ1.C b/gcc/testsuite/g++.dg/concepts/var-templ1.C
index f24d76d..b69d7d8d 100644
--- a/gcc/testsuite/g++.dg/concepts/var-templ1.C
+++ b/gcc/testsuite/g++.dg/concepts/var-templ1.C
@@ -1,5 +1,6 @@
// PR c++/67117
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T>
requires false
diff --git a/gcc/testsuite/g++.dg/concepts/var-templ2.C b/gcc/testsuite/g++.dg/concepts/var-templ2.C
index 2e04ed6..ffe5f1f 100644
--- a/gcc/testsuite/g++.dg/concepts/var-templ2.C
+++ b/gcc/testsuite/g++.dg/concepts/var-templ2.C
@@ -1,5 +1,6 @@
// PR c++/67139
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T>
constexpr typename T::type::value_type _v = T::type::value;
diff --git a/gcc/testsuite/g++.dg/concepts/var-templ3.C b/gcc/testsuite/g++.dg/concepts/var-templ3.C
index 0746863..22f07ee 100644
--- a/gcc/testsuite/g++.dg/concepts/var-templ3.C
+++ b/gcc/testsuite/g++.dg/concepts/var-templ3.C
@@ -1,5 +1,6 @@
// PR c++/68666
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
struct A {
template <class>
diff --git a/gcc/testsuite/g++.dg/concepts/variadic1.C b/gcc/testsuite/g++.dg/concepts/variadic1.C
index b1b5ba5..4c0f437 100644
--- a/gcc/testsuite/g++.dg/concepts/variadic1.C
+++ b/gcc/testsuite/g++.dg/concepts/variadic1.C
@@ -1,5 +1,6 @@
// PR c++/66712
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T, class...Args>
concept bool _Constructible_ =
diff --git a/gcc/testsuite/g++.dg/concepts/variadic2.C b/gcc/testsuite/g++.dg/concepts/variadic2.C
index 2b64a62..4675d97 100644
--- a/gcc/testsuite/g++.dg/concepts/variadic2.C
+++ b/gcc/testsuite/g++.dg/concepts/variadic2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template <class T> concept bool Copyable = requires (T t) { T(t); };
template <class T> concept bool Constructable = requires { T(); };
diff --git a/gcc/testsuite/g++.dg/concepts/variadic4.C b/gcc/testsuite/g++.dg/concepts/variadic4.C
index 48bdfee..e0f7903 100644
--- a/gcc/testsuite/g++.dg/concepts/variadic4.C
+++ b/gcc/testsuite/g++.dg/concepts/variadic4.C
@@ -1,5 +1,6 @@
// PR c++/73456
-// { dg-options "-std=c++17 -fconcepts" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fconcepts" }
template<typename...> struct list {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/Wpessimizing-move1.C b/gcc/testsuite/g++.dg/cpp1z/Wpessimizing-move1.C
index 5974188..9dec587 100644
--- a/gcc/testsuite/g++.dg/cpp1z/Wpessimizing-move1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/Wpessimizing-move1.C
@@ -1,5 +1,6 @@
// PR c++/86981
-// { dg-options "-Wpessimizing-move -std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-Wpessimizing-move" }
#include <utility>
#include <optional>
diff --git a/gcc/testsuite/g++.dg/cpp1z/aggr-base1.C b/gcc/testsuite/g++.dg/cpp1z/aggr-base1.C
index 2c6bdca..40353f4 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aggr-base1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aggr-base1.C
@@ -1,5 +1,4 @@
-// { dg-options -std=c++17 }
-// { dg-do run }
+// { dg-do run { target c++17 } }
struct base1 { int b1, b2 = 42; };
struct base2 {
diff --git a/gcc/testsuite/g++.dg/cpp1z/aggr-base2.C b/gcc/testsuite/g++.dg/cpp1z/aggr-base2.C
index 5d73bbf..855bed9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aggr-base2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aggr-base2.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct derived;
struct base {
diff --git a/gcc/testsuite/g++.dg/cpp1z/aggr-base3.C b/gcc/testsuite/g++.dg/cpp1z/aggr-base3.C
index f526a6e..c051c08 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aggr-base3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aggr-base3.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct derived;
struct base { };
diff --git a/gcc/testsuite/g++.dg/cpp1z/aggr-base4.C b/gcc/testsuite/g++.dg/cpp1z/aggr-base4.C
index 8f9126b..7a4865a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aggr-base4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aggr-base4.C
@@ -1,5 +1,4 @@
-// { dg-options -std=c++17 }
-// { dg-do run }
+// { dg-do run { target c++17 } }
struct derived;
struct base { };
diff --git a/gcc/testsuite/g++.dg/cpp1z/aggr-base5.C b/gcc/testsuite/g++.dg/cpp1z/aggr-base5.C
index 5f6d9ad..17882b7 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aggr-base5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aggr-base5.C
@@ -1,5 +1,5 @@
-// { dg-options "-std=c++17 -w" }
-// { dg-do run }
+// { dg-options "-w" }
+// { dg-do run { target c++17 } }
struct A { };
struct B: A { int i; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/aggr-base6.C b/gcc/testsuite/g++.dg/cpp1z/aggr-base6.C
index 08578ed..3de2e72 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aggr-base6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aggr-base6.C
@@ -1,5 +1,5 @@
-// { dg-options "-std=c++17 -w" }
-// { dg-do run }
+// { dg-options "-w" }
+// { dg-do run { target c++17 } }
struct A { };
struct B: A { int i; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/aligned-new1.C b/gcc/testsuite/g++.dg/cpp1z/aligned-new1.C
index 09f823e..48e9e94 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aligned-new1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aligned-new1.C
@@ -1,5 +1,4 @@
-// { dg-options -std=c++17 }
-// { dg-do run }
+// { dg-do run { target c++17 } }
#ifndef __STDCPP_DEFAULT_NEW_ALIGNMENT__
#error __STDCPP_DEFAULT_NEW_ALIGNMENT__ not defined
diff --git a/gcc/testsuite/g++.dg/cpp1z/aligned-new2.C b/gcc/testsuite/g++.dg/cpp1z/aligned-new2.C
index 7bf6309..5c1c4eb 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aligned-new2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aligned-new2.C
@@ -1,5 +1,4 @@
-// { dg-options -std=c++17 }
-// { dg-do run }
+// { dg-do run { target c++17 } }
#include <new>
diff --git a/gcc/testsuite/g++.dg/cpp1z/aligned-new3.C b/gcc/testsuite/g++.dg/cpp1z/aligned-new3.C
index 2bfb6b8..08cd732 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aligned-new3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aligned-new3.C
@@ -1,5 +1,4 @@
-// { dg-options -std=c++17 }
-// { dg-do run }
+// { dg-do run { target c++17 } }
#include <new>
diff --git a/gcc/testsuite/g++.dg/cpp1z/aligned-new7.C b/gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
index 52011f2..5b364d6 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
@@ -1,5 +1,6 @@
// PR c++/77742
-// { dg-options "-Wall -std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-Wall" }
#include <new>
diff --git a/gcc/testsuite/g++.dg/cpp1z/aligned-new8.C b/gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
index 11dd457..9c12520 100644
--- a/gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
@@ -1,6 +1,5 @@
// PR c++/82760
-// { dg-options -std=c++17 }
-// { dg-do run }
+// { dg-do run { target c++17 } }
#include <new>
#include <cstddef>
diff --git a/gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C b/gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
index ad7d237..1e9e996 100644
--- a/gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
#ifndef __cpp_enumerator_attributes
#error __cpp_enumerator_attributes not defined
diff --git a/gcc/testsuite/g++.dg/cpp1z/bool-increment1.C b/gcc/testsuite/g++.dg/cpp1z/bool-increment1.C
index 236fba3..0355dc8 100644
--- a/gcc/testsuite/g++.dg/cpp1z/bool-increment1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/bool-increment1.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int
fn (bool b)
diff --git a/gcc/testsuite/g++.dg/cpp1z/byte1.C b/gcc/testsuite/g++.dg/cpp1z/byte1.C
index d3b9b88..631b18d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/byte1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/byte1.C
@@ -1,5 +1,6 @@
// Test for std::byte aliasing properties.
-// { dg-options "-std=c++17 -O3" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-O3" }
#include <cstddef>
diff --git a/gcc/testsuite/g++.dg/cpp1z/byte2.C b/gcc/testsuite/g++.dg/cpp1z/byte2.C
index 6a395c1..717aea8 100644
--- a/gcc/testsuite/g++.dg/cpp1z/byte2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/byte2.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -Wall" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-Wall" }
#include <cstddef>
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction1.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction1.C
index 7e1588e..752b430 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction1.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction10.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction10.C
index a3879fc..eb0b15e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction10.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction10.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction11.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction11.C
index 301ba9a..2a75949 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction11.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction11.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction12.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction12.C
index e858dcf..a31cc15 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction12.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction12.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction13.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction13.C
index 0bacf9b..7a07bef 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction13.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction13.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index 41d58db..ba2ba9b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction15.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction15.C
index 3f0e229..5d050f1 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction15.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction15.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction16.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction16.C
index 2a636e2..3db8a02 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction16.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction16.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction17.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction17.C
index 646b5aa..e8d1ab2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction17.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction17.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <initializer_list>
template <class T>
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction18.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction18.C
index 42f936a..a0e6a73 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction18.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction18.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<class T> struct S{S(T){}};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction19.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction19.C
index 5c21b74..a098e14 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction19.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction19.C
@@ -1,5 +1,5 @@
// PR c++/77912
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<class T> struct S{S(T){}};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction2.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction2.C
index 2e1d115..a0cd20c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction2.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction20.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction20.C
index 988f11b..4c009e7 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction20.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction20.C
@@ -1,5 +1,5 @@
// PR c++/77890
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<class F> struct S{S(F&&f){}};
void f()
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction21.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction21.C
index 2c2ce46..e8cd562 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction21.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction21.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<class T, class D = int>
struct S { T t; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction22.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction22.C
index a1f0c20..0a26085 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction22.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction22.C
@@ -1,10 +1,10 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <template <class> class T>
void f()
{
T t = 42; // { dg-error "B" }
-};
+}
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction23.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction23.C
index a2fa406..a383304 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction23.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction23.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction24.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction24.C
index c4d890c..1d05a08 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction24.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction24.C
@@ -1,5 +1,5 @@
// PR c++/78894
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction25.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction25.C
index d3259d8..2d8c3ef 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction25.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction25.C
@@ -1,5 +1,5 @@
// Testcase from P0512R0 for C++17 NB comment US 19
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<typename> struct remove_ref;
template<typename _Tp> struct remove_ref { typedef _Tp type; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction26.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction26.C
index 74de70c..bfdba79 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction26.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction26.C
@@ -1,5 +1,5 @@
// Testcase from P0512R0 for C++17 NB comment US 20
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class,class> struct same;
template <class T> struct same<T,T> {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction27.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction27.C
index ce58058..a9a9d8c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction27.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction27.C
@@ -1,5 +1,5 @@
// PR c++/79316
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<typename T> struct S { S(T t) {} };
template<typename T> S(T, int = 7) -> S<T>;
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction28.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction28.C
index 8238e5b..2fec7f7 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction28.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction28.C
@@ -1,5 +1,5 @@
// PR c++/79350
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction29.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction29.C
index 8c2d67e..6c24716 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction29.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction29.C
@@ -1,5 +1,5 @@
// PR c++/79500
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<typename T> struct A {};
A(...) -> A<int>;
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction3.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction3.C
index 13e001a..9b32783 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction3.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <int I>
struct A { };
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction30.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction30.C
index d0ef5f9..4339a5e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction30.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction30.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T = void> struct A { };
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction31.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction31.C
index 2fd2f28..67243b2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction31.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction31.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T> struct A {
A(T); // #1
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction32.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction32.C
index 0f4c85a..ef21c96 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction32.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction32.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <initializer_list>
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction33.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction33.C
index ee9d780..4572b0a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction33.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction33.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class,class> struct same;
template <class T> struct same<T,T> {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction34.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction34.C
index 380c35f..26c063a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction34.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction34.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction35.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction35.C
index 63d099d..b63cf82 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction35.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction35.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T> struct A;
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction36.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction36.C
index 3670cee..a9c95fe 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction36.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction36.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T> struct A {
A(T&);
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction38.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction38.C
index 883961e..64c276a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction38.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction38.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T> struct A {
using value_type = T;
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction39.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction39.C
index f141e9b..772434a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction39.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction39.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T> struct A { };
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction4.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction4.C
index a86589c..391beee 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction4.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <int I, int J>
struct A { };
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction40.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction40.C
index 3888b39..4420277 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction40.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction40.C
@@ -1,5 +1,5 @@
// PR c++/81180
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template < int I > struct int_{};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction41.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction41.C
index f287ce9..5557ae9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction41.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction41.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <initializer_list>
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction42.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction42.C
index 4623e74..dfba826 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction42.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction42.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <initializer_list>
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction43.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction43.C
index 1201455..55a79b3 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction43.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction43.C
@@ -1,5 +1,5 @@
// PR c++/79790
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <int N>
struct array
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction44.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
index 1571197..225652c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
@@ -1,5 +1,5 @@
// PR c++/80412
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename> struct A;
template <typename> struct B : A < B { , // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction45.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction45.C
index 3fe8dd3..6f72b5f 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction45.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction45.C
@@ -1,5 +1,5 @@
// PR c++/82308
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<typename, unsigned>
struct array {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction46.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction46.C
index cf38ed6..513e160 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction46.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction46.C
@@ -1,5 +1,5 @@
// PR c++/80449
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<class S> struct C;
template<> struct C<int> { C(int, int) {} };
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C
index 1cfdc44..ab64cc4 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C
@@ -1,5 +1,5 @@
// PR c++/82468
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <template <class> class TT>
TT(double) -> TT<int>; // { dg-error "template template" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C
index 086f12a..658ae43 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C
@@ -1,5 +1,5 @@
// PR c++/84015
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <int I>
struct A { };
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction5.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction5.C
index a7d56fbf..49d4c94 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction5.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C
index e8cdd8c..7289932 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C
@@ -1,5 +1,5 @@
// PR c++/84355
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class, class> struct same;
template <class T> struct same<T,T> {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C
index eba7972..ef593ff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C
@@ -1,5 +1,5 @@
// PR c++/84937
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<int, int> struct A {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction52.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction52.C
index db786ce..6ea9e80 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction52.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction52.C
@@ -1,5 +1,5 @@
// PR c++/84768
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<typename> struct A {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
index e51398b..2e87139 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
@@ -1,5 +1,5 @@
// PR c++/82152
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct Base {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction55.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction55.C
index a93d720..74fd29f 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction55.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction55.C
@@ -1,5 +1,5 @@
// PR c++/85883
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename T>
struct Bar
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction56.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction56.C
index 71dbfa1..6cf54b3 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction56.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction56.C
@@ -1,5 +1,5 @@
// PR c++/85883
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename T1, typename T2>
struct Bar
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction57.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction57.C
index 200ba6c..f1c776e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction57.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction57.C
@@ -1,5 +1,5 @@
// PR c++/85883
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename T1, typename T2, typename T3>
struct Bar
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C
index 82c3f83..0613a9e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C
@@ -1,5 +1,5 @@
// PR c++/86098
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class _Res> class future;
template <class T> T&& declval();
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction6.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction6.C
index 3f751ce..b20bd75 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction6.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction7.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
index d635a64..ab96774 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction8.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
index 9836e26..20cabe0 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction9.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
index 23c58fd..c0af944 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
namespace N {
template <class T>
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-83692.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-83692.C
index f6b61ee..3c6592c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-83692.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-83692.C
@@ -1,5 +1,5 @@
// PR c++/83692
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct integer {
constexpr int value() const { return m_value; }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
index 0e7912d..43dcf71 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
@@ -1,5 +1,5 @@
// PR c++/84684
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
typedef decltype (sizeof (0)) size_t;
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
index f10d830..84d7b20 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
@@ -1,5 +1,5 @@
// PR c++/78948
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <int T>
void sizeof_mismatch()
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
index aaef952..56922bb 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
@@ -1,6 +1,6 @@
// Test that discarded statements differ from unevaluated operands in some
// ways.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A { int i; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C
index db984a6..f21a989 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C
@@ -1,5 +1,5 @@
// PR c++/80562
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct T {
constexpr auto foo() { return false; }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C
index 55dbfd9..459fa132 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C
@@ -1,5 +1,5 @@
// PR c++/83273
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int main()
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C
index f6cc39a..69af775 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C
@@ -1,5 +1,5 @@
// PR c++/84421
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A{
constexpr operator bool() const { return true; }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if15.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if15.C
index 9a9053c..1dd8bea 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if15.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if15.C
@@ -1,5 +1,5 @@
// PR c++/84854
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
constexpr int foo () { return 1; }
constexpr int foo (int) { return 2; }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if16.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if16.C
index 31a1497..dfece04 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if16.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if16.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if17.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if17.C
index c6ebf1e..cf637f6 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if17.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if17.C
@@ -1,6 +1,5 @@
// PR c++/85149
-// { dg-do run }
-// { dg-additional-options -std=c++17 }
+// { dg-do run { target c++17 } }
template <typename T> struct is_void { static constexpr bool value = false; };
template <> struct is_void<void> { static constexpr bool value = true; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if18.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if18.C
index 03ad620..a560117 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if18.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if18.C
@@ -1,5 +1,5 @@
// PR c++/85200
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename T>
void f(){
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if19.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if19.C
index 40016a5..a1eaf32 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if19.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if19.C
@@ -1,5 +1,5 @@
// PR c++/85200
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A{
constexpr operator int(){ return 0; }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if20.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if20.C
index 24343ad..2fd678b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if20.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if20.C
@@ -1,5 +1,5 @@
// PR c++/85214
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct g {
constexpr operator int() { return true; }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if21.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if21.C
index 56e108b..b02417f 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if21.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if21.C
@@ -1,5 +1,5 @@
// PR c++/85032
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if22.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if22.C
index 76f0c73..32ed5df 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if22.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if22.C
@@ -1,5 +1,5 @@
// PR c++/85695
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename T, T v>
struct integral_constant {
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if23.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if23.C
index 8e31db3..4f6cf3d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if23.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if23.C
@@ -1,5 +1,5 @@
// PR c++/85842
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<class T>
auto f = [](auto&& arg) -> T* {
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if24.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if24.C
index cbdb38d..8e6034c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if24.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if24.C
@@ -1,5 +1,5 @@
// PR c++/86480
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class...> constexpr bool val = true;
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C
index 501e7d3..a2250a2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
constexpr auto Add5 = [](int i) { return i+5; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C
index 2af652d..d13053a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C
@@ -1,5 +1,5 @@
// Testcase from P0170R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
void g() {
const int n = 0;
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C
index f5d58ce..98b27c1 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C
@@ -1,5 +1,5 @@
// Testcase from P0170R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
// 'v' & 'm' are odr-used but do not occur in a constant-expression within the nested
// lambda, so are well-formed.
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C
index 1ad2f68..a59bf49 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
void f(int i)
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C
index 35baff3..962ec8d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
auto l1 = []() constexpr constexpr { }; // { dg-error "duplicate" }
auto l2 = []() mutable mutable { }; // { dg-error "duplicate" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda17.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda17.C
index 44bd2b8..89585f3 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda17.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda17.C
@@ -1,5 +1,5 @@
// PR c++/78131
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename TF>
constexpr auto f(TF)
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C
index 639018b..c7ef8d0 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C
@@ -1,5 +1,5 @@
// PR c++/82570
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
template< typename Body >
inline void iterate(Body body)
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda19.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda19.C
index a16d31c..c6266c2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda19.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda19.C
@@ -1,5 +1,5 @@
// PR c++/84098
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A{};
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C
index a6b3e53..3cf9d03 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C
@@ -1,5 +1,5 @@
// Testcase from P0170R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
constexpr int AddEleven(int n){
return[n]{return n+11;}();
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda20.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda20.C
index c5109b8..d2d220c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda20.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda20.C
@@ -1,5 +1,5 @@
// PR c++/82022
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
void f2()
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda21.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda21.C
index 8b0c95b..210726b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda21.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda21.C
@@ -1,5 +1,5 @@
// PR c++/85228
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<int> struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
index b2772b3..ccdf697 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
constexpr auto add = [] (int n, int m) {
auto L = [=] { return n; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
index 106b504..83a2029 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
auto ID = [] (int n) constexpr { return n; };
constexpr int I = ID(3);
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
index 8c9db95..c9fa63d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
auto addOne = [] (int n) {
return n + 1;
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C
index cd7c5b9..214d382 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C
@@ -1,5 +1,5 @@
// Testcase from P0170R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
auto monoid = [](auto v) { return [=] { return v; }; };
auto add = [](auto m1) constexpr {
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C
index 4dc5ae2..474ce88 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C
@@ -1,5 +1,5 @@
// Testcase from P0170R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
auto ID = [](auto a) { return a; };
static_assert( ID (3) == 3); // OK
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C
index 0bac4c1..84be68a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C
@@ -1,5 +1,5 @@
// Testcase from P0170R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
auto Fwd = [](int (*fp)(int), auto a) { return fp(a); };
auto C = [](auto a) { return a; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C
index 23fdc93..c4999c5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C
@@ -1,4 +1,4 @@
// Testcase from P0170R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
static_assert([](int n) { return [&n] { return ++n; }(); }(3) == 4);
diff --git a/gcc/testsuite/g++.dg/cpp1z/cplusplus.C b/gcc/testsuite/g++.dg/cpp1z/cplusplus.C
index bc6139b..cc27e1e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/cplusplus.C
+++ b/gcc/testsuite/g++.dg/cpp1z/cplusplus.C
@@ -1,5 +1,4 @@
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17_only } }
#if __cplusplus != 201703L
#error "__cplusplus != 201703L"
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C b/gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C
index 1833bc3..1a14997 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C
@@ -1,5 +1,5 @@
// Test of bit-fields.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A { long i: 2; } a;
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C b/gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C
index 04ca9a1..1a53741 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C
@@ -1,5 +1,5 @@
// Test for reference address comparison in constant expression.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int i[2];
struct A { int i, j; } a;
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C b/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C
index fbab025..6161e4d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C
@@ -1,5 +1,5 @@
// PR c++/84420
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int main(){
int a[1]{};
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp10.C b/gcc/testsuite/g++.dg/cpp1z/decomp10.C
index b4169d3..f0723f8 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp10.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp10.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
namespace std {
template<typename T> struct tuple_size;
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp11.C b/gcc/testsuite/g++.dg/cpp1z/decomp11.C
index edb6709..38dfb36 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp11.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp11.C
@@ -1,5 +1,5 @@
// Test for decltype of direct decomposition.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class,class> struct same_type;
template <class T> struct same_type<T,T> {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp12.C b/gcc/testsuite/g++.dg/cpp1z/decomp12.C
index 09ed646..56fd498 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp12.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp12.C
@@ -1,6 +1,5 @@
// PR c++/78358
-// { dg-do run }
-// { dg-options -std=c++17 }
+// { dg-do run { target c++17 } }
#include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp15.C b/gcc/testsuite/g++.dg/cpp1z/decomp15.C
index e5dc443..72e2c52 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp15.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp15.C
@@ -1,5 +1,4 @@
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
struct A { bool a, b; };
struct B { int a, b; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp16.C b/gcc/testsuite/g++.dg/cpp1z/decomp16.C
index 7589c80..fe0be16 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp16.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp16.C
@@ -1,5 +1,4 @@
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
struct A { bool a, b; };
struct B { int a, b; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp17.C b/gcc/testsuite/g++.dg/cpp1z/decomp17.C
index ace1f06..73dbebe 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp17.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp17.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp20.C b/gcc/testsuite/g++.dg/cpp1z/decomp20.C
index 8475e5d..8309ce8 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp20.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp20.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A { int i,j; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp21.C b/gcc/testsuite/g++.dg/cpp1z/decomp21.C
index 6f21c9c..9ed0da3 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp21.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp21.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int a[3];
struct S { int b, c, d; } s;
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp27.C b/gcc/testsuite/g++.dg/cpp1z/decomp27.C
index fd5f30e..a28f500 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp27.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp27.C
@@ -1,6 +1,5 @@
// PR c++/80084
-// { dg-options -std=c++17 }
-// { dg-do run }
+// { dg-do run { target c++17 } }
struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp29.C b/gcc/testsuite/g++.dg/cpp1z/decomp29.C
index 3ccc383..3404a58 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp29.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp29.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -Wunused" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-Wunused" }
#include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp30.C b/gcc/testsuite/g++.dg/cpp1z/decomp30.C
index b11a312..9de3979 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp30.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp30.C
@@ -1,5 +1,5 @@
// PR c++/81258
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int a[2];
auto [b, c] (a);
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index dc47908..6bf8176 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,5 +1,4 @@
-// { dg-additional-options -std=c++17 }
-// { dg-do compile }
+// { dg-do compile { target c++17 } }
#include <memory>
#include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp38.C b/gcc/testsuite/g++.dg/cpp1z/decomp38.C
index fc69c02..769318e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp38.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp38.C
@@ -1,5 +1,4 @@
-// { dg-additional-options -std=c++17 }
-// { dg-do compile }
+// { dg-do compile { target c++17 } }
class X
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp9.C b/gcc/testsuite/g++.dg/cpp1z/decomp9.C
index 0a19876..845635a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp9.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp9.C
@@ -1,5 +1,4 @@
-// { dg-do run }
-// { dg-options -std=c++17 }
+// { dg-do run { target c++17 } }
#define assert(X) do { if (!(X)) __builtin_abort(); } while (0)
diff --git a/gcc/testsuite/g++.dg/cpp1z/elide1.C b/gcc/testsuite/g++.dg/cpp1z/elide1.C
index 6875c82..7b35b9e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/elide1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/elide1.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index 95dd106..af26cb2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,6 +1,5 @@
// P0145R2: Refining Expression Order for C++
-// { dg-do run }
-// { dg-options "-std=c++17" }
+// { dg-do run { target c++17 } }
#include <string>
#define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order3.C b/gcc/testsuite/g++.dg/cpp1z/eval-order3.C
index b53e96a..5773591 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order3.C
@@ -1,6 +1,5 @@
// P0145R2: Refining Expression Order for C++
-// { dg-do run }
-// { dg-options "-std=c++17" }
+// { dg-do run { target c++17 } }
extern "C" int printf (const char *, ...);
void sink(...) { }
diff --git a/gcc/testsuite/g++.dg/cpp1z/fallthrough1.C b/gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
index 54a8323..c6f54ce 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
@@ -1,6 +1,6 @@
// PR c/7652
-// { dg-do compile }
-// { dg-options "-std=c++17 -Wextra -Wall -Wpedantic" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-Wextra -Wall -Wpedantic" }
// Check that we accept attribute [[fallthrough]].
diff --git a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
index e90b744..f551892 100644
--- a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
+++ b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17 -I${srcdir}/g++.dg/cpp1y -I${srcdir}/g++.dg/cpp1y/testinc" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-I${srcdir}/g++.dg/cpp1y -I${srcdir}/g++.dg/cpp1y/testinc" }
// C++98 features:
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold-ice1.C b/gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
index 7e71cc9..e65730b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
@@ -1,5 +1,5 @@
// PR c++/67926
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <bool ... T> bool FUR = (T && ...);
template <bool ... T> bool FUL = (... && T);
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold-lambda.C b/gcc/testsuite/g++.dg/cpp1z/fold-lambda.C
index 5eaed4a..8ccf42b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold-lambda.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold-lambda.C
@@ -1,5 +1,4 @@
-// { dg-do run }
-// { dg-options -std=c++17 }
+// { dg-do run { target c++17 } }
template <class... T>
auto f() {
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold-lambda2.C b/gcc/testsuite/g++.dg/cpp1z/fold-lambda2.C
index e93f55f..14ca954 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold-lambda2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold-lambda2.C
@@ -1,5 +1,5 @@
// PR c++/85305
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <int... Is>
void foo()
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold-mangle.C b/gcc/testsuite/g++.dg/cpp1z/fold-mangle.C
index 95df8ca..6957d9c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold-mangle.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold-mangle.C
@@ -1,5 +1,5 @@
// PR c++/71711
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template < int > struct A {};
template < int ... N > void unary_left (A < (... + N) >);
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index fdaa955..6d00467 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17" }
+// { dg-do run { target c++17 } }
+// { dg-options "" }
#include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold2.C b/gcc/testsuite/g++.dg/cpp1z/fold2.C
index 093a98b..6610c19 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold2.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "" }
// Check that we can fold over all of the operators required
// by the standard in every possible way.
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold3.C b/gcc/testsuite/g++.dg/cpp1z/fold3.C
index 7caa848..787bf79 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold3.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "" }
// Check that empty expansions and required failures.
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold4.C b/gcc/testsuite/g++.dg/cpp1z/fold4.C
index 2365d50..e0ee131 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold4.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class...T>
constexpr auto f(T... t)
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold6.C b/gcc/testsuite/g++.dg/cpp1z/fold6.C
index 29a2048..df29033 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold6.C
@@ -1,7 +1,7 @@
// Test that we reject a fold-expression with an LHS that is not a
// cast-expression.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int i;
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold7.C b/gcc/testsuite/g++.dg/cpp1z/fold7.C
index 74ef4ab..d65d6e9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold7.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold7.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
#ifndef __cpp_fold_expressions
#error __cpp_fold_expressions not defined
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold8.C b/gcc/testsuite/g++.dg/cpp1z/fold8.C
index 68827e6..983e9ee 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold8.C
@@ -1,5 +1,5 @@
// PR c++/68377
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct Sink { } s;
template <class T> Sink& operator<<(Sink&, const T&);
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold9.C b/gcc/testsuite/g++.dg/cpp1z/fold9.C
index 142c8b2c..956d51d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold9.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold9.C
@@ -1,5 +1,5 @@
// PR c++/71285
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<typename... Args>
void spurious(Args... args)
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement2.C b/gcc/testsuite/g++.dg/cpp1z/init-statement2.C
index d1dc918..df788172 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement2.C
@@ -1,4 +1,5 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
+// { dg-options "" }
// Test C++17 selection statements with initializer, basic use.
extern int foo (void);
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement3.C b/gcc/testsuite/g++.dg/cpp1z/init-statement3.C
index b0cd148..5b067a9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement3.C
@@ -1,5 +1,4 @@
-// { dg-do run }
-// { dg-options -std=c++17 }
+// { dg-do run { target c++17 } }
// Test C++17 selection statements with initializer, side-effects.
int
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement4.C b/gcc/testsuite/g++.dg/cpp1z/init-statement4.C
index 32a3f2d..a049adb 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement4.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
extern int foo (void);
extern void bar (int), die (void);
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement5.C b/gcc/testsuite/g++.dg/cpp1z/init-statement5.C
index cf2b16a2..867955b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement5.C
@@ -1,5 +1,5 @@
// Testcase from P0305R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
enum class status_code { SUCCESS };
extern int get_value ();
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index 6f00d9d..e1848aa 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,5 @@
// Testcase from P0305R1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <string>
#include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement7.C b/gcc/testsuite/g++.dg/cpp1z/init-statement7.C
index e4a598e..b2cf72d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement7.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement7.C
@@ -1,5 +1,4 @@
-// { dg-do run }
-// { dg-options -std=c++17 }
+// { dg-do run { target c++17 } }
int
main ()
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement8.C b/gcc/testsuite/g++.dg/cpp1z/init-statement8.C
index 574cc21..9b613e7 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement8.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int
f ()
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement9.C b/gcc/testsuite/g++.dg/cpp1z/init-statement9.C
index f695a73..84b24d4 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement9.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement9.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
void
f ()
diff --git a/gcc/testsuite/g++.dg/cpp1z/inline-var1.C b/gcc/testsuite/g++.dg/cpp1z/inline-var1.C
index 7c014b5..3011676 100644
--- a/gcc/testsuite/g++.dg/cpp1z/inline-var1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/inline-var1.C
@@ -1,5 +1,5 @@
-// { dg-do run }
-// { dg-options "-std=c++17 -Wno-deprecated" }
+// { dg-do run { target c++17 } }
+// { dg-options "-Wno-deprecated" }
// { dg-require-weak "" }
// { dg-additional-sources "inline-var1a.C" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/inline-var1a.C b/gcc/testsuite/g++.dg/cpp1z/inline-var1a.C
index 62d3708..b07c1d2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/inline-var1a.C
+++ b/gcc/testsuite/g++.dg/cpp1z/inline-var1a.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-std=c++17 -Wno-deprecated -g" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-Wno-deprecated -g" }
#include "inline-var1.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/inline-var4.C b/gcc/testsuite/g++.dg/cpp1z/inline-var4.C
index 48563b3..e9eb190 100644
--- a/gcc/testsuite/g++.dg/cpp1z/inline-var4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/inline-var4.C
@@ -1,5 +1,5 @@
// PR c++/82782
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <const auto& Value>
struct make_char_sequence;
diff --git a/gcc/testsuite/g++.dg/cpp1z/lambda-__func__.C b/gcc/testsuite/g++.dg/cpp1z/lambda-__func__.C
index d5d1c1c..d1b02ef 100644
--- a/gcc/testsuite/g++.dg/cpp1z/lambda-__func__.C
+++ b/gcc/testsuite/g++.dg/cpp1z/lambda-__func__.C
@@ -1,5 +1,5 @@
// PR c++/84925
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
template <typename>
struct A {
diff --git a/gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C b/gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C
index 75ef586..f89eb07 100644
--- a/gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C
@@ -1,5 +1,5 @@
// PR c++/80767
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename... Fs>
struct overloader : Fs...
diff --git a/gcc/testsuite/g++.dg/cpp1z/lambda-this3.C b/gcc/testsuite/g++.dg/cpp1z/lambda-this3.C
index c505ce3..93f2eb3 100644
--- a/gcc/testsuite/g++.dg/cpp1z/lambda-this3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/lambda-this3.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct S {
int i;
diff --git a/gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C b/gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C
index b4dc5c4..dd18551 100644
--- a/gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C
+++ b/gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "" }
namespace A __attribute ((visibility ("default"))) {}
diff --git a/gcc/testsuite/g++.dg/cpp1z/namespace-attribs2.C b/gcc/testsuite/g++.dg/cpp1z/namespace-attribs2.C
index 2049da3..193dbf6 100644
--- a/gcc/testsuite/g++.dg/cpp1z/namespace-attribs2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/namespace-attribs2.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
// { dg-additional-options "-pedantic" }
namespace B [[deprecated]] {} // { dg-warning "ignored|must precede" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C b/gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C
index 8a6f007..c9b16df 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C
@@ -1,4 +1,5 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "" }
namespace A::B::C
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C b/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C
index 4d4e60e..4d24ce5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C
@@ -1,6 +1,6 @@
/* nodiscard attribute tests, adapted from gcc.dg/attr-warn-unused-result.c. */
-/* { dg-do compile } */
-/* { dg-options "-std=c++17 -O -ftrack-macro-expansion=0" } */
+/* { dg-do compile { target c++17 } } */
+/* { dg-options "-O -ftrack-macro-expansion=0" } */
#define WUR [[nodiscard]]
#define WURAI [[nodiscard, gnu::always_inline]] inline
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C
index 59c0255..00d9509 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C
@@ -1,5 +1,5 @@
// Testcase from P0012r1
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
void (*p)() throw(int); // { dg-error "dynamic exception specification" }
void (**pp)() noexcept = &p; // { dg-error "" } cannot convert to pointer to noexcept function
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C
index 74404ad..051a452 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class R, class... A, bool B>
void f(R (*)(A...) noexcept(B)) { }
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type15.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type15.C
index cc5a3ed..8543859 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type15.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type15.C
@@ -1,5 +1,5 @@
// PR c++/80384
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<class> struct foo;
template<bool B>
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C
index 2b6a108..b7a76fd 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C
@@ -1,5 +1,5 @@
// PR c++/80614
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename T> void fn() {}
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C
index c8c731b..734f8f9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C
@@ -1,5 +1,5 @@
// PR c++/80465
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
int foo(...);
int main() {
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type18.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type18.C
index e01fd0a..a018c94 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type18.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type18.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
template<typename T>
struct S;
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C
index 467bd46..f4e9e3b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C
@@ -1,9 +1,9 @@
// Test for function pointer conversion on template arguments.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <void (*P)()> struct A { };
-void f() noexcept { };
+void f() noexcept { }
constexpr void (*p)() noexcept = f;
A<f> a;
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
index b23c1c7..b678e05 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
@@ -1,5 +1,5 @@
// Test for overload resolution.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
void f(void (*)() noexcept) = delete;
void f(void (*)()) { }
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
index 4777eef..ff02a0b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
@@ -1,5 +1,5 @@
// Test for deduction.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class R, class... A>
void f(R (*)(A...));
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C
index 6c1ebd1..753a0b7 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C
@@ -1,5 +1,5 @@
// Test for composite pointer type.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
typedef void (*P)();
typedef void (*NP)() noexcept;
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C
index 8734c8d..67e0bf8 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C
@@ -1,5 +1,5 @@
// Test for lambda conversion.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
void f()
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C
index 7c77a8d..5327647 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C
@@ -1,5 +1,5 @@
// Test for static_cast.
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
void f()
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C
index db70a68..007f14f7 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C
@@ -1,6 +1,5 @@
// Test for exception handling.
-// { dg-options -std=c++17 }
-// { dg-do run }
+// { dg-do run { target c++17 } }
void f() {}
void g() noexcept {}
diff --git a/gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C b/gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C
index 45b6499..c965d9e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C
+++ b/gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C
@@ -1,6 +1,5 @@
// Test for PMF template args.
-// { dg-options -std=c++17 }
-// { dg-do compile }
+// { dg-do compile { target c++17 } }
struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C
index def697c..960f1ee 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C
@@ -1,5 +1,5 @@
// Testcase from P0127R2
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <long n> struct A { };
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C
index 38d070c..ec57b54 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C
@@ -1,5 +1,5 @@
// PR c++/80096
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<auto> struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto12.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto12.C
index 7bff75c..cc4022c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto12.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto12.C
@@ -1,5 +1,5 @@
// PR c++/79092
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<auto V> struct val {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto13.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto13.C
index 2152cef..32f109e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto13.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto13.C
@@ -1,5 +1,5 @@
// PR c++/82331
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <auto>
class X;
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto14.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto14.C
index d7ab133..0d350a3 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto14.C
@@ -1,5 +1,5 @@
// PR c++/82231
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<int>
struct x {};
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C
index 7152768..dc6ec48 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C
@@ -1,5 +1,5 @@
// Testcase from P0127R2
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <typename T> struct S;
template <typename T, T n> struct S<int[n]> {
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C
index 9b96c1f..b1aed43 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C
@@ -1,5 +1,5 @@
// Testcase from P0127R2
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<auto n> struct B { decltype(n) f = n; };
B<5> b1; // OK: template parameter type is int
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C
index 5833c08..36b2b3f 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T, T n> void f(T, int (&)[n]);
template <class T, T n> void g(int (&)[n], T);
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C
index 323a896..90d8ba9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T> struct A
{
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C
index bca6576..2637a89 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C
@@ -1,5 +1,5 @@
// PR c++/78334
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <auto> auto constexpr_string([](auto) {});
-void foo() { constexpr_string<0>(0); };
+void foo() { constexpr_string<0>(0); }
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C
index 146ad44..9b26d8a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C
@@ -1,5 +1,5 @@
// PR c++/79549
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <auto...>
struct meow;
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C
index 65f5cfe..be4ee9f 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C
@@ -1,5 +1,5 @@
// PR c++/79556
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <auto> struct A;
template <auto...> struct B;
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype1.C b/gcc/testsuite/g++.dg/cpp1z/nontype1.C
index 342a0a6..4bbab5e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype1.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct S { int m; static int s; } s;
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype2.C b/gcc/testsuite/g++.dg/cpp1z/nontype2.C
index feb4b4a..393c833 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype2.C
@@ -1,4 +1,4 @@
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
#include <typeinfo>
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype3.C b/gcc/testsuite/g++.dg/cpp1z/nontype3.C
index 29805b5..80f1e98 100644
--- a/gcc/testsuite/g++.dg/cpp1z/nontype3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype3.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
#ifndef __cpp_nontype_template_args
#error __cpp_nontype_template_args not defined
diff --git a/gcc/testsuite/g++.dg/cpp1z/pr78771.C b/gcc/testsuite/g++.dg/cpp1z/pr78771.C
index 80e3a92..54ea56a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/pr78771.C
+++ b/gcc/testsuite/g++.dg/cpp1z/pr78771.C
@@ -1,5 +1,5 @@
// PR c++/78771
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
// ICE instantiating a deleted inherited ctor
diff --git a/gcc/testsuite/g++.dg/cpp1z/pr79143.C b/gcc/testsuite/g++.dg/cpp1z/pr79143.C
index ef8c1f6..9d57a1a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/pr79143.C
+++ b/gcc/testsuite/g++.dg/cpp1z/pr79143.C
@@ -1,6 +1,5 @@
// PR c++/79143
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
struct base {
base (int, int) {}
diff --git a/gcc/testsuite/g++.dg/cpp1z/pr81016.C b/gcc/testsuite/g++.dg/cpp1z/pr81016.C
index 4826fbfb..358b120 100644
--- a/gcc/testsuite/g++.dg/cpp1z/pr81016.C
+++ b/gcc/testsuite/g++.dg/cpp1z/pr81016.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
template <typename a, a> struct b;
template <typename c> struct b<bool, c::d>; // { dg-error "template parameter" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/pr83020.C b/gcc/testsuite/g++.dg/cpp1z/pr83020.C
index 43a7e38..0bd724b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/pr83020.C
+++ b/gcc/testsuite/g++.dg/cpp1z/pr83020.C
@@ -1,5 +1,5 @@
// PR c++/83020
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
struct NoDefault {
int val = 1234;
diff --git a/gcc/testsuite/g++.dg/cpp1z/pr83644.C b/gcc/testsuite/g++.dg/cpp1z/pr83644.C
index 493d8c7..3bce916 100644
--- a/gcc/testsuite/g++.dg/cpp1z/pr83644.C
+++ b/gcc/testsuite/g++.dg/cpp1z/pr83644.C
@@ -1,6 +1,5 @@
// PR c++/83644
-// { dg-do compile }
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
namespace std {
template <typename> bool is_invocable_v;
diff --git a/gcc/testsuite/g++.dg/cpp1z/pr83918.C b/gcc/testsuite/g++.dg/cpp1z/pr83918.C
index d4fe826..cbeb6cc 100644
--- a/gcc/testsuite/g++.dg/cpp1z/pr83918.C
+++ b/gcc/testsuite/g++.dg/cpp1z/pr83918.C
@@ -1,6 +1,5 @@
// PR c++/83918
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
constexpr unsigned
foo (unsigned x, unsigned y)
diff --git a/gcc/testsuite/g++.dg/cpp1z/pr84325.C b/gcc/testsuite/g++.dg/cpp1z/pr84325.C
index dddadc3..6ccbb2f 100644
--- a/gcc/testsuite/g++.dg/cpp1z/pr84325.C
+++ b/gcc/testsuite/g++.dg/cpp1z/pr84325.C
@@ -1,6 +1,5 @@
// PR c++/84325
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
struct seconds { int i_{0}; constexpr seconds (int) {} };
template <char... _Digits> constexpr seconds operator""_s() {
diff --git a/gcc/testsuite/g++.dg/cpp1z/pr84533.C b/gcc/testsuite/g++.dg/cpp1z/pr84533.C
index 0a71fe1..4aff8bd 100644
--- a/gcc/testsuite/g++.dg/cpp1z/pr84533.C
+++ b/gcc/testsuite/g++.dg/cpp1z/pr84533.C
@@ -1,3 +1,3 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
enum E { e, e }; // { dg-error "redefinition" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/range-for1.C b/gcc/testsuite/g++.dg/cpp1z/range-for1.C
index fc134b8..4bca986 100644
--- a/gcc/testsuite/g++.dg/cpp1z/range-for1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/range-for1.C
@@ -1,5 +1,5 @@
// P0184R0: Generalizing the Range-Based For Loop
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
struct A {
int ar[4];
diff --git a/gcc/testsuite/g++.dg/cpp1z/regress1.C b/gcc/testsuite/g++.dg/cpp1z/regress1.C
index 2bebed0..a62833df 100644
--- a/gcc/testsuite/g++.dg/cpp1z/regress1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/regress1.C
@@ -1,5 +1,5 @@
// PR c++/67114
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
typedef unsigned uint32_t;
class A {
diff --git a/gcc/testsuite/g++.dg/cpp1z/regress2.C b/gcc/testsuite/g++.dg/cpp1z/regress2.C
index 3950dbf..aa05204 100644
--- a/gcc/testsuite/g++.dg/cpp1z/regress2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/regress2.C
@@ -1,5 +1,5 @@
// PR c++/67142
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
namespace detail {
template <int> int split_at;
diff --git a/gcc/testsuite/g++.dg/cpp1z/static1.C b/gcc/testsuite/g++.dg/cpp1z/static1.C
index cb87299..2e61337 100644
--- a/gcc/testsuite/g++.dg/cpp1z/static1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/static1.C
@@ -1,5 +1,5 @@
// PR c++/84582
-// { dg-options -std=c++17 }
+// { dg-do compile { target c++17 } }
class C {
static inline const long b = 0;
diff --git a/gcc/testsuite/g++.dg/cpp1z/static2.C b/gcc/testsuite/g++.dg/cpp1z/static2.C
index b87bfec..9462e03 100644
--- a/gcc/testsuite/g++.dg/cpp1z/static2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/static2.C
@@ -1,4 +1,4 @@
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template <class T>
struct A
diff --git a/gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C b/gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C
index 6f787cd..9749e14 100644
--- a/gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C
+++ b/gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
template<typename T>
struct is_float
diff --git a/gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.C b/gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.C
index 6ab5746..0e92196 100644
--- a/gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.C
+++ b/gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.C
@@ -1,5 +1,4 @@
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
constexpr int
operator""_foo(char c)
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8-2.C b/gcc/testsuite/g++.dg/cpp1z/utf8-2.C
index da2e83f..6333269 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8-2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8-2.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
#ifndef __cpp_unicode_characters
#error __cpp_unicode_characters not defined
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8-neg.C b/gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
index cb9f7b5..0a94f1a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
@@ -1,5 +1,4 @@
-/* { dg-do compile } */
-/* { dg-options "-std=c++17" } */
+/* { dg-do compile { target c++17 } } */
const static char c0 = u8''; // { dg-error "empty character" }
const static char c1 = u8'ab'; // { dg-warning "multi-character character constant" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ff98b58..e08fbb9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,5 +1,4 @@
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
#include <cassert>
#include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-this3.C b/gcc/testsuite/g++.dg/cpp2a/lambda-this3.C
index 5e5c8b3..d1738ea 100644
--- a/gcc/testsuite/g++.dg/cpp2a/lambda-this3.C
+++ b/gcc/testsuite/g++.dg/cpp2a/lambda-this3.C
@@ -1,6 +1,6 @@
// P0806R2
-// { dg-do compile }
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "" }
struct X {
int x;
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C
index 6a12d6c..fc3e6fd 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-O -std=c++17 -g -dA -gno-strict-dwarf" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-O -g -dA -gno-strict-dwarf" }
// { dg-require-weak "" }
// { dg-final { scan-assembler-times "0x3\[^\n\r]* DW_AT_inline" 6 { xfail *-*-aix* } } }
// { dg-final { scan-assembler-times "0x1\[^\n\r]* DW_AT_inline" 2 { xfail *-*-aix* } } }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
index ed00fb5..cdb2696 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-O -std=c++17 -gdwarf-5 -dA -gno-strict-dwarf" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-O -gdwarf-5 -dA -gno-strict-dwarf" }
// { dg-require-weak "" }
// { dg-final { scan-assembler-not "DW_TAG_member" { xfail *-*-aix* } } }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C
index 5ab8ca8..85e4434 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C
@@ -1,6 +1,6 @@
// PR debug/80234
-// { dg-do compile }
-// { dg-options "-gdwarf-4 -std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-gdwarf-4" }
struct S
{
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C b/gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C
index 145beac..0d612d8 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C
@@ -1,6 +1,6 @@
// PR debug/80234
-// { dg-do compile }
-// { dg-options "-gdwarf-5 -std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-gdwarf-5" }
struct S
{
diff --git a/gcc/testsuite/g++.dg/ext/integer-pack4.C b/gcc/testsuite/g++.dg/ext/integer-pack4.C
index 6e5125b..4859d95 100644
--- a/gcc/testsuite/g++.dg/ext/integer-pack4.C
+++ b/gcc/testsuite/g++.dg/ext/integer-pack4.C
@@ -1,4 +1,4 @@
-// { dg-additional-options -std=c++17 }
+// { dg-do compile { target c++17 } }
template<int ... Ns> int f() { return (Ns + ...); }
template<int N> int g() {
diff --git a/gcc/testsuite/g++.dg/gomp/pr84556.C b/gcc/testsuite/g++.dg/gomp/pr84556.C
index 188d5a4..97a58ee 100644
--- a/gcc/testsuite/g++.dg/gomp/pr84556.C
+++ b/gcc/testsuite/g++.dg/gomp/pr84556.C
@@ -1,6 +1,6 @@
// PR c++/84556
-// { dg-do compile }
-// { dg-options "-std=c++17 -fopenmp-simd" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fopenmp-simd" }
void
foo ()
diff --git a/gcc/testsuite/g++.dg/ipa/pr81248.C b/gcc/testsuite/g++.dg/ipa/pr81248.C
index d55d2e7..d7796ff 100644
--- a/gcc/testsuite/g++.dg/ipa/pr81248.C
+++ b/gcc/testsuite/g++.dg/ipa/pr81248.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-O2 -std=c++17 -fdump-tree-eipa_sra" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-O2 -fdump-tree-eipa_sra" }
#include <type_traits>
diff --git a/gcc/testsuite/g++.dg/pr81194.C b/gcc/testsuite/g++.dg/pr81194.C
index 5f94938..08f6fc0 100644
--- a/gcc/testsuite/g++.dg/pr81194.C
+++ b/gcc/testsuite/g++.dg/pr81194.C
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-O2 -std=c++17 -fno-exceptions" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-O2 -fno-exceptions" }
// { dg-additional-options "-Wno-return-type" }
template <class a> struct b { typedef a *c; };
diff --git a/gcc/testsuite/g++.dg/pr82836.C b/gcc/testsuite/g++.dg/pr82836.C
index 5469614..82d3260 100644
--- a/gcc/testsuite/g++.dg/pr82836.C
+++ b/gcc/testsuite/g++.dg/pr82836.C
@@ -1,5 +1,5 @@
// PR c++/82836
-// { dg-options "-std=c++17" }
+// { dg-do compile { target c++17 } }
// { dg-require-effective-target int128 }
// { dg-require-effective-target __float128 }
// { dg-additional-options "-Wno-pedantic -Wno-return-type" }
diff --git a/gcc/testsuite/g++.dg/ubsan/pr79589.C b/gcc/testsuite/g++.dg/ubsan/pr79589.C
index 4b72bc8..d19ca2d 100644
--- a/gcc/testsuite/g++.dg/ubsan/pr79589.C
+++ b/gcc/testsuite/g++.dg/ubsan/pr79589.C
@@ -1,6 +1,6 @@
// PR sanitizer/79589
-// { dg-do compile }
-// { dg-options "-fsanitize=undefined -std=c++17" }
+// { dg-do compile { target c++17 } }
+// { dg-options "-fsanitize=undefined" }
struct A { char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r; } a[64];
diff --git a/gcc/testsuite/lib/g++-dg.exp b/gcc/testsuite/lib/g++-dg.exp
index 12af1fd..36d68e7 100644
--- a/gcc/testsuite/lib/g++-dg.exp
+++ b/gcc/testsuite/lib/g++-dg.exp
@@ -52,7 +52,7 @@ proc g++-dg-runtest { testcases flags default-extra-flags } {
if { [llength $gpp_std_list] > 0 } {
set std_list $gpp_std_list
} else {
- set std_list { 98 11 14 }
+ set std_list { 98 14 17 }
}
set option_list { }
foreach x $std_list {