diff mbox series

[C++] Renames/adjustments of 1z to 17

Message ID 20170914202634.GO1701@tucnak
State New
Headers show
Series [C++] Renames/adjustments of 1z to 17 | expand

Commit Message

Jakub Jelinek Sept. 14, 2017, 8:26 p.m. UTC
Hi!

Given https://herbsutter.com/2017/09/06/c17-is-formally-approved/
this patch makes -std=c++17 and -std=gnu++17 the documented options
and -std=c++1z and -std=gnu++1z deprecated aliases, adjusts diagnostics etc.

Bootstrapped/regtest on x86_64-linux and i686-linux, ok for trunk?
The changes in gcc/testsuite/ and libstdc++/testsuite appart from
*.exp files are just sed -i -e 's/1z/17/g' `find . -type f`.

There is one 1z spot in gcc/doc/standards.texi, but that whole paragraph
looks wrong, can somebody please rewrite it to match the reality?

2017-09-14  Jakub Jelinek  <jakub@redhat.com>

	* doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
	c++1z and gnu++1z as deprecated.  Change other references to
	-std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
	Change -Wc++1z-compat to -Wc++17-compat.
	* doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
	* dwarf2out.c (highest_c_language): Handle C++17.
	(gen_compile_unit_die): Likewise.
c-family/
	* c.opt (Wc++1z-compat): Change from option to undocumented alias.
	(Wc++17-compat): Change from undocumented alias to option.
	(Wnoexcept-type): Enable by Wc++17-compat instead of Wc++1z-compat,
	change C++1z to C++17 in description.
	(std=c++1z, std=gnu++1z): Change from option to undocumented
	deprecated alias.
	(std=c++17, std=gnu++17): Change from undocumented alias to option.
	Adjust description.
	* c-common.h (enum cxx_dialect): Rename cxx1z to cxx17.
	* c-opts.c (set_std_cxx1z): Rename to ...
	(set_std_cxx17): ... this.
	(c_common_handle_option): Rename OPT_std_c__1z to OPT_std_c__17
	and OPT_std_gnu__1z to OPT_std_gnu__17.  Adjust set_std_cxx1z
	caller.  
	(c_common_post_options): Use cxx17 instead of cxx1z.  Adjust
	comments.
cp/
	* decl.c (redeclaration_error_message): Use cxx17 instead of cxx1z,
	adjust diagnostics refering to C++1z or -std=gnu++1z or -std=c++1z
	to C++17 or -std=gnu++17 or -std=c++17.  Adjust comments.
	(cxx_init_decl_processing, next_initializable_field,
	is_direct_enum_init, check_initializer, cp_finish_decl,
	mark_inline_variable, grokdeclarator, grokparms, xref_basetypes,
	finish_function): Likewise.
	* cp-tree.h (DECL_INLINE_VAR_P): Likewise.
	* pt.c (mark_template_parm, convert_nontype_argument,
	instantiate_class_template_1, type_unification_real, unify,
	get_partial_spec_bindings, dependent_type_p_r): Likewise.
	* typeck.c (cp_build_unary_op): Likewise.
	* constexpr.c (var_in_maybe_constexpr_fn): Likewise.
	* call.c (build_user_type_conversion_1, build_over_call,
	build_special_member_call): Likewise.
	* lambda.c (begin_lambda_type): Likewise.
	* typeck2.c (process_init_constructor_record): Likewise.
	* class.c (build_base_field, finalize_literal_type_property,
	explain_non_literal_class): Likewise.
	* parser.c (cp_parser_diagnose_invalid_type_name,
	cp_parser_primary_expression, cp_parser_lambda_introducer,
	cp_parser_lambda_declarator_opt, cp_parser_selection_statement,
	cp_convert_range_for, cp_parser_perform_range_for_lookup,
	cp_parser_decomposition_declaration, cp_parser_linkage_specification,
	cp_parser_static_assert, cp_parser_simple_type_specifier,
	cp_parser_namespace_definition, cp_parser_using_declaration,
	cp_parser_init_declarator, cp_parser_type_parameter_key,
	cp_parser_exception_specification_opt, cp_parser_std_attribute_spec,
	cp_parser_constructor_declarator_p): Likewise.
	* mangle.c (struct globals): Rename need_cxx1z_warning to
	need_cxx17_warning.
	(write_exception_spec, start_mangling, mangle_decl): Likewise.
	* Make-lang.in (check-c++1z): Rename to check-c++17, depend on
	it.
	(check-c++17): New goal.  Use 17 instead of 1z.
	(check-c++-all): Use 17 instead of 1z.
testsuite/
	* lib/g++-dg.exp (g++-dg-runtest): Use 17 instead of 1z.
	* lib/target-supports.exp (check_effective_target_c++14): Use
	check_effective_target_c++17 instead of check_effective_target_c++1z.
	(check_effective_target_c++14_down): Likewise.
	(check_effective_target_c++1z_only): Rename to ...
	(check_effective_target_c++17_only): ... this.
	(check_effective_target_c++1z): Rename to ...
	(check_effective_target_c++17): ... this.
	* g++.dg/debug/dwarf2/inline-var-1.C: Use -std=c++17 or -std=gnu++17
	instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead of c++1z
	and c++17_only instead of c++1z_only.  Adjust expected diagnostics
	and comments refering to 1z to 17.
	* g++.dg/debug/dwarf2/inline-var-2.C: Likewise.
	* g++.dg/template/partial5.C: Likewise.
	* g++.dg/template/nontype8.C: Likewise.
	* g++.dg/cpp1z/noexcept-type5.C: Likewise.
	* g++.dg/cpp1z/nontype3a.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda4.C: Likewise.
	* g++.dg/cpp1z/noexcept-type16.C: Likewise.
	* g++.dg/cpp1z/class-deduction32.C: Likewise.
	* g++.dg/cpp1z/pr78771.C: Likewise.
	* g++.dg/cpp1z/elide1.C: Likewise.
	* g++.dg/cpp1z/fold3.C: Likewise.
	* g++.dg/cpp1z/class-deduction2.C: Likewise.
	* g++.dg/cpp1z/noexcept-type12.C: Likewise.
	* g++.dg/cpp1z/inline-var2.C: Likewise.
	* g++.dg/cpp1z/eval-order2.C: Likewise.
	* g++.dg/cpp1z/decomp21.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda11.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda9.C: Likewise.
	* g++.dg/cpp1z/utf8-neg.C: Likewise.
	* g++.dg/cpp1z/class-deduction41.C: Likewise.
	* g++.dg/cpp1z/class-deduction23.C: Likewise.
	* g++.dg/cpp1z/nodiscard3.C: Likewise.
	* g++.dg/cpp1z/static_assert-nomsg.C: Likewise.
	* g++.dg/cpp1z/noexcept-type9.C: Likewise.
	* g++.dg/cpp1z/class-deduction21.C: Likewise.
	* g++.dg/cpp1z/range-for1.C: Likewise.
	* g++.dg/cpp1z/init-statement4.C: Likewise.
	* g++.dg/cpp1z/udlit-utf8char.C: Likewise.
	* g++.dg/cpp1z/decomp30.C: Likewise.
	* g++.dg/cpp1z/class-deduction39.C: Likewise.
	* g++.dg/cpp1z/register2.C: Likewise.
	* g++.dg/cpp1z/decomp9.C: Likewise.
	* g++.dg/cpp1z/regress1.C: Likewise.
	* g++.dg/cpp1z/direct-enum-init1.C: Likewise.
	* g++.dg/cpp1z/class-deduction30.C: Likewise.
	* g++.dg/cpp1z/abbrev2.C: Likewise.
	* g++.dg/cpp1z/nontype-auto6.C: Likewise.
	* g++.dg/cpp1z/regress2.C: Likewise.
	* g++.dg/cpp1z/decomp16.C: Likewise.
	* g++.dg/cpp1z/bool-increment1.C: Likewise.
	* g++.dg/cpp1z/aligned-new1.C: Likewise.
	* g++.dg/cpp1z/decomp3.C: Likewise.
	* g++.dg/cpp1z/register1.C: Likewise.
	* g++.dg/cpp1z/namespace-attribs.C: Likewise.
	* g++.dg/cpp1z/class-deduction1.C: Likewise.
	* g++.dg/cpp1z/decomp10.C: Likewise.
	* g++.dg/cpp1z/constexpr-if11.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda10.C: Likewise.
	* g++.dg/cpp1z/decomp27.C: Likewise.
	* g++.dg/cpp1z/noexcept-type2.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda6.C: Likewise.
	* g++.dg/cpp1z/class-deduction9.C: Likewise.
	* g++.dg/cpp1z/attributes-enum-1.C: Likewise.
	* g++.dg/cpp1z/decomp11.C: Likewise.
	* g++.dg/cpp1z/aligned-new3.C: Likewise.
	* g++.dg/cpp1z/utf8-2.C: Likewise.
	* g++.dg/cpp1z/lambda-this3.C: Likewise.
	* g++.dg/cpp1z/decomp-constexpr1.C: Likewise.
	* g++.dg/cpp1z/byte1.C: Likewise.
	* g++.dg/cpp1z/nontype-auto9.C: Likewise.
	* g++.dg/cpp1z/aggr-base4.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda1.C: Likewise.
	* g++.dg/cpp1z/nontype-auto3.C: Likewise.
	* g++.dg/cpp1z/utf8-2a.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda7.C: Likewise.
	* g++.dg/cpp1z/aggr-base6.C: Likewise.
	* g++.dg/cpp1z/cplusplus.C: Likewise.
	* g++.dg/cpp1z/class-deduction20.C: Likewise.
	* g++.dg/cpp1z/aggr-base2.C: Likewise.
	* g++.dg/cpp1z/class-deduction6.C: Likewise.
	* g++.dg/cpp1z/noexcept-type3.C: Likewise.
	* g++.dg/cpp1z/class-deduction31.C: Likewise.
	* g++.dg/cpp1z/class-deduction25.C: Likewise.
	* g++.dg/cpp1z/class-deduction18.C: Likewise.
	* g++.dg/cpp1z/fold9.C: Likewise.
	* g++.dg/cpp1z/noexcept-type8.C: Likewise.
	* g++.dg/cpp1z/abbrev1.C: Likewise.
	* g++.dg/cpp1z/constexpr-if10.C: Likewise.
	* g++.dg/cpp1z/utf8.C: Likewise.
	* g++.dg/cpp1z/noexcept-type7.C: Likewise.
	* g++.dg/cpp1z/aggr-base3.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda8.C: Likewise.
	* g++.dg/cpp1z/init-statement2.C: Likewise.
	* g++.dg/cpp1z/nontype-auto4.C: Likewise.
	* g++.dg/cpp1z/constexpr-if12.C: Likewise.
	* g++.dg/cpp1z/class-deduction40.C: Likewise.
	* g++.dg/cpp1z/nontype3.C: Likewise.
	* g++.dg/cpp1z/class-deduction14.C: Likewise.
	* g++.dg/cpp1z/fold7.C: Likewise.
	* g++.dg/cpp1z/nontype2.C: Likewise.
	* g++.dg/cpp1z/class-deduction15.C: Likewise.
	* g++.dg/cpp1z/nested-namespace-def1.C: Likewise.
	* g++.dg/cpp1z/class-deduction13.C: Likewise.
	* g++.dg/cpp1z/aligned-new7.C: Likewise.
	* g++.dg/cpp1z/noexcept-type1.C: Likewise.
	* g++.dg/cpp1z/nontype1.C: Likewise.
	* g++.dg/cpp1z/init-statement5.C: Likewise.
	* g++.dg/cpp1z/nontype-auto2.C: Likewise.
	* g++.dg/cpp1z/decomp17.C: Likewise.
	* g++.dg/cpp1z/fold4.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda2.C: Likewise.
	* g++.dg/cpp1z/fold7a.C: Likewise.
	* g++.dg/cpp1z/nontype-auto5.C: Likewise.
	* g++.dg/cpp1z/init-statement7.C: Likewise.
	* g++.dg/cpp1z/aggr-base5.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda5.C: Likewise.
	* g++.dg/cpp1z/pr79143.C: Likewise.
	* g++.dg/cpp1z/class-deduction38.C: Likewise.
	* g++.dg/cpp1z/nontype-auto8.C: Likewise.
	* g++.dg/cpp1z/class-deduction12.C: Likewise.
	* g++.dg/cpp1z/decomp20.C: Likewise.
	* g++.dg/cpp1z/class-deduction22.C: Likewise.
	* g++.dg/cpp1z/class-deduction29.C: Likewise.
	* g++.dg/cpp1z/class-deduction8.C: Likewise.
	* g++.dg/cpp1z/class-deduction43.C: Likewise.
	* g++.dg/cpp1z/feat-cxx1z.C: Likewise.
	* g++.dg/cpp1z/fold8.C: Likewise.
	* g++.dg/cpp1z/init-statement3.C: Likewise.
	* g++.dg/cpp1z/nontype-auto10.C: Likewise.
	* g++.dg/cpp1z/class-deduction36.C: Likewise.
	* g++.dg/cpp1z/noexcept-type17.C: Likewise.
	* g++.dg/cpp1z/fallthrough1.C: Likewise.
	* g++.dg/cpp1z/fold1.C: Likewise.
	* g++.dg/cpp1z/class-deduction26.C: Likewise.
	* g++.dg/cpp1z/fold-ice1.C: Likewise.
	* g++.dg/cpp1z/fold5.C: Likewise.
	* g++.dg/cpp1z/class-deduction34.C: Likewise.
	* g++.dg/cpp1z/noexcept-type6.C: Likewise.
	* g++.dg/cpp1z/class-deduction7.C: Likewise.
	* g++.dg/cpp1z/class-deduction16.C: Likewise.
	* g++.dg/cpp1z/class-deduction10.C: Likewise.
	* g++.dg/cpp1z/eval-order3.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda13.C: Likewise.
	* g++.dg/cpp1z/aggr-base2a.C: Likewise.
	* g++.dg/cpp1z/nontype-auto1.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda3.C: Likewise.
	* g++.dg/cpp1z/nontype-auto7.C: Likewise.
	* g++.dg/cpp1z/decomp15.C: Likewise.
	* g++.dg/cpp1z/noexcept-type4.C: Likewise.
	* g++.dg/cpp1z/fold-mangle.C: Likewise.
	* g++.dg/cpp1z/class-deduction35.C: Likewise.
	* g++.dg/cpp1z/decomp4.C: Likewise.
	* g++.dg/cpp1z/class-deduction42.C: Likewise.
	* g++.dg/cpp1z/init-statement8.C: Likewise.
	* g++.dg/cpp1z/inline-var1a.C: Likewise.
	* g++.dg/cpp1z/init-statement6.C: Likewise.
	* g++.dg/cpp1z/class-deduction17.C: Likewise.
	* g++.dg/cpp1z/class-deduction28.C: Likewise.
	* g++.dg/cpp1z/class-deduction27.C: Likewise.
	* g++.dg/cpp1z/decomp-bitfield1.C: Likewise.
	* g++.dg/cpp1z/attributes-enum-1a.C: Likewise.
	* g++.dg/cpp1z/class-deduction11.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda12.C: Likewise.
	* g++.dg/cpp1z/init-statement9.C: Likewise.
	* g++.dg/cpp1z/class-deduction19.C: Likewise.
	* g++.dg/cpp1z/class-deduction5.C: Likewise.
	* g++.dg/cpp1z/fold2.C: Likewise.
	* g++.dg/cpp1z/class-deduction33.C: Likewise.
	* g++.dg/cpp1z/class-deduction24.C: Likewise.
	* g++.dg/cpp1z/aggr-base1.C: Likewise.
	* g++.dg/cpp1z/fold6.C: Likewise.
	* g++.dg/cpp1z/decomp12.C: Likewise.
	* g++.dg/cpp1z/class-deduction4.C: Likewise.
	* g++.dg/cpp1z/inline-var1.C: Likewise.
	* g++.dg/cpp1z/aligned-new2.C: Likewise.
	* g++.dg/cpp1z/class-deduction3.C: Likewise.
	* g++.dg/other/error3.C: Likewise.
	* g++.dg/init/new25.C: Likewise.
	* g++.dg/init/new13.C: Likewise.
	* g++.dg/tls/diag-2.C: Likewise.
	* g++.dg/tls/diag-4.C: Likewise.
	* g++.dg/opt/noreturn-1.C: Likewise.
	* g++.dg/eh/async-unwind2.C: Likewise.
	* g++.dg/eh/spec9.C: Likewise.
	* g++.dg/eh/spec7.C: Likewise.
	* g++.dg/eh/template1.C: Likewise.
	* g++.dg/eh/cond4.C: Likewise.
	* g++.dg/eh/pr41819.C: Likewise.
	* g++.dg/eh/delete1.C: Likewise.
	* g++.dg/eh/spec3.C: Likewise.
	* g++.dg/eh/forced4.C: Likewise.
	* g++.dg/eh/spec2.C: Likewise.
	* g++.dg/eh/shadow1.C: Likewise.
	* g++.dg/eh/pr38662.C: Likewise.
	* g++.dg/eh/ehopt1.C: Likewise.
	* g++.dg/eh/spec8.C: Likewise.
	* g++.dg/eh/init-temp2.C: Likewise.
	* g++.dg/rtti/crash3.C: Likewise.
	* g++.dg/warn/Wreturn-type-3.C: Likewise.
	* g++.dg/warn/register-parm-1.C: Likewise.
	* g++.dg/warn/register-var-2.C: Likewise.
	* g++.dg/gcov/gcov-7.C: Likewise.
	* g++.dg/tree-ssa/pr45605.C: Likewise.
	* g++.dg/cpp/pr23827_cxx98_neg.C: Likewise.
	* g++.dg/lookup/exception1.C: Likewise.
	* g++.dg/ubsan/pr79589.C: Likewise.
	* g++.dg/tm/pr47340.C: Likewise.
	* g++.dg/tm/pr46567.C: Likewise.
	* g++.dg/expr/bitfield5.C: Likewise.
	* g++.dg/expr/bool1.C: Likewise.
	* g++.dg/expr/lval3.C: Likewise.
	* g++.dg/expr/lval4.C: Likewise.
	* g++.dg/expr/bitfield4.C: Likewise.
	* g++.dg/expr/bitfield6.C: Likewise.
	* g++.dg/expr/bool3.C: Likewise.
	* g++.dg/ext/has_nothrow_constructor.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-7.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-1.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-2.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-4.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-5.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-6.C: Likewise.
	* g++.dg/ext/has_nothrow_assign.C: Likewise.
	* g++.dg/parse/register1.C: Likewise.
	* g++.dg/parse/error15.C: Likewise.
	* g++.dg/parse/linkage2.C: Likewise.
	* g++.dg/concepts/intro2.C: Likewise.
	* g++.dg/concepts/class.C: Likewise.
	* g++.dg/concepts/traits1.C: Likewise.
	* g++.dg/concepts/req5.C: Likewise.
	* g++.dg/concepts/var-concept5.C: Likewise.
	* g++.dg/concepts/fn-concept2.C: Likewise.
	* g++.dg/concepts/traits2.C: Likewise.
	* g++.dg/concepts/placeholder2.C: Likewise.
	* g++.dg/concepts/class6.C: Likewise.
	* g++.dg/concepts/memtmpl1.C: Likewise.
	* g++.dg/concepts/friend2.C: Likewise.
	* g++.dg/concepts/template-parm3.C: Likewise.
	* g++.dg/concepts/template-parm10.C: Likewise.
	* g++.dg/concepts/explicit-spec1.C: Likewise.
	* g++.dg/concepts/explicit-spec3.C: Likewise.
	* g++.dg/concepts/var-templ2.C: Likewise.
	* g++.dg/concepts/intro5.C: Likewise.
	* g++.dg/concepts/deduction-constraint1.C: Likewise.
	* g++.dg/concepts/iconv1.C: Likewise.
	* g++.dg/concepts/constrained-parm.C: Likewise.
	* g++.dg/concepts/template-template-parm1.C: Likewise.
	* g++.dg/concepts/var-concept3.C: Likewise.
	* g++.dg/concepts/class3.C: Likewise.
	* g++.dg/concepts/memfun2.C: Likewise.
	* g++.dg/concepts/req1.C: Likewise.
	* g++.dg/concepts/disjunction1.C: Likewise.
	* g++.dg/concepts/req17.C: Likewise.
	* g++.dg/concepts/pr65848.C: Likewise.
	* g++.dg/concepts/placeholder4.C: Likewise.
	* g++.dg/concepts/decl-diagnose.C: Likewise.
	* g++.dg/concepts/intro7.C: Likewise.
	* g++.dg/concepts/pr68683.C: Likewise.
	* g++.dg/concepts/partial-spec4.C: Likewise.
	* g++.dg/concepts/template-parm5.C: Likewise.
	* g++.dg/concepts/explicit-inst1.C: Likewise.
	* g++.dg/concepts/class-deduction1.C: Likewise.
	* g++.dg/concepts/class1.C: Likewise.
	* g++.dg/concepts/req15.C: Likewise.
	* g++.dg/concepts/memfun.C: Likewise.
	* g++.dg/concepts/pr68434.C: Likewise.
	* g++.dg/concepts/inherit-ctor4.C: Likewise.
	* g++.dg/concepts/partial-spec6.C: Likewise.
	* g++.dg/concepts/var-templ1.C: Likewise.
	* g++.dg/concepts/template-parm8.C: Likewise.
	* g++.dg/concepts/explicit-inst3.C: Likewise.
	* g++.dg/concepts/class4.C: Likewise.
	* g++.dg/concepts/req6.C: Likewise.
	* g++.dg/concepts/fn8.C: Likewise.
	* g++.dg/concepts/class5.C: Likewise.
	* g++.dg/concepts/placeholder5.C: Likewise.
	* g++.dg/concepts/req16.C: Likewise.
	* g++.dg/concepts/req10.C: Likewise.
	* g++.dg/concepts/var-concept2.C: Likewise.
	* g++.dg/concepts/auto3.C: Likewise.
	* g++.dg/concepts/generic-fn-err.C: Likewise.
	* g++.dg/concepts/pr65552.C: Likewise.
	* g++.dg/concepts/partial-concept-id2.C: Likewise.
	* g++.dg/concepts/fn1.C: Likewise.
	* g++.dg/concepts/partial-spec.C: Likewise.
	* g++.dg/concepts/template-parm12.C: Likewise.
	* g++.dg/concepts/diagnostic1.C: Likewise.
	* g++.dg/concepts/intro1.C: Likewise.
	* g++.dg/concepts/explicit-inst4.C: Likewise.
	* g++.dg/concepts/req18.C: Likewise.
	* g++.dg/concepts/explicit-spec5.C: Likewise.
	* g++.dg/concepts/var-concept6.C: Likewise.
	* g++.dg/concepts/fn9.C: Likewise.
	* g++.dg/concepts/req2.C: Likewise.
	* g++.dg/concepts/template-parm7.C: Likewise.
	* g++.dg/concepts/req14.C: Likewise.
	* g++.dg/concepts/template-parm6.C: Likewise.
	* g++.dg/concepts/variadic4.C: Likewise.
	* g++.dg/concepts/fn6.C: Likewise.
	* g++.dg/concepts/req-neg1.C: Likewise.
	* g++.dg/concepts/alias3.C: Likewise.
	* g++.dg/concepts/expression2.C: Likewise.
	* g++.dg/concepts/partial-spec3.C: Likewise.
	* g++.dg/concepts/expression3.C: Likewise.
	* g++.dg/concepts/memfun-err.C: Likewise.
	* g++.dg/concepts/pr66091.C: Likewise.
	* g++.dg/concepts/explicit-spec2.C: Likewise.
	* g++.dg/concepts/equiv.C: Likewise.
	* g++.dg/concepts/friend1.C: Likewise.
	* g++.dg/concepts/fn4.C: Likewise.
	* g++.dg/concepts/var-templ3.C: Likewise.
	* g++.dg/concepts/explicit-inst2.C: Likewise.
	* g++.dg/concepts/alias2.C: Likewise.
	* g++.dg/concepts/regress/alias-decl-42.C: Likewise.
	* g++.dg/concepts/placeholder6.C: Likewise.
	* g++.dg/concepts/fn10.C: Likewise.
	* g++.dg/concepts/req3.C: Likewise.
	* g++.dg/concepts/variadic2.C: Likewise.
	* g++.dg/concepts/pr65636.C: Likewise.
	* g++.dg/concepts/intro6.C: Likewise.
	* g++.dg/concepts/class2.C: Likewise.
	* g++.dg/concepts/fn2.C: Likewise.
	* g++.dg/concepts/req20.C: Likewise.
	* g++.dg/concepts/req8.C: Likewise.
	* g++.dg/concepts/placeholder1.C: Likewise.
	* g++.dg/concepts/pr65854.C: Likewise.
	* g++.dg/concepts/member-concept.C: Likewise.
	* g++.dg/concepts/template-parm2.C: Likewise.
	* g++.dg/concepts/variadic1.C: Likewise.
	* g++.dg/concepts/fn7.C: Likewise.
	* g++.dg/concepts/intro4.C: Likewise.
	* g++.dg/concepts/req13.C: Likewise.
	* g++.dg/concepts/inherit-ctor3.C: Likewise.
	* g++.dg/concepts/explicit-spec6.C: Likewise.
	* g++.dg/concepts/auto1.C: Likewise.
	* g++.dg/concepts/alias1.C: Likewise.
	* g++.dg/concepts/fn-concept1.C: Likewise.
	* g++.dg/concepts/template-parm11.C: Likewise.
	* g++.dg/concepts/explicit-spec4.C: Likewise.
	* g++.dg/concepts/partial-concept-id1.C: Likewise.
	* g++.dg/concepts/req9.C: Likewise.
	* g++.dg/concepts/req4.C: Likewise.
	* g++.dg/concepts/pr65681.C: Likewise.
	* g++.dg/concepts/req7.C: Likewise.
	* g++.dg/concepts/req12.C: Likewise.
	* g++.dg/concepts/fn5.C: Likewise.
	* g++.dg/concepts/alias4.C: Likewise.
	* g++.dg/concepts/generic-fn.C: Likewise.
	* g++.dg/concepts/feature-macro.C: Likewise.
	* g++.dg/concepts/req19.C: Likewise.
	* g++.dg/concepts/placeholder3.C: Likewise.
	* g++.dg/concepts/intro3.C: Likewise.
	* g++.dg/concepts/partial-spec5.C: Likewise.
	* g++.dg/concepts/template-parm4.C: Likewise.
	* g++.dg/concepts/dr1430.C: Likewise.
	* g++.dg/concepts/pr65634.C: Likewise.
	* g++.dg/concepts/var-concept4.C: Likewise.
	* g++.dg/concepts/pr67249.C: Likewise.
	* g++.dg/concepts/expression.C: Likewise.
	* g++.dg/concepts/pr65575.C: Likewise.
	* g++.dg/concepts/partial-spec2.C: Likewise.
	* g++.dg/concepts/template-parm9.C: Likewise.
	* g++.dg/concepts/inherit-ctor1.C: Likewise.
	* g++.dg/concepts/equiv2.C: Likewise.
	* g++.dg/concepts/req11.C: Likewise.
	* g++.dg/concepts/template-parm1.C: Likewise.
	* g++.dg/concepts/inherit-ctor2.C: Likewise.
	* g++.dg/concepts/var-concept1.C: Likewise.
	* g++.dg/concepts/fn3.C: Likewise.
	* g++.dg/torture/pr46364.C: Likewise.
	* g++.dg/torture/stackalign/eh-alloca-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-fastcall-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-vararg-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-vararg-2.C: Likewise.
	* g++.dg/torture/stackalign/eh-global-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-thiscall-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-inline-2.C: Likewise.
	* g++.dg/torture/stackalign/eh-inline-1.C: Likewise.
	* g++.dg/torture/pr52918-1.C: Likewise.
	* g++.dg/torture/pr49394.C: Likewise.
	* g++.dg/torture/pr57190.C: Likewise.
	* g++.dg/cpp0x/static_assert8.C: Likewise.
	* g++.dg/cpp0x/noexcept19.C: Likewise.
	* g++.dg/cpp0x/variadic-throw.C: Likewise.
	* g++.dg/cpp0x/variadic73.C: Likewise.
	* g++.dg/cpp0x/noexcept02.C: Likewise.
	* g++.dg/cpp0x/defaulted23.C: Likewise.
	* g++.dg/cpp0x/noexcept08.C: Likewise.
	* g++.dg/cpp0x/auto9.C: Likewise.
	* g++.dg/cpp0x/lambda/lambda-eh2.C: Likewise.
	* g++.dg/cpp0x/error5.C: Likewise.
	* c-c++-common/gomp/atomic-12.c: Likewise.
	* c-c++-common/gomp/atomic-13.c: Likewise.
	* c-c++-common/gomp/atomic-14.c: Likewise.
	* c-c++-common/Wvarargs-2.c: Likewise.
	* c-c++-common/Wvarargs.c: Likewise.
	* c-c++-common/vector-subscript-2.c: Likewise.
	* g++.old-deja/g++.robertl/eb123.C: Likewise.
	* g++.old-deja/g++.eh/tmpl3.C: Likewise.
	* g++.old-deja/g++.eh/cleanup2.C: Likewise.
	* g++.old-deja/g++.eh/badalloc1.C: Likewise.
	* g++.old-deja/g++.eh/throw2.C: Likewise.
	* g++.old-deja/g++.eh/throw1.C: Likewise.
	* g++.old-deja/g++.eh/tmpl1.C: Likewise.
	* g++.old-deja/g++.other/new7.C: Likewise.
	* g++.old-deja/g++.other/crash30.C: Likewise.
	* g++.old-deja/g++.other/regstack.C: Likewise.
	* g++.old-deja/g++.other/crash28.C: Likewise.
	* g++.old-deja/g++.jason/bool5.C: Likewise.
	* g++.old-deja/g++.mike/p10416.C: Likewise.
	* g++.old-deja/g++.mike/eh25.C: Likewise.
	* g++.old-deja/g++.mike/eh55.C: Likewise.
libcpp/
	* include/cpplib.h (enum c_lang): Rename CLK_GNUCXX1Z
	to CLK_GNUCXX17 and CLK_CXX1Z to CLK_CXX17.
	* init.c (lang_defaults, cpp_init_builtins): Likewise.
	* expr.c (cpp_classify_number): Use C++17 instead of C++1z
	in diagnostics.
libstdc++-v3/
	* testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
	-std=gnu++17 instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead
	of c++1z and c++17_only instead of c++1z_only.  Adjust expected
	diagnostics and comments refering to 1z to 17.
	* testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
	* testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
	* testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
	* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
	* testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
	Likewise.
	* testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
	* testsuite/18_support/launder/1.cc (test02): Likewise.
	* testsuite/18_support/launder/requirements_neg.cc: Likewise.
	* testsuite/18_support/launder/requirements.cc: Likewise.
	* testsuite/18_support/byte/requirements.cc: Likewise.
	* testsuite/18_support/byte/ops.cc: Likewise.
	* testsuite/18_support/byte/global_neg.cc: Likewise.
	* testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
	Likewise.
	* testsuite/27_io/types/4.cc: Likewise.
	* testsuite/25_algorithms/sample/81221.cc: Likewise.
	* testsuite/25_algorithms/sample/1.cc: Likewise.
	* testsuite/25_algorithms/sample/2.cc: Likewise.
	* testsuite/25_algorithms/search/searcher.cc: Likewise.
	* testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
	* testsuite/experimental/filesystem/path/construct/string_view.cc:
	Likewise.
	* testsuite/24_iterators/range_access_cpp17.cc: Likewise.
	* testsuite/24_iterators/container_access.cc: Likewise.
	* testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
	* testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
	* testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
	* testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
	* testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
	* testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
	* testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
	* testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
	* testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
	* testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
	* testsuite/20_util/pair/cons/deduction.cc: Likewise.
	* testsuite/20_util/variant/deduction.cc: Likewise.
	* testsuite/20_util/tuple/78939.cc: Likewise.
	* testsuite/20_util/tuple/cons/deduction.cc: Likewise.
	* testsuite/20_util/void_t/1.cc: Likewise.
	* testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
	* testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
	* testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
	* testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
	* testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
	Likewise.
	* testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
	Likewise.
	* testsuite/20_util/has_unique_object_representations/value.cc:
	Likewise.
	* testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
	* testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
	* testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
	* testsuite/20_util/function/cons/deduction.cc: Likewise.
	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
	Likewise.
	* testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
	* testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
	Likewise.
	* testsuite/20_util/is_aggregate/value.cc: Likewise.
	* testsuite/26_numerics/lcm/1.cc: Likewise.
	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
	* testsuite/26_numerics/gcd/1.cc: Likewise.
	* testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
	* testsuite/26_numerics/valarray/deduction.cc: Likewise.
	* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
	* testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
	* testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
	Likewise.
	* testsuite/23_containers/array/cons/deduction.cc: Likewise.
	* testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
	* testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
	Likewise.
	* testsuite/23_containers/deque/cons/deduction.cc: Likewise.
	* testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
	Likewise.
	* testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
	Likewise.
	* testsuite/23_containers/list/cons/deduction.cc: Likewise.
	* testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
	Likewise.
	* testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
	* testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
	Likewise.
	* testsuite/23_containers/vector/cons/deduction.cc: Likewise.
	* testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
	Likewise.
	* testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
	* testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
	* testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
	* testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
	Likewise.
	* testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
	* testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
	Likewise.
	* testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
	Likewise.
	* testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
	Likewise.
	* testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
	Likewise.
	* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
	Likewise.
	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
	Likewise.


	Jakub

Comments

Mike Stump Sept. 14, 2017, 9:24 p.m. UTC | #1
On Sep 14, 2017, at 1:26 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> 
> Given https://herbsutter.com/2017/09/06/c17-is-formally-approved/
> this patch makes -std=c++17 and -std=gnu++17 the documented options

> --- gcc/doc/invoke.texi.jj	2017-09-12 21:57:57.000000000 +0200
> +++ gcc/doc/invoke.texi	2017-09-14 19:32:34.342959968 +0200
> @@ -1870,15 +1870,15 @@ GNU dialect of @option{-std=c++14}.
> This is the default for C++ code.
> The name @samp{gnu++1y} is deprecated.
> 
> -@item c++1z
> -The next revision of the ISO C++ standard, tentatively planned for
> -2017.  Support is highly experimental, and will almost certainly
> -change in incompatible ways in future releases.
> -
> -@item gnu++1z
> -GNU dialect of @option{-std=c++1z}.  Support is highly experimental,
> -and will almost certainly change in incompatible ways in future
> -releases.
> +@item c++17
> +@itemx c++1z
> +The 2017 ISO C++ standard plus amendments.
> +The name @samp{c++1z} is deprecated.
> +
> +@item gnu++17
> +@itemx gnu++1z
> +GNU dialect of @option{-std=c++17}.
> +The name @samp{gnu++17} is deprecated.

I'd be tempted to say leave all this, and march 1z -> 2a for the _next_ standard.  2020 or so is a good first stab at the date.

> -or an unspecified value strictly larger than @code{201402L} for the
> -experimental languages enabled by @option{-std=c++1z} and
> -@option{-std=gnu++1z}.
> +@code{201703L} for the 2017 C++ standard.

Likewise.


Anyway, the testsuite portion is obvious and I reviewed it for correctness and Ok.
Jakub Jelinek Sept. 14, 2017, 9:28 p.m. UTC | #2
On Thu, Sep 14, 2017 at 02:24:01PM -0700, Mike Stump wrote:
> > --- gcc/doc/invoke.texi.jj	2017-09-12 21:57:57.000000000 +0200
> > +++ gcc/doc/invoke.texi	2017-09-14 19:32:34.342959968 +0200
> > @@ -1870,15 +1870,15 @@ GNU dialect of @option{-std=c++14}.
> > This is the default for C++ code.
> > The name @samp{gnu++1y} is deprecated.
> > 
> > -@item c++1z
> > -The next revision of the ISO C++ standard, tentatively planned for
> > -2017.  Support is highly experimental, and will almost certainly
> > -change in incompatible ways in future releases.
> > -
> > -@item gnu++1z
> > -GNU dialect of @option{-std=c++1z}.  Support is highly experimental,
> > -and will almost certainly change in incompatible ways in future
> > -releases.
> > +@item c++17
> > +@itemx c++1z
> > +The 2017 ISO C++ standard plus amendments.
> > +The name @samp{c++1z} is deprecated.
> > +
> > +@item gnu++17
> > +@itemx gnu++1z
> > +GNU dialect of @option{-std=c++17}.
> > +The name @samp{gnu++17} is deprecated.
> 
> I'd be tempted to say leave all this, and march 1z -> 2a for the _next_ standard.  2020 or so is a good first stab at the date.

I didn't want to add c++2a and gnu++2a in the same patch, it can be added
incrementally and readd the above wording.  Unless somebody else is planning
to do that, I can do that next.

> > -or an unspecified value strictly larger than @code{201402L} for the
> > -experimental languages enabled by @option{-std=c++1z} and
> > -@option{-std=gnu++1z}.
> > +@code{201703L} for the 2017 C++ standard.
> 
> Likewise.

Likewise.

	Jakub
Pedro Alves Sept. 14, 2017, 9:32 p.m. UTC | #3
On 09/14/2017 09:26 PM, Jakub Jelinek wrote:
> +@item c++17
> +@itemx c++1z
> +The 2017 ISO C++ standard plus amendments.
> +The name @samp{c++1z} is deprecated.
> +
> +@item gnu++17
> +@itemx gnu++1z
> +GNU dialect of @option{-std=c++17}.
> +The name @samp{gnu++17} is deprecated.
>  @end table

I think you meant to say that gnu++1z is deprecated, not gnu++17.

Thanks,
Pedro Alves
Jakub Jelinek Sept. 14, 2017, 9:39 p.m. UTC | #4
On Thu, Sep 14, 2017 at 10:32:12PM +0100, Pedro Alves wrote:
> On 09/14/2017 09:26 PM, Jakub Jelinek wrote:
> > +@item c++17
> > +@itemx c++1z
> > +The 2017 ISO C++ standard plus amendments.
> > +The name @samp{c++1z} is deprecated.
> > +
> > +@item gnu++17
> > +@itemx gnu++1z
> > +GNU dialect of @option{-std=c++17}.
> > +The name @samp{gnu++17} is deprecated.
> >  @end table
> 
> I think you meant to say that gnu++1z is deprecated, not gnu++17.

Fixed in my copy, thanks for catching that.

	Jakub
Nathan Sidwell Sept. 15, 2017, 4:08 p.m. UTC | #5
On 09/14/2017 04:26 PM, Jakub Jelinek wrote:
> Hi!
> 
> Given https://herbsutter.com/2017/09/06/c17-is-formally-approved/
> this patch makes -std=c++17 and -std=gnu++17 the documented options
> and -std=c++1z and -std=gnu++1z deprecated aliases, adjusts diagnostics etc.
> 
> Bootstrapped/regtest on x86_64-linux and i686-linux, ok for trunk?
> The changes in gcc/testsuite/ and libstdc++/testsuite appart from
> *.exp files are just sed -i -e 's/1z/17/g' `find . -type f`.

I think the patch is good, modulo the issue Pedro pointed at.

> There is one 1z spot in gcc/doc/standards.texi, but that whole paragraph
> looks wrong, can somebody please rewrite it to match the reality?

Yeah, that's no longer true.  Will fix.

nathan
Nathan Sidwell Sept. 15, 2017, 5:07 p.m. UTC | #6
On 09/14/2017 04:26 PM, Jakub Jelinek wrote:

> There is one 1z spot in gcc/doc/standards.texi, but that whole paragraph
> looks wrong, can somebody please rewrite it to match the reality?

This patch addresses that paragraph.  I've rewritten it using the c++11 
and C++14 examples and removed any reference to concepts there.  I 
noticed the URLS don't point anywhere useful, so updated them. The web 
page still uses cxx1z as the tag, so I left that.

ok?

nathan
Sandra Loosemore Sept. 15, 2017, 5:34 p.m. UTC | #7
On 09/15/2017 11:07 AM, Nathan Sidwell wrote:
> On 09/14/2017 04:26 PM, Jakub Jelinek wrote:
>
>> There is one 1z spot in gcc/doc/standards.texi, but that whole paragraph
>> looks wrong, can somebody please rewrite it to match the reality?
>
> This patch addresses that paragraph.  I've rewritten it using the c++11
> and C++14 examples and removed any reference to concepts there.  I
> noticed the URLS don't point anywhere useful, so updated them. The web
> page still uses cxx1z as the tag, so I left that.
>
> ok?
>
> nathan
>

Looks good to me.  :-)

-Sandra
diff mbox series

Patch

--- gcc/doc/invoke.texi.jj	2017-09-12 21:57:57.000000000 +0200
+++ gcc/doc/invoke.texi	2017-09-14 19:32:34.342959968 +0200
@@ -1870,15 +1870,15 @@  GNU dialect of @option{-std=c++14}.
 This is the default for C++ code.
 The name @samp{gnu++1y} is deprecated.
 
-@item c++1z
-The next revision of the ISO C++ standard, tentatively planned for
-2017.  Support is highly experimental, and will almost certainly
-change in incompatible ways in future releases.
-
-@item gnu++1z
-GNU dialect of @option{-std=c++1z}.  Support is highly experimental,
-and will almost certainly change in incompatible ways in future
-releases.
+@item c++17
+@itemx c++1z
+The 2017 ISO C++ standard plus amendments.
+The name @samp{c++1z} is deprecated.
+
+@item gnu++17
+@itemx gnu++1z
+GNU dialect of @option{-std=c++17}.
+The name @samp{gnu++17} is deprecated.
 @end table
 
 @item -fgnu89-inline
@@ -2304,7 +2304,7 @@  specify how much alignment (in bytes) is
 but few users will need to override the default of
 @code{alignof(std::max_align_t)}.
 
-This flag is enabled by default for @option{-std=c++1z}.
+This flag is enabled by default for @option{-std=c++17}.
 
 @item -fcheck-new
 @opindex fcheck-new
@@ -2479,7 +2479,7 @@  Enable the P0522 resolution to Core issu
 parameters and default arguments: this allows a template with default
 template arguments as an argument for a template template parameter
 with fewer template parameters.  This flag is enabled by default for
-@option{-std=c++1z}.
+@option{-std=c++17}.
 
 @item -fno-nonansi-builtins
 @opindex fno-nonansi-builtins
@@ -2573,10 +2573,10 @@  cast to convert an arbitrary integer val
 @opindex fstrong-eval-order
 Evaluate member access, array subscripting, and shift expressions in
 left-to-right order, and evaluate assignment in right-to-left order,
-as adopted for C++17.  Enabled by default with @option{-std=c++1z}.
+as adopted for C++17.  Enabled by default with @option{-std=c++17}.
 @option{-fstrong-eval-order=some} enables just the ordering of member
 access and shift expressions, and is the default without
-@option{-std=c++1z}.
+@option{-std=c++17}.
 
 @item -ftemplate-backtrace-limit=@var{n}
 @opindex ftemplate-backtrace-limit
@@ -2913,14 +2913,14 @@  the compiler to never throw an exception
 @item -Wnoexcept-type @r{(C++ and Objective-C++ only)}
 @opindex Wnoexcept-type
 @opindex Wno-noexcept-type
-Warn if the C++1z feature making @code{noexcept} part of a function
+Warn if the C++17 feature making @code{noexcept} part of a function
 type changes the mangled name of a symbol relative to C++14.  Enabled
-by @option{-Wabi} and @option{-Wc++1z-compat}.
+by @option{-Wabi} and @option{-Wc++17-compat}.
 
 @smallexample
 template <class T> void f(T t) @{ t(); @};
 void g() noexcept;
-void h() @{ f(g); @} // in C++14 calls f<void(*)()>, in C++1z calls f<void(*)()noexcept>
+void h() @{ f(g); @} // in C++14 calls f<void(*)()>, in C++17 calls f<void(*)()noexcept>
 @end smallexample
 
 @item -Wclass-memaccess @r{(C++ and Objective-C++ only)}
@@ -2957,7 +2957,7 @@  Warn on uses of the @code{register} stor
 when it is part of the GNU @ref{Explicit Register Variables} extension.
 The use of the @code{register} keyword as storage class specifier has
 been deprecated in C++11 and removed in C++17.
-Enabled by default with @option{-std=c++1z}.
+Enabled by default with @option{-std=c++17}.
 
 @item -Wreorder @r{(C++ and Objective-C++ only)}
 @opindex Wreorder
@@ -5391,7 +5391,7 @@  Warn about suspicious operations on expr
 instance, bitwise negation of a boolean is very likely a bug in the program.
 For C, this warning also warns about incrementing or decrementing a boolean,
 which rarely makes sense.  (In C++, decrementing a boolean is always invalid.
-Incrementing a boolean is invalid in C++1z, and deprecated otherwise.)
+Incrementing a boolean is invalid in C++17, and deprecated otherwise.)
 
 This warning is enabled by @option{-Wall}.
 
@@ -5898,8 +5898,8 @@  enabled by @option{-Wall}.
 Warn about C++ constructs whose meaning differs between ISO C++ 2011
 and ISO C++ 2014.  This warning is enabled by @option{-Wall}.
 
-@item -Wc++1z-compat @r{(C++ and Objective-C++ only)}
-@opindex Wc++1z-compat
+@item -Wc++17-compat @r{(C++ and Objective-C++ only)}
+@opindex Wc++17-compat
 Warn about C++ constructs whose meaning differs between ISO C++ 2014
-and the forthoming ISO C++ 2017(?).  This warning is enabled by @option{-Wall}.
+and ISO C++ 2017.  This warning is enabled by @option{-Wall}.
 
--- gcc/doc/cpp.texi.jj	2017-02-13 12:20:51.000000000 +0100
+++ gcc/doc/cpp.texi	2017-09-14 19:30:43.368310963 +0200
@@ -1877,9 +1877,7 @@  selected, the value of the macro is
 @code{199711L} for the 1998 C++ standard,
 @code{201103L} for the 2011 C++ standard,
 @code{201402L} for the 2014 C++ standard,
-or an unspecified value strictly larger than @code{201402L} for the
-experimental languages enabled by @option{-std=c++1z} and
-@option{-std=gnu++1z}.
+@code{201703L} for the 2017 C++ standard.
 
 @item __OBJC__
 This macro is defined, with value 1, when the Objective-C compiler is in
--- gcc/dwarf2out.c.jj	2017-09-13 16:22:21.000000000 +0200
+++ gcc/dwarf2out.c	2017-09-14 21:11:23.166254110 +0200
@@ -23395,6 +23395,8 @@  gen_producer_string (void)
 static const char *
 highest_c_language (const char *lang1, const char *lang2)
 {
+  if (strcmp ("GNU C++17", lang1) == 0 || strcmp ("GNU C++17", lang2) == 0)
+    return "GNU C++17";
   if (strcmp ("GNU C++14", lang1) == 0 || strcmp ("GNU C++14", lang2) == 0)
     return "GNU C++14";
   if (strcmp ("GNU C++11", lang1) == 0 || strcmp ("GNU C++11", lang2) == 0)
@@ -23491,6 +23493,9 @@  gen_compile_unit_die (const char *filena
 	    language = DW_LANG_C_plus_plus_11;
 	  else if (strcmp (language_string, "GNU C++14") == 0)
 	    language = DW_LANG_C_plus_plus_14;
+	  else if (strcmp (language_string, "GNU C++17") == 0)
+	    /* For now.  */
+	    language = DW_LANG_C_plus_plus_14;
 	}
     }
   else if (strcmp (language_string, "GNU F77") == 0)
--- gcc/c-family/c.opt.jj	2017-09-01 09:25:35.000000000 +0200
+++ gcc/c-family/c.opt	2017-09-14 19:04:30.626256567 +0200
@@ -378,11 +378,11 @@  C++ ObjC++ Var(warn_cxx14_compat) Warnin
 Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
 
 Wc++1z-compat
-C++ ObjC++ Var(warn_cxx1z_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
-Warn about C++ constructs whose meaning differs between ISO C++ 2014 and (forthcoming) ISO C++ 201z(7?).
+C++ ObjC++ Warning Alias(Wc++17-compat) Undocumented
 
 Wc++17-compat
-C++ ObjC++ Warning Alias(Wc++1z-compat) Undocumented
+C++ ObjC++ Var(warn_cxx17_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
+Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.
 
 Wcast-qual
 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
@@ -809,8 +809,8 @@  C++ ObjC++ Var(warn_noexcept) Warning
 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
 
 Wnoexcept-type
-C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++1z-compat)
-Warn if C++1z noexcept function type will change the mangled name of a symbol.
+C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++17-compat)
+Warn if C++17 noexcept function type will change the mangled name of a symbol.
 
 Wnon-template-friend
 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
@@ -1925,11 +1925,12 @@  C++ ObjC++
 Conform to the ISO 2014 C++ standard.
 
 std=c++1z
-C++ ObjC++
-Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete support).
+C++ ObjC++ Alias(std=c++17) Undocumented
+Deprecated in favor of -std=c++17.
 
 std=c++17
-C++ ObjC++ Alias(std=c++1z) Undocumented
+C++ ObjC++
+Conform to the ISO 2017 C++ standard.
 
 std=c11
 C ObjC
@@ -1982,11 +1983,12 @@  C++ ObjC++
 Conform to the ISO 2014 C++ standard with GNU extensions.
 
 std=gnu++1z
-C++ ObjC++
-Conform to the ISO 201z(7?) C++ draft standard with GNU extensions (experimental and incomplete support).
+C++ ObjC++ Alias(std=gnu++17) Undocumented
+Deprecated in favor of -std=gnu++17.
 
 std=gnu++17
-C++ ObjC++ Alias(std=gnu++1z) Undocumented
+C++ ObjC++
+Conform to the ISO 2017 C++ standard with GNU extensions.
 
 std=gnu11
 C ObjC
--- gcc/c-family/c-common.h.jj	2017-09-12 21:57:56.000000000 +0200
+++ gcc/c-family/c-common.h	2017-09-14 19:08:56.249082780 +0200
@@ -702,8 +702,8 @@  enum cxx_dialect {
   cxx11 = cxx0x,
   /* C++14 */
   cxx14,
-  /* C++1z (C++17?) */
-  cxx1z
+  /* C++17 */
+  cxx17
 };
 
 /* The C++ dialect being used. C++98 is the default.  */
--- gcc/c-family/c-opts.c.jj	2017-09-02 16:59:57.000000000 +0200
+++ gcc/c-family/c-opts.c	2017-09-14 19:09:17.119833407 +0200
@@ -110,7 +110,7 @@  static void handle_OPT_d (const char *);
 static void set_std_cxx98 (int);
 static void set_std_cxx11 (int);
 static void set_std_cxx14 (int);
-static void set_std_cxx1z (int);
+static void set_std_cxx17 (int);
 static void set_std_c89 (int, int);
 static void set_std_c99 (int);
 static void set_std_c11 (int);
@@ -631,10 +631,10 @@  c_common_handle_option (size_t scode, co
 	set_std_cxx14 (code == OPT_std_c__14 /* ISO */);
       break;
 
-    case OPT_std_c__1z:
-    case OPT_std_gnu__1z:
+    case OPT_std_c__17:
+    case OPT_std_gnu__17:
       if (!preprocessing_asm_p)
-	set_std_cxx1z (code == OPT_std_c__1z /* ISO */);
+	set_std_cxx17 (code == OPT_std_c__17 /* ISO */);
       break;
 
     case OPT_std_c90:
@@ -886,7 +886,7 @@  c_common_post_options (const char **pfil
 
   /* -Wregister is enabled by default in C++17.  */
   if (!global_options_set.x_warn_register)
-    warn_register = cxx_dialect >= cxx1z;
+    warn_register = cxx_dialect >= cxx17;
 
   /* Declone C++ 'structors if -Os.  */
   if (flag_declone_ctor_dtor == -1)
@@ -923,9 +923,9 @@  c_common_post_options (const char **pfil
   if (!global_options_set.x_flag_new_inheriting_ctors)
     flag_new_inheriting_ctors = abi_version_at_least (11);
 
-  /* For GCC 7, only enable DR150 resolution by default if -std=c++1z.  */
+  /* For GCC 7, only enable DR150 resolution by default if -std=c++17.  */
   if (!global_options_set.x_flag_new_ttp)
-    flag_new_ttp = (cxx_dialect >= cxx1z);
+    flag_new_ttp = (cxx_dialect >= cxx17);
 
   if (cxx_dialect >= cxx11)
     {
@@ -938,7 +938,7 @@  c_common_post_options (const char **pfil
 	warn_narrowing = 1;
 
       /* Unless -f{,no-}ext-numeric-literals has been used explicitly,
-	 for -std=c++{11,14,1z} default to -fno-ext-numeric-literals.  */
+	 for -std=c++{11,14,17} default to -fno-ext-numeric-literals.  */
       if (flag_iso && !global_options_set.x_flag_ext_numeric_literals)
 	cpp_opts->ext_numeric_literals = 0;
     }
@@ -949,7 +949,7 @@  c_common_post_options (const char **pfil
      for earlier C++ as well, so chaining works as expected.  */
   if (c_dialect_cxx ()
       && flag_strong_eval_order == -1)
-    flag_strong_eval_order = (cxx_dialect >= cxx1z ? 2 : 1);
+    flag_strong_eval_order = (cxx_dialect >= cxx17 ? 2 : 1);
 
   /* Global sized deallocation is new in C++14.  */
   if (flag_sized_deallocation == -1)
@@ -1581,7 +1581,7 @@  set_std_cxx11 (int iso)
   lang_hooks.name = "GNU C++11";
 }
 
-/* Set the C++ 2014 draft standard (without GNU extensions if ISO).  */
+/* Set the C++ 2014 standard (without GNU extensions if ISO).  */
 static void
 set_std_cxx14 (int iso)
 {
@@ -1596,11 +1596,11 @@  set_std_cxx14 (int iso)
   lang_hooks.name = "GNU C++14";
 }
 
-/* Set the C++ 201z draft standard (without GNU extensions if ISO).  */
+/* Set the C++ 2017 standard (without GNU extensions if ISO).  */
 static void
-set_std_cxx1z (int iso)
+set_std_cxx17 (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Z: CLK_GNUCXX1Z);
+  cpp_set_lang (parse_in, iso ? CLK_CXX17: CLK_GNUCXX17);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1608,8 +1608,8 @@  set_std_cxx1z (int iso)
   flag_isoc94 = 1;
   flag_isoc99 = 1;
   flag_isoc11 = 1;
-  cxx_dialect = cxx1z;
-  lang_hooks.name = "GNU C++14"; /* Pretend C++14 till standarization.  */
+  cxx_dialect = cxx17;
+  lang_hooks.name = "GNU C++17";
 }
 
 /* Args to -d specify what to dump.  Silently ignore
--- gcc/cp/decl.c.jj	2017-09-12 21:58:01.000000000 +0200
+++ gcc/cp/decl.c	2017-09-14 19:13:30.855778686 +0200
@@ -2909,7 +2909,7 @@  redeclaration_error_message (tree newdec
 	 if the variable is defined within the class with constexpr
 	 specifier is declaration rather than definition (and
 	 deprecated).  */
-      if (cxx_dialect >= cxx1z
+      if (cxx_dialect >= cxx17
 	  && DECL_CLASS_SCOPE_P (olddecl)
 	  && DECL_DECLARED_CONSTEXPR_P (olddecl)
 	  && !DECL_INITIAL (newdecl))
@@ -4050,7 +4050,7 @@  cxx_init_decl_processing (void)
   std_node = current_namespace;
   pop_namespace ();
 
-  flag_noexcept_type = (cxx_dialect >= cxx1z);
+  flag_noexcept_type = (cxx_dialect >= cxx17);
 
   c_common_nodes_and_builtins ();
 
@@ -4150,7 +4150,7 @@  cxx_init_decl_processing (void)
       aligned_new_threshold = 1;
     }
   if (aligned_new_threshold == -1)
-    aligned_new_threshold = (cxx_dialect >= cxx1z) ? 1 : 0;
+    aligned_new_threshold = (cxx_dialect >= cxx17) ? 1 : 0;
   if (aligned_new_threshold == 1)
     aligned_new_threshold = malloc_alignment () / BITS_PER_UNIT;
 
@@ -5573,7 +5573,7 @@  next_initializable_field (tree field)
 	 && (TREE_CODE (field) != FIELD_DECL
 	     || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field))
 	     || (DECL_ARTIFICIAL (field)
-		 && !(cxx_dialect >= cxx1z && DECL_FIELD_IS_BASE (field)))))
+		 && !(cxx_dialect >= cxx17 && DECL_FIELD_IS_BASE (field)))))
     field = DECL_CHAIN (field);
 
   return field;
@@ -5585,7 +5585,7 @@  next_initializable_field (tree field)
 bool
 is_direct_enum_init (tree type, tree init)
 {
-  if (cxx_dialect >= cxx1z
+  if (cxx_dialect >= cxx17
       && TREE_CODE (type) == ENUMERAL_TYPE
       && ENUM_FIXED_UNDERLYING_TYPE_P (type)
       && TREE_CODE (init) == CONSTRUCTOR
@@ -6351,7 +6351,7 @@  check_initializer (tree decl, tree init,
 
       if (cxx_dialect < cxx11)
 	error ("initializer invalid for static member with constructor");
-      else if (cxx_dialect < cxx1z)
+      else if (cxx_dialect < cxx17)
 	error ("non-constant in-class initialization invalid for static "
 	       "member %qD", decl);
       else
@@ -6727,9 +6727,9 @@  cp_finish_decl (tree decl, tree init, bo
      or local register variable extension.  */
   if (VAR_P (decl) && DECL_REGISTER (decl) && asmspec_tree == NULL_TREE)
     {
-      if (cxx_dialect >= cxx1z)
+      if (cxx_dialect >= cxx17)
 	pedwarn (DECL_SOURCE_LOCATION (decl), OPT_Wregister,
-		 "ISO C++1z does not allow %<register%> storage "
+		 "ISO C++17 does not allow %<register%> storage "
 		 "class specifier");
       else
 	warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wregister,
@@ -9787,10 +9787,10 @@  mark_inline_variable (tree decl)
 	     "%qD declared at block scope", decl);
       inlinep = false;
     }
-  else if (cxx_dialect < cxx1z)
+  else if (cxx_dialect < cxx17)
     pedwarn (DECL_SOURCE_LOCATION (decl), 0,
 	     "inline variables are only available "
-	     "with -std=c++1z or -std=gnu++1z");
+	     "with -std=c++17 or -std=gnu++17");
   if (inlinep)
     {
       retrofit_lang_decl (decl);
@@ -10522,7 +10522,7 @@  grokdeclarator (const cp_declarator *dec
   /* We might have ignored or rejected some of the qualifiers.  */
   type_quals = cp_type_quals (type);
 
-  if (cxx_dialect >= cxx1z && type && is_auto (type)
+  if (cxx_dialect >= cxx17 && type && is_auto (type)
       && innermost_code != cdk_function
       && id_declarator && declarator != id_declarator)
     if (tree tmpl = CLASS_PLACEHOLDER_TEMPLATE (type))
@@ -11730,7 +11730,7 @@  grokdeclarator (const cp_declarator *dec
 	error ("cannot use %<::%> in parameter declaration");
 
       if (type_uses_auto (type)
-	  && !(cxx_dialect >= cxx1z && template_parm_flag))
+	  && !(cxx_dialect >= cxx17 && template_parm_flag))
 	{
 	  if (cxx_dialect >= cxx14)
 	    error ("%<auto%> parameter not permitted in this context");
@@ -12063,7 +12063,7 @@  grokdeclarator (const cp_declarator *dec
 		  mark_inline_variable (decl);
 
 		if (!DECL_VAR_DECLARED_INLINE_P (decl)
-		    && !(cxx_dialect >= cxx1z && constexpr_p))
+		    && !(cxx_dialect >= cxx17 && constexpr_p))
 		  /* Even if there is an in-class initialization, DECL
 		     is considered undefined until an out-of-class
 		     definition is provided, unless this is an inline
@@ -12332,9 +12332,9 @@  grokdeclarator (const cp_declarator *dec
 	/* Warn about register storage specifiers on PARM_DECLs.  */
 	if (TREE_CODE (decl) == PARM_DECL)
 	  {
-	    if (cxx_dialect >= cxx1z)
+	    if (cxx_dialect >= cxx17)
 	      pedwarn (DECL_SOURCE_LOCATION (decl), OPT_Wregister,
-		       "ISO C++1z does not allow %<register%> storage "
+		       "ISO C++17 does not allow %<register%> storage "
 		       "class specifier");
 	    else
 	      warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wregister,
@@ -12601,8 +12601,7 @@  grokparms (tree parmlist, tree *parms)
 	    }
 	  else if (abstract_virtuals_error (decl, type))
 	    any_error = 1;  /* Seems like a good idea.  */
-	  else if (cxx_dialect < cxx1z
-		   && POINTER_TYPE_P (type))
+	  else if (cxx_dialect < cxx17 && POINTER_TYPE_P (type))
 	    {
 	      /* Before C++17 DR 393:
 		 [dcl.fct]/6, parameter types cannot contain pointers
@@ -13803,7 +13802,7 @@  xref_basetypes (tree ref, tree base_list
 
       /* Before C++17, an aggregate cannot have base classes.  In C++17, an
 	 aggregate can't have virtual, private, or protected base classes.  */
-      if (cxx_dialect < cxx1z
+      if (cxx_dialect < cxx17
 	  || access != access_public_node
 	  || via_virtual)
 	CLASSTYPE_NON_AGGREGATE (ref) = true;
@@ -15574,7 +15573,7 @@  finish_function (int flags)
     check_function_concept (fndecl);
 
   /* Lambda closure members are implicitly constexpr if possible.  */
-  if (cxx_dialect >= cxx1z
+  if (cxx_dialect >= cxx17
       && LAMBDA_TYPE_P (CP_DECL_CONTEXT (fndecl)))
     DECL_DECLARED_CONSTEXPR_P (fndecl)
       = ((processing_template_decl
--- gcc/cp/cp-tree.h.jj	2017-09-13 16:22:20.000000000 +0200
+++ gcc/cp/cp-tree.h	2017-09-14 19:12:45.490325118 +0200
@@ -3884,7 +3884,7 @@  more_aggr_init_expr_args_p (const aggr_i
    declared with constexpr specifier are implicitly inline variables.  */
 #define DECL_INLINE_VAR_P(NODE) \
   (DECL_VAR_DECLARED_INLINE_P (NODE)				\
-   || (cxx_dialect >= cxx1z					\
+   || (cxx_dialect >= cxx17					\
        && DECL_DECLARED_CONSTEXPR_P (NODE)			\
        && DECL_CLASS_SCOPE_P (NODE)))
 
--- gcc/cp/pt.c.jj	2017-09-07 13:19:31.000000000 +0200
+++ gcc/cp/pt.c	2017-09-14 19:14:23.847140400 +0200
@@ -4551,7 +4551,7 @@  mark_template_parm (tree t, void* data)
     }
 
   /* In C++17 the type of a non-type argument is a deduced context.  */
-  if (cxx_dialect >= cxx1z
+  if (cxx_dialect >= cxx17
       && TREE_CODE (t) == TEMPLATE_PARM_INDEX)
     for_each_template_parm (TREE_TYPE (t),
 			    &mark_template_parm,
@@ -6475,7 +6475,7 @@  convert_nontype_argument (tree type, tre
 	   to leave it in that form rather than lower it to a
 	   CONSTRUCTOR.  */;
       else if (INTEGRAL_OR_ENUMERATION_TYPE_P (type)
-	       || cxx_dialect >= cxx1z)
+	       || cxx_dialect >= cxx17)
 	{
 	  /* C++17: A template-argument for a non-type template-parameter shall
 	     be a converted constant expression (8.20) of the type of the
@@ -6663,7 +6663,7 @@  convert_nontype_argument (tree type, tre
 		       orig_expr, type, decl);
 	      return NULL_TREE;
 	    }
-	  else if ((cxx_dialect >= cxx11 && cxx_dialect < cxx1z)
+	  else if ((cxx_dialect >= cxx11 && cxx_dialect < cxx17)
 		   && decl_linkage (decl) == lk_none)
 	    {
 	      if (complain & tf_error)
@@ -10817,7 +10817,7 @@  instantiate_class_template_1 (tree type)
       tree decl = lambda_function (type);
       if (decl)
 	{
-	  if (cxx_dialect >= cxx1z)
+	  if (cxx_dialect >= cxx17)
 	    CLASSTYPE_LITERAL_P (type) = true;
 
 	  if (!DECL_TEMPLATE_INFO (decl)
@@ -19543,7 +19543,7 @@  type_unification_real (tree tparms,
       tsubst_flags_t complain = (explain_p
 				 ? tf_warning_or_error
 				 : tf_none);
-      bool tried_array_deduction = (cxx_dialect < cxx1z);
+      bool tried_array_deduction = (cxx_dialect < cxx17);
 
       for (i = 0; i < ntparms; i++)
 	{
@@ -20918,7 +20918,7 @@  unify (tree tparms, tree targs, tree par
       else if (uses_template_parms (tparm))
 	{
 	  /* We haven't deduced the type of this parameter yet.  */
-	  if (cxx_dialect >= cxx1z
+	  if (cxx_dialect >= cxx17
 	      /* We deduce from array bounds in try_array_deduction.  */
 	      && !(strict & UNIFY_ALLOW_INTEGER))
 	    {
@@ -21890,7 +21890,7 @@  get_partial_spec_bindings (tree tmpl, tr
   else
     deduced_args = innermost_deduced_args;
 
-  bool tried_array_deduction = (cxx_dialect < cxx1z);
+  bool tried_array_deduction = (cxx_dialect < cxx17);
  again:
   if (unify (tparms, deduced_args,
 	     INNERMOST_TEMPLATE_ARGS (spec_args),
@@ -23707,7 +23707,7 @@  dependent_type_p_r (tree type)
 	   arg_type = TREE_CHAIN (arg_type))
 	if (dependent_type_p (TREE_VALUE (arg_type)))
 	  return true;
-      if (cxx_dialect >= cxx1z)
+      if (cxx_dialect >= cxx17)
 	{
 	  /* A value-dependent noexcept-specifier makes the type dependent.  */
 	  tree spec = TYPE_RAISES_EXCEPTIONS (type);
--- gcc/cp/typeck.c.jj	2017-09-01 13:20:11.000000000 +0200
+++ gcc/cp/typeck.c	2017-09-14 19:14:44.683889419 +0200
@@ -6177,11 +6177,11 @@  cp_build_unary_op (enum tree_code code,
 	      }
 	    else
 	      {
-		if (cxx_dialect >= cxx1z)
+		if (cxx_dialect >= cxx17)
 		  {
 		    if (complain & tf_error)
 		      error ("use of an operand of type %qT in "
-			     "%<operator++%> is forbidden in C++1z",
+			     "%<operator++%> is forbidden in C++17",
 			     boolean_type_node);
 		    return error_mark_node;
 		  }
--- gcc/cp/Make-lang.in.jj	2017-05-25 10:37:00.000000000 +0200
+++ gcc/cp/Make-lang.in	2017-09-14 19:17:10.003139033 +0200
@@ -169,13 +169,14 @@  c++.srcman: doc/g++.1
 # entry point.  We feed the former to the latter here.
 check-c++ : check-g++
 
-# Run the testsuite in C++1z mode.
-check-c++1z:
-	$(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS)" GXX_TESTSUITE_STDS=1z check-g++
+# Run the testsuite in C++17 mode.
+check-c++1z: check-c++17
+check-c++17:
+	$(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS)" GXX_TESTSUITE_STDS=17 check-g++
 
 # Run the testsuite in all standard conformance levels.
 check-c++-all:
-	$(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) --stds=98,11,14,1z,concepts" check-g++
+	$(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) --stds=98,11,14,17,concepts" check-g++
 
 # Run the testsuite with garbage collection at every opportunity.
 check-g++-strict-gc:
--- gcc/cp/constexpr.c.jj	2017-09-12 09:35:47.000000000 +0200
+++ gcc/cp/constexpr.c	2017-09-14 19:12:27.729539049 +0200
@@ -3304,7 +3304,7 @@  var_in_constexpr_fn (tree t)
 bool
 var_in_maybe_constexpr_fn (tree t)
 {
-  if (cxx_dialect >= cxx1z
+  if (cxx_dialect >= cxx17
       && DECL_FUNCTION_SCOPE_P (t)
       && LAMBDA_FUNCTION_P (DECL_CONTEXT (t)))
     return true;
--- gcc/cp/call.c.jj	2017-09-06 16:23:26.000000000 +0200
+++ gcc/cp/call.c	2017-09-14 19:11:55.229930510 +0200
@@ -3743,7 +3743,7 @@  build_user_type_conversion_1 (tree totyp
   /* FIXME P0135 doesn't say what to do in C++17 about list-initialization from
      a single element.  For now, let's handle constructors as before and also
      consider conversion operators from the element.  */
-  if (cxx_dialect >= cxx1z
+  if (cxx_dialect >= cxx17
       && BRACE_ENCLOSED_INITIALIZER_P (expr)
       && CONSTRUCTOR_NELTS (expr) == 1)
     fromtype = TREE_TYPE (CONSTRUCTOR_ELT (expr, 0)->value);
@@ -8035,7 +8035,7 @@  build_over_call (struct z_candidate *can
 
       /* In C++17 we shouldn't be copying a TARGET_EXPR except into a base
 	 subobject.  */
-      if (CHECKING_P && cxx_dialect >= cxx1z)
+      if (CHECKING_P && cxx_dialect >= cxx17)
 	gcc_assert (TREE_CODE (arg) != TARGET_EXPR
 		    /* It's from binding the ref parm to a packed field. */
 		    || convs[0]->need_temporary_p
@@ -8792,7 +8792,7 @@  build_special_member_call (tree instance
      of the destination, the initializer expression is used to initialize the
      destination object."  Handle that here to avoid doing overload
      resolution.  */
-  if (cxx_dialect >= cxx1z
+  if (cxx_dialect >= cxx17
       && args && vec_safe_length (*args) == 1
       && name == complete_ctor_identifier)
     {
--- gcc/cp/lambda.c.jj	2017-09-01 09:26:25.000000000 +0200
+++ gcc/cp/lambda.c	2017-09-14 19:13:42.162642494 +0200
@@ -155,7 +155,7 @@  begin_lambda_type (tree lambda)
 
   /* In C++17, assume the closure is literal; we'll clear the flag later if
      necessary.  */
-  if (cxx_dialect >= cxx1z)
+  if (cxx_dialect >= cxx17)
     CLASSTYPE_LITERAL_P (type) = true;
 
   /* Clear base types.  */
--- gcc/cp/mangle.c.jj	2017-09-01 09:26:25.000000000 +0200
+++ gcc/cp/mangle.c	2017-09-14 19:14:01.453410135 +0200
@@ -116,7 +116,7 @@  struct GTY(()) globals {
   bool need_abi_warning;
 
   /* True if the mangling will be different in C++17 mode.  */
-  bool need_cxx1z_warning;
+  bool need_cxx17_warning;
 };
 
 static GTY (()) globals G;
@@ -362,7 +362,7 @@  write_exception_spec (tree spec)
 
   if (!flag_noexcept_type)
     {
-      G.need_cxx1z_warning = true;
+      G.need_cxx17_warning = true;
       return;
     }
 
@@ -3666,7 +3666,7 @@  start_mangling (const tree entity)
 {
   G.entity = entity;
   G.need_abi_warning = false;
-  G.need_cxx1z_warning = false;
+  G.need_cxx17_warning = false;
   obstack_free (&name_obstack, name_base);
   mangle_obstack = &name_obstack;
   name_base = obstack_alloc (&name_obstack, 0);
@@ -3853,7 +3853,7 @@  mangle_decl (const tree decl)
     }
   SET_DECL_ASSEMBLER_NAME (decl, id);
 
-  if (G.need_cxx1z_warning
+  if (G.need_cxx17_warning
       && (TREE_PUBLIC (decl) || DECL_REALLY_EXTERN (decl)))
     warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wnoexcept_type,
 		"mangled name for %qD will change in C++17 because the "
--- gcc/cp/typeck2.c.jj	2017-09-01 09:26:24.000000000 +0200
+++ gcc/cp/typeck2.c	2017-09-14 19:14:57.439735774 +0200
@@ -1364,7 +1364,7 @@  process_init_constructor_record (tree ty
   gcc_assert (TREE_CODE (type) == RECORD_TYPE);
   gcc_assert (!CLASSTYPE_VBASECLASSES (type));
   gcc_assert (!TYPE_BINFO (type)
-	      || cxx_dialect >= cxx1z
+	      || cxx_dialect >= cxx17
 	      || !BINFO_N_BASE_BINFOS (TYPE_BINFO (type)));
   gcc_assert (!TYPE_POLYMORPHIC_P (type));
 
@@ -1384,7 +1384,7 @@  process_init_constructor_record (tree ty
 
       if (TREE_CODE (field) != FIELD_DECL
 	  || (DECL_ARTIFICIAL (field)
-	      && !(cxx_dialect >= cxx1z && DECL_FIELD_IS_BASE (field))))
+	      && !(cxx_dialect >= cxx17 && DECL_FIELD_IS_BASE (field))))
 	continue;
 
       /* If this is a bitfield, first convert to the declared type.  */
--- gcc/cp/class.c.jj	2017-09-13 16:22:20.000000000 +0200
+++ gcc/cp/class.c	2017-09-14 19:12:13.620708991 +0200
@@ -4317,7 +4317,7 @@  build_base_field (record_layout_info rli
 	 back end issues with overlapping FIELD_DECLs, but that doesn't seem to
 	 be a problem anymore.  We need them to handle initialization of C++17
 	 aggregate bases.  */
-      if (cxx_dialect >= cxx1z && !BINFO_VIRTUAL_P (binfo))
+      if (cxx_dialect >= cxx17 && !BINFO_VIRTUAL_P (binfo))
 	{
 	  tree decl = build_base_field_1 (t, basetype, next_field);
 	  DECL_FIELD_OFFSET (decl) = BINFO_OFFSET (binfo);
@@ -5351,7 +5351,7 @@  finalize_literal_type_property (tree t)
       || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t))
     CLASSTYPE_LITERAL_P (t) = false;
   else if (CLASSTYPE_LITERAL_P (t) && LAMBDA_TYPE_P (t))
-    CLASSTYPE_LITERAL_P (t) = (cxx_dialect >= cxx1z);
+    CLASSTYPE_LITERAL_P (t) = (cxx_dialect >= cxx17);
   else if (CLASSTYPE_LITERAL_P (t) && !TYPE_HAS_TRIVIAL_DFLT (t)
 	   && CLASSTYPE_NON_AGGREGATE (t)
 	   && !TYPE_HAS_CONSTEXPR_CTOR (t))
@@ -5394,9 +5394,9 @@  explain_non_literal_class (tree t)
     return;
 
   inform (0, "%q+T is not literal because:", t);
-  if (cxx_dialect < cxx1z && LAMBDA_TYPE_P (t))
+  if (cxx_dialect < cxx17 && LAMBDA_TYPE_P (t))
     inform (0, "  %qT is a closure type, which is only literal in "
-	    "C++1z and later", t);
+	    "C++17 and later", t);
   else if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t))
     inform (0, "  %q+T has a non-trivial destructor", t);
   else if (CLASSTYPE_NON_AGGREGATE (t)
--- gcc/cp/parser.c.jj	2017-09-01 13:24:30.000000000 +0200
+++ gcc/cp/parser.c	2017-09-14 19:11:27.206268058 +0200
@@ -3163,9 +3163,9 @@  cp_parser_diagnose_invalid_type_name (cp
       error_at (location,
 		"invalid use of template-name %qE without an argument list",
 		decl);
-      if (DECL_CLASS_TEMPLATE_P (decl) && cxx_dialect < cxx1z)
+      if (DECL_CLASS_TEMPLATE_P (decl) && cxx_dialect < cxx17)
 	inform (location, "class template argument deduction is only available "
-		"with -std=c++1z or -std=gnu++1z");
+		"with -std=c++17 or -std=gnu++17");
       inform (DECL_SOURCE_LOCATION (decl), "%qD declared here", decl);
     }
   else if (TREE_CODE (id) == BIT_NOT_EXPR)
@@ -5034,10 +5034,10 @@  cp_parser_primary_expression (cp_parser
 	  {
 	    expr = cp_parser_fold_expression (parser, expr);
 	    if (expr != error_mark_node
-		&& cxx_dialect < cxx1z
+		&& cxx_dialect < cxx17
 		&& !in_system_header_at (input_location))
 	      pedwarn (input_location, 0, "fold-expressions only available "
-		       "with -std=c++1z or -std=gnu++1z");
+		       "with -std=c++17 or -std=gnu++17");
 	  }
 	else
 	  /* Let the front end know that this expression was
@@ -10200,9 +10200,9 @@  cp_parser_lambda_introducer (cp_parser*
 	  && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_THIS))
 	{
 	  location_t loc = cp_lexer_peek_token (parser->lexer)->location;
-	  if (cxx_dialect < cxx1z)
+	  if (cxx_dialect < cxx17)
 	    pedwarn (loc, 0, "%<*this%> capture only available with "
-			     "-std=c++1z or -std=gnu++1z");
+			     "-std=c++17 or -std=gnu++17");
 	  cp_lexer_consume_token (parser->lexer);
 	  cp_lexer_consume_token (parser->lexer);
 	  add_capture (lambda_expr,
@@ -10474,12 +10474,12 @@  cp_parser_lambda_declarator_opt (cp_pars
 
     if (lambda_specs.locations[ds_constexpr])
       {
-	if (cxx_dialect >= cxx1z)
+	if (cxx_dialect >= cxx17)
 	  return_type_specs.locations[ds_constexpr]
 	    = lambda_specs.locations[ds_constexpr];
 	else
 	  error_at (lambda_specs.locations[ds_constexpr], "%<constexpr%> "
-		    "lambda only available with -std=c++1z or -std=gnu++1z");
+		    "lambda only available with -std=c++17 or -std=gnu++17");
       }
 
     p = obstack_alloc (&declarator_obstack, 0);
@@ -11284,9 +11284,9 @@  cp_parser_selection_statement (cp_parser
 	  {
 	    cx = true;
 	    cp_token *tok = cp_lexer_consume_token (parser->lexer);
-	    if (cxx_dialect < cxx1z && !in_system_header_at (tok->location))
+	    if (cxx_dialect < cxx17 && !in_system_header_at (tok->location))
 	      pedwarn (tok->location, 0, "%<if constexpr%> only available "
-		       "with -std=c++1z or -std=gnu++1z");
+		       "with -std=c++17 or -std=gnu++17");
 	  }
 
 	/* Look for the `('.  */
@@ -11310,10 +11310,10 @@  cp_parser_selection_statement (cp_parser
 	if (cp_parser_init_statement_p (parser))
 	  {
 	    tree decl;
-	    if (cxx_dialect < cxx1z)
+	    if (cxx_dialect < cxx17)
 	      pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0,
 		       "init-statement in selection statements only available "
-		       "with -std=c++1z or -std=gnu++1z");
+		       "with -std=c++17 or -std=gnu++17");
 	    cp_parser_init_statement (parser, &decl);
 	  }
 
@@ -11884,7 +11884,7 @@  cp_convert_range_for (tree statement, tr
 		  /*is_constant_init*/false, NULL_TREE,
 		  LOOKUP_ONLYCONVERTING);
 
-  if (cxx_dialect >= cxx1z)
+  if (cxx_dialect >= cxx17)
     iter_type = cv_unqualified (TREE_TYPE (end_expr));
   end = build_decl (input_location, VAR_DECL,
 		    get_identifier ("__for_end"), iter_type);
@@ -12024,7 +12024,7 @@  cp_parser_perform_range_for_lookup (tree
 	     be the same, as required by the multiple auto declaration.  */
 	  if (!same_type_p (iter_type, cv_unqualified (TREE_TYPE (*end))))
 	    {
-	      if (cxx_dialect >= cxx1z
+	      if (cxx_dialect >= cxx17
 		  && (build_x_binary_op (input_location, NE_EXPR,
 					 *begin, ERROR_MARK,
 					 *end, ERROR_MARK,
@@ -13178,9 +13178,9 @@  cp_parser_decomposition_declaration (cp_
 	}
     }
 
-  if (cxx_dialect < cxx1z)
+  if (cxx_dialect < cxx17)
     pedwarn (loc, 0, "structured bindings only available with "
-		     "-std=c++1z or -std=gnu++1z");
+		     "-std=c++17 or -std=gnu++17");
 
   tree pushed_scope;
   cp_declarator *declarator = make_declarator (cdk_decomp);
@@ -13771,7 +13771,7 @@  cp_parser_linkage_specification (cp_pars
 
    static_assert-declaration:
      static_assert ( constant-expression , string-literal ) ; 
-     static_assert ( constant-expression ) ; (C++1Z)
+     static_assert ( constant-expression ) ; (C++17)
 
    If MEMBER_P, this static_assert is a class member.  */
 
@@ -13812,10 +13812,10 @@  cp_parser_static_assert(cp_parser *parse
 
   if (cp_lexer_peek_token (parser->lexer)->type == CPP_CLOSE_PAREN)
     {
-      if (cxx_dialect < cxx1z)
+      if (cxx_dialect < cxx17)
 	pedwarn (input_location, OPT_Wpedantic,
 		 "static_assert without a message "
-		 "only available with -std=c++1z or -std=gnu++1z");
+		 "only available with -std=c++17 or -std=gnu++17");
       /* Eat the ')'  */
       cp_lexer_consume_token (parser->lexer);
       message = build_string (1, "");
@@ -17040,7 +17040,7 @@  cp_parser_simple_type_specifier (cp_pars
 
       /* Don't gobble tokens or issue error messages if this is an
 	 optional type-specifier.  */
-      if ((flags & CP_PARSER_FLAGS_OPTIONAL) || cxx_dialect >= cxx1z)
+      if ((flags & CP_PARSER_FLAGS_OPTIONAL) || cxx_dialect >= cxx17)
 	cp_parser_parse_tentatively (parser);
 
       token = cp_lexer_peek_token (parser->lexer);
@@ -17088,10 +17088,10 @@  cp_parser_simple_type_specifier (cp_pars
 	  && identifier_p (DECL_NAME (type)))
 	maybe_note_name_used_in_class (DECL_NAME (type), type);
       /* If it didn't work out, we don't have a TYPE.  */
-      if (((flags & CP_PARSER_FLAGS_OPTIONAL) || cxx_dialect >= cxx1z)
+      if (((flags & CP_PARSER_FLAGS_OPTIONAL) || cxx_dialect >= cxx17)
 	  && !cp_parser_parse_definitely (parser))
 	type = NULL_TREE;
-      if (!type && cxx_dialect >= cxx1z)
+      if (!type && cxx_dialect >= cxx17)
 	{
 	  if (flags & CP_PARSER_FLAGS_OPTIONAL)
 	    cp_parser_parse_tentatively (parser);
@@ -18425,10 +18425,10 @@  cp_parser_namespace_definition (cp_parse
       if (cp_lexer_next_token_is_not (parser->lexer, CPP_SCOPE))
 	break;
   
-      if (!nested_definition_count && cxx_dialect < cxx1z)
+      if (!nested_definition_count && cxx_dialect < cxx17)
         pedwarn (input_location, OPT_Wpedantic,
                  "nested namespace definitions only available with "
-                 "-std=c++1z or -std=gnu++1z");
+                 "-std=c++17 or -std=gnu++17");
 
       /* Nested namespace names can create new namespaces (unlike
 	 other qualified-ids).  */
@@ -18657,11 +18657,11 @@  cp_parser_using_declaration (cp_parser*
   else if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS))
     {
       cp_token *ell = cp_lexer_consume_token (parser->lexer);
-      if (cxx_dialect < cxx1z
+      if (cxx_dialect < cxx17
 	  && !in_system_header_at (ell->location))
 	pedwarn (ell->location, 0,
 		 "pack expansion in using-declaration only available "
-		 "with -std=c++1z or -std=gnu++1z");
+		 "with -std=c++17 or -std=gnu++17");
       qscope = make_pack_expansion (qscope);
     }
 
@@ -18720,10 +18720,10 @@  cp_parser_using_declaration (cp_parser*
       && cp_lexer_next_token_is (parser->lexer, CPP_COMMA))
     {
       cp_token *comma = cp_lexer_consume_token (parser->lexer);
-      if (cxx_dialect < cxx1z)
+      if (cxx_dialect < cxx17)
 	pedwarn (comma->location, 0,
 		 "comma-separated list in using-declaration only available "
-		 "with -std=c++1z or -std=gnu++1z");
+		 "with -std=c++17 or -std=gnu++17");
       goto again;
     }
 
@@ -19317,7 +19317,7 @@  cp_parser_init_declarator (cp_parser* pa
       /* Handle C++17 deduction guides.  */
       if (!decl_specifiers->type
 	  && ctor_dtor_or_conv_p <= 0
-	  && cxx_dialect >= cxx1z)
+	  && cxx_dialect >= cxx17)
 	{
 	  cp_declarator *id = get_id_declarator (declarator);
 	  tree name = id->u.id.unqualified_name;
@@ -23085,12 +23085,12 @@  cp_parser_type_parameter_key (cp_parser*
   if ((tag_type = cp_parser_token_is_type_parameter_key (token)) != none_type)
     {
       cp_lexer_consume_token (parser->lexer);
-      if (pedantic && tag_type == typename_type && cxx_dialect < cxx1z)
+      if (pedantic && tag_type == typename_type && cxx_dialect < cxx17)
 	/* typename is not allowed in a template template parameter
-	   by the standard until C++1Z.  */
+	   by the standard until C++17.  */
 	pedwarn (token->location, OPT_Wpedantic, 
 		 "ISO C++ forbids typename key in template template parameter;"
-		 " use -std=c++1z or -std=gnu++1z");
+		 " use -std=c++17 or -std=gnu++17");
     }
   else
     cp_parser_error (parser, "expected %<class%> or %<typename%>");
@@ -24122,9 +24122,9 @@  cp_parser_exception_specification_opt (c
       /* Restore the saved message.  */
       parser->type_definition_forbidden_message = saved_message;
 
-      if (cxx_dialect >= cxx1z)
+      if (cxx_dialect >= cxx17)
 	{
-	  error_at (loc, "ISO C++1z does not allow dynamic exception "
+	  error_at (loc, "ISO C++17 does not allow dynamic exception "
 			 "specifications");
 	  type_id_list = NULL_TREE;
 	}
@@ -24136,7 +24136,7 @@  cp_parser_exception_specification_opt (c
   /* In C++17, throw() is equivalent to noexcept (true).  throw()
      is deprecated in C++11 and above as well, but is still widely used,
      so don't warn about it yet.  */
-  else if (cxx_dialect >= cxx1z)
+  else if (cxx_dialect >= cxx17)
     type_id_list = noexcept_true_spec;
   else
     type_id_list = empty_except_spec;
@@ -25133,11 +25133,11 @@  cp_parser_std_attribute_spec (cp_parser
 	  if (attr_ns
 	      && cp_lexer_nth_token_is (parser->lexer, 3, CPP_COLON))
 	    {
-	      if (cxx_dialect < cxx1z
+	      if (cxx_dialect < cxx17
 		  && !in_system_header_at (input_location))
 		pedwarn (input_location, 0,
 			 "attribute using prefix only available "
-			 "with -std=c++1z or -std=gnu++1z");
+			 "with -std=c++17 or -std=gnu++17");
 
 	      cp_lexer_consume_token (parser->lexer);
 	      cp_lexer_consume_token (parser->lexer);
@@ -26197,7 +26197,7 @@  cp_parser_constructor_declarator_p (cp_p
      nested-name-specifier.  Except in C++17 mode, where we
      might be declaring a guiding declaration.  */
   if (!nested_name_specifier && outside_class_specifier_p
-      && cxx_dialect < cxx1z)
+      && cxx_dialect < cxx17)
     constructor_p = false;
   else if (nested_name_specifier == error_mark_node)
     constructor_p = false;
@@ -26228,7 +26228,7 @@  cp_parser_constructor_declarator_p (cp_p
 	   };
 
 	 we must recognize that the nested `S' names a class.  */
-      if (cxx_dialect >= cxx1z)
+      if (cxx_dialect >= cxx17)
 	cp_parser_parse_tentatively (parser);
 
       tree type_decl;
@@ -26240,7 +26240,7 @@  cp_parser_constructor_declarator_p (cp_p
 					/*class_head_p=*/false,
 					/*is_declaration=*/false);
 
-      if (cxx_dialect >= cxx1z
+      if (cxx_dialect >= cxx17
 	  && !cp_parser_parse_definitely (parser))
 	{
 	  type_decl = NULL_TREE;
--- libcpp/include/cpplib.h.jj	2017-06-07 10:45:54.000000000 +0200
+++ libcpp/include/cpplib.h	2017-09-14 19:07:47.366905817 +0200
@@ -171,7 +171,7 @@  enum cpp_ttype
 enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11,
 	     CLK_STDC89, CLK_STDC94, CLK_STDC99, CLK_STDC11,
 	     CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11,
-	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX1Z, CLK_CXX1Z, CLK_ASM};
+	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX17, CLK_CXX17, CLK_ASM};
 
 /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
 struct GTY(()) cpp_string {
--- libcpp/init.c.jj	2017-03-19 11:57:30.000000000 +0100
+++ libcpp/init.c	2017-09-14 19:07:31.965089845 +0200
@@ -108,8 +108,8 @@  static const struct lang_flags lang_defa
   /* CXX11    */  { 1,  1,  0,  1,  1,  1,  1,   1,   1,   1,    0,     0,     1,   0 },
   /* GNUCXX14 */  { 1,  1,  1,  1,  1,  0,  1,   1,   1,   1,    1,     1,     0,   0 },
   /* CXX14    */  { 1,  1,  0,  1,  1,  1,  1,   1,   1,   1,    1,     1,     1,   0 },
-  /* GNUCXX1Z */  { 1,  1,  1,  1,  1,  0,  1,   1,   1,   1,    1,     1,     0,   1 },
-  /* CXX1Z    */  { 1,  1,  1,  1,  1,  1,  1,   1,   1,   1,    1,     1,     0,   1 },
+  /* GNUCXX17 */  { 1,  1,  1,  1,  1,  0,  1,   1,   1,   1,    1,     1,     0,   1 },
+  /* CXX17    */  { 1,  1,  1,  1,  1,  1,  1,   1,   1,   1,    1,     1,     0,   1 },
   /* ASM      */  { 0,  0,  1,  0,  0,  0,  0,   0,   0,   0,    0,     0,     0,   0 }
 };
 
@@ -497,8 +497,8 @@  cpp_init_builtins (cpp_reader *pfile, in
 
   if (CPP_OPTION (pfile, cplusplus))
     {
-      if (CPP_OPTION (pfile, lang) == CLK_CXX1Z
-	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Z)
+      if (CPP_OPTION (pfile, lang) == CLK_CXX17
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX17)
 	_cpp_define_builtin (pfile, "__cplusplus 201703L");
       else if (CPP_OPTION (pfile, lang) == CLK_CXX14
 	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX14)
--- libcpp/expr.c.jj	2017-01-01 12:45:50.000000000 +0100
+++ libcpp/expr.c	2017-09-14 21:55:06.054810675 +0200
@@ -636,7 +636,7 @@  cpp_classify_number (cpp_reader *pfile,
 	{
 	  if (CPP_OPTION (pfile, cplusplus))
 	    cpp_error_with_line (pfile, CPP_DL_PEDWARN, virtual_location, 0,
-				 "use of C++1z hexadecimal floating constant");
+				 "use of C++17 hexadecimal floating constant");
 	  else
 	    cpp_error_with_line (pfile, CPP_DL_PEDWARN, virtual_location, 0,
 				 "use of C99 hexadecimal floating constant");
--- gcc/testsuite/lib/g++-dg.exp.jj	2017-01-01 12:45:50.000000000 +0100
+++ gcc/testsuite/lib/g++-dg.exp	2017-09-14 19:18:42.995018937 +0200
@@ -56,8 +56,8 @@  proc g++-dg-runtest { testcases flags de
 	    }
 	    set option_list { }
 	    foreach x $std_list {
-		# Handle "concepts" as C++1z plus Concepts TS.
-		if { $x eq "concepts" } then { set x "1z -fconcepts" }
+		# Handle "concepts" as C++17 plus Concepts TS.
+		if { $x eq "concepts" } then { set x "17 -fconcepts" }
 		lappend option_list "${std_prefix}$x"
 	    }
 	} else {
--- gcc/testsuite/lib/target-supports.exp.jj	2017-09-13 16:22:19.000000000 +0200
+++ gcc/testsuite/lib/target-supports.exp	2017-09-14 19:19:47.486242133 +0200
@@ -7827,13 +7827,13 @@  proc check_effective_target_c++14 { } {
     if [check_effective_target_c++14_only] {
 	return 1
     }
-    return [check_effective_target_c++1z]
+    return [check_effective_target_c++17]
 }
 proc check_effective_target_c++14_down { } {
     if ![check_effective_target_c++] {
 	return 0
     }
-    return [expr ![check_effective_target_c++1z] ]
+    return [expr ![check_effective_target_c++17] ]
 }
 
 proc check_effective_target_c++98_only { } {
@@ -7850,7 +7850,7 @@  proc check_effective_target_c++98_only {
     return 0
 }
 
-proc check_effective_target_c++1z_only { } {
+proc check_effective_target_c++17_only { } {
     global cxx_default
     if ![check_effective_target_c++] {
 	return 0
@@ -7863,8 +7863,8 @@  proc check_effective_target_c++1z_only {
     }
     return 0
 }
-proc check_effective_target_c++1z { } {
-    return [check_effective_target_c++1z_only]
+proc check_effective_target_c++17 { } {
+    return [check_effective_target_c++17_only]
 }
 
 # Check for C++ Concepts TS support, i.e. -fconcepts flag.
--- gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C.jj	2016-11-02 15:56:03.266555884 +0100
+++ gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C	2017-09-14 19:25:19.920237931 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-O -std=c++1z -g -dA -gno-strict-dwarf" }
+// { dg-options "-O -std=c++17 -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* } } }
--- gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C.jj	2017-02-22 22:33:13.464219733 +0100
+++ gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C	2017-09-14 19:25:19.916237979 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-O -std=c++1z -gdwarf-5 -dA -gno-strict-dwarf" }
+// { dg-options "-O -std=c++17 -gdwarf-5 -dA -gno-strict-dwarf" }
 // { dg-require-weak "" }
 // { dg-final { scan-assembler-not "DW_TAG_member" { xfail *-*-aix* } } }
 
--- gcc/testsuite/g++.dg/template/partial5.C.jj	2017-06-19 08:28:00.884279319 +0200
+++ gcc/testsuite/g++.dg/template/partial5.C	2017-09-14 19:25:20.326233040 +0200
@@ -14,7 +14,7 @@  template<typename T, typename T::foo V>
 struct Y { };
 
 template<typename T, typename U, U v>
-struct Y<T, v> { }; // { dg-error "" "" { target { ! c++1z } } }
+struct Y<T, v> { }; // { dg-error "" "" { target { ! c++17 } } }
 
 
 template<typename T, T V>
--- gcc/testsuite/g++.dg/template/nontype8.C.jj	2015-12-07 12:17:55.614670388 +0100
+++ gcc/testsuite/g++.dg/template/nontype8.C	2017-09-14 19:25:20.344232823 +0200
@@ -8,6 +8,6 @@  struct S { int m; static int s; } s;
 
 X<&a[2]> x3;                    // { dg-error "" } address of array element
 X<&s.m> x4;                     // { dg-error "" } address of non-static member
-X<&s.s> x5;                     // { dg-error "" "" { target { ! c++1z } } } &S::s must be used
+X<&s.s> x5;                     // { dg-error "" "" { target { ! c++17 } } } &S::s must be used
 X<&S::s> x6;                    // OK: address of static member
 
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C.jj	2016-11-09 15:22:33.911455208 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C	2017-09-14 19:25:21.016224729 +0200
@@ -1,5 +1,5 @@ 
 // Test for composite pointer type.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 typedef void (*P)();
 typedef void (*NP)() noexcept;
--- gcc/testsuite/g++.dg/cpp1z/nontype3a.C.jj	2015-10-29 09:14:38.006570123 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype3a.C	2017-09-14 19:25:20.820227090 +0200
@@ -1,4 +1,4 @@ 
-// This macro should not be defined without -std=c++1z.
+// This macro should not be defined without -std=c++17.
 
 #ifdef __cpp_nontype_template_args
 #error __cpp_nontype_template_args defined
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C.jj	2016-08-09 09:22:27.208057768 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C	2017-09-14 19:25:20.697228572 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 auto ID = [] (int n) constexpr { return n; };
 constexpr int I = ID(3);
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C.jj	2017-06-19 08:27:56.598333857 +0200
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C	2017-09-14 19:25:20.477231221 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/80614
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <typename T> void fn() {}
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction32.C.jj	2017-03-01 09:31:47.518094134 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction32.C	2017-09-14 19:25:20.524230655 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <initializer_list>
 
--- gcc/testsuite/g++.dg/cpp1z/pr78771.C.jj	2017-01-30 09:31:45.845558932 +0100
+++ gcc/testsuite/g++.dg/cpp1z/pr78771.C	2017-09-14 19:25:21.090223838 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/78771
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 // ICE instantiating a deleted inherited ctor
 
--- gcc/testsuite/g++.dg/cpp1z/elide1.C.jj	2016-10-31 13:28:10.692387845 +0100
+++ gcc/testsuite/g++.dg/cpp1z/elide1.C	2017-09-14 19:25:21.084223910 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct A
 {
--- gcc/testsuite/g++.dg/cpp1z/fold3.C.jj	2016-03-09 10:19:08.525762444 +0100
+++ gcc/testsuite/g++.dg/cpp1z/fold3.C	2017-09-14 19:25:20.586229909 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 // Check that empty expansions and required failures.
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction2.C.jj	2016-10-05 17:01:31.341639990 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction2.C	2017-09-14 19:25:21.097223754 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C.jj	2016-11-09 15:22:33.909455233 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C	2017-09-14 19:25:20.952225500 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class R, class... A, bool B>
 void f(R (*)(A...) noexcept(B)) { }
--- gcc/testsuite/g++.dg/cpp1z/inline-var2.C.jj	2016-10-31 13:28:10.739387250 +0100
+++ gcc/testsuite/g++.dg/cpp1z/inline-var2.C	2017-09-14 19:25:21.081223946 +0200
@@ -18,9 +18,9 @@  struct S
   static inline double var9 = 3.0;		// { dg-warning "inline variables are only available with" "" { target c++14_down } }
   static constexpr inline int var11 = 11;	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
 };
-const int S::var3;				// { dg-warning "redundant redeclaration of" "" { target c++1z } }
+const int S::var3;				// { dg-warning "redundant redeclaration of" "" { target c++17 } }
 const int S::var3;				// { dg-error "redefinition of" "" { target c++14_down } }
-extern int foo (int);				// { dg-warning "redundant redeclaration of" "" { target c++1z } .-1 }
+extern int foo (int);				// { dg-warning "redundant redeclaration of" "" { target c++17 } .-1 }
 extern int bar (int);
 struct T { T () { t = foo (3); } T (int x) { t = foo (x); } int t; };
 inline int var12 = foo (0);			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
@@ -111,7 +111,7 @@  double Z<N>::var41;				// { dg-error "re
 template <int N>
 double const Z<N>::var42;			// { dg-error "redefinition of" }
 template <int N>
-const int Z<N>::var43;				// { dg-warning "redundant redeclaration of" "" { target c++1z } }
-template <int N>				// { dg-warning "redundant redeclaration of" "" { target c++1z } .+1 }
+const int Z<N>::var43;				// { dg-warning "redundant redeclaration of" "" { target c++17 } }
+template <int N>				// { dg-warning "redundant redeclaration of" "" { target c++17 } .+1 }
 const int Z<N>::var43;				// { dg-error "redefinition of" "" { target c++14_down } }
 Z<0> z;
--- gcc/testsuite/g++.dg/cpp1z/eval-order2.C.jj	2016-06-15 09:17:22.654339799 +0200
+++ gcc/testsuite/g++.dg/cpp1z/eval-order2.C	2017-09-14 19:25:20.769227704 +0200
@@ -1,6 +1,6 @@ 
 // P0145R2: Refining Expression Order for C++
 // { dg-do run }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
--- gcc/testsuite/g++.dg/cpp1z/decomp21.C.jj	2017-07-04 09:37:55.073651222 +0200
+++ gcc/testsuite/g++.dg/cpp1z/decomp21.C	2017-09-14 19:25:21.065224139 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 int a[3];
 struct S { int b, c, d; } s;
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C.jj	2016-08-09 09:22:27.211057731 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C	2017-09-14 19:25:20.651229126 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0170R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 // 'v' & 'm' are odr-used but do not occur in a constant-expression within the nested
 // lambda, so are well-formed.
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C.jj	2016-08-09 09:22:27.210057743 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C	2017-09-14 19:25:21.012224777 +0200
@@ -1,4 +1,4 @@ 
 // Testcase from P0170R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 static_assert([](int n) { return [&n] { return ++n; }(); }(3) == 4);
--- gcc/testsuite/g++.dg/cpp1z/utf8-neg.C.jj	2015-06-30 16:40:42.518029299 +0200
+++ gcc/testsuite/g++.dg/cpp1z/utf8-neg.C	2017-09-14 19:25:20.550230342 +0200
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-std=c++1z" } */
+/* { dg-options "-std=c++17" } */
 
 const static char c0 = u8'';		// { dg-error "empty character" }
 const static char c1 = u8'ab';  	// { dg-warning "multi-character character constant" }
--- gcc/testsuite/g++.dg/cpp1z/class-deduction41.C.jj	2017-07-13 15:37:46.983944346 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction41.C	2017-09-14 19:25:21.107223633 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <initializer_list>
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction23.C.jj	2016-11-09 23:55:14.455237771 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction23.C	2017-09-14 19:25:20.542230439 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/nodiscard3.C.jj	2016-04-28 21:03:08.267348616 +0200
+++ gcc/testsuite/g++.dg/cpp1z/nodiscard3.C	2017-09-14 19:25:20.837226885 +0200
@@ -1,6 +1,6 @@ 
 /* nodiscard attribute tests, adapted from gcc.dg/attr-warn-unused-result.c.  */
 /* { dg-do compile } */
-/* { dg-options "-std=c++1z -O -ftrack-macro-expansion=0" } */
+/* { dg-options "-std=c++17 -O -ftrack-macro-expansion=0" } */
 
 #define WUR [[nodiscard]]
 #define WURAI [[nodiscard, gnu::always_inline]] inline
--- gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C.jj	2015-08-24 18:27:05.020415471 +0200
+++ gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C	2017-09-14 19:25:20.455231486 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 template<typename T>
   struct is_float
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C.jj	2016-11-09 15:22:33.911455208 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C	2017-09-14 19:25:21.134223308 +0200
@@ -1,5 +1,5 @@ 
 // Test for PMF template args.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // { dg-do compile }
 
 struct A
--- gcc/testsuite/g++.dg/cpp1z/class-deduction21.C.jj	2016-11-09 23:55:14.456237758 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction21.C	2017-09-14 19:25:20.916225934 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<class T, class D = int>
 struct S { T t; };
--- gcc/testsuite/g++.dg/cpp1z/range-for1.C.jj	2016-03-16 07:57:18.211031381 +0100
+++ gcc/testsuite/g++.dg/cpp1z/range-for1.C	2017-09-14 19:25:20.808227235 +0200
@@ -1,5 +1,5 @@ 
 // P0184R0: Generalizing the Range-Based For Loop
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 struct A {
   int ar[4];
--- gcc/testsuite/g++.dg/cpp1z/init-statement4.C.jj	2016-10-06 00:21:28.999978138 +0200
+++ gcc/testsuite/g++.dg/cpp1z/init-statement4.C	2017-09-14 19:25:20.579229993 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 extern int foo (void);
 extern void bar (int), die (void);
--- gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.C.jj	2015-06-30 16:40:42.517029314 +0200
+++ gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.C	2017-09-14 19:25:20.880226367 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 constexpr int
 operator""_foo(char c)
--- gcc/testsuite/g++.dg/cpp1z/decomp30.C.jj	2017-07-04 09:37:55.073651222 +0200
+++ gcc/testsuite/g++.dg/cpp1z/decomp30.C	2017-09-14 19:25:20.967225319 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/81258
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 int a[2];
 auto [b, c] (a);
--- gcc/testsuite/g++.dg/cpp1z/class-deduction39.C.jj	2017-06-08 20:50:41.349627622 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction39.C	2017-09-14 19:25:20.736228102 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T> struct A { };
 
--- gcc/testsuite/g++.dg/cpp1z/register2.C.jj	2016-09-29 22:53:53.928231444 +0200
+++ gcc/testsuite/g++.dg/cpp1z/register2.C	2017-09-14 19:25:21.117223513 +0200
@@ -8,22 +8,22 @@ 
 #endif
 
 #ifdef REG1
-register int a __asm (REG1);	// { dg-bogus "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+register int a __asm (REG1);	// { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 #endif
-register int b;			// { dg-bogus "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+register int b;			// { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 register int c ();		// { dg-error "storage class 'register' invalid for function" }
-int foo (register int d)	// { dg-bogus "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+int foo (register int d)	// { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 {
   return d;
 }
 int bar ()
 {
 #ifdef REG2
-  register int e __asm (REG2);	// { dg-bogus "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+  register int e __asm (REG2);	// { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 #else
   int e;
 #endif
-  register int f;		// { dg-bogus "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+  register int f;		// { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
   e = 6;
   f = 7;
   return e + f;
--- gcc/testsuite/g++.dg/cpp1z/decomp9.C.jj	2016-11-14 08:52:27.855603153 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp9.C	2017-09-14 19:25:20.920225886 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #define assert(X) do { if (!(X)) __builtin_abort(); } while (0)
 
--- gcc/testsuite/g++.dg/cpp1z/regress1.C.jj	2015-08-24 18:27:05.021415457 +0200
+++ gcc/testsuite/g++.dg/cpp1z/regress1.C	2017-09-14 19:25:20.760227813 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67114
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 typedef unsigned uint32_t;
 class A {
--- gcc/testsuite/g++.dg/cpp1z/direct-enum-init1.C.jj	2017-09-01 09:26:20.236945793 +0200
+++ gcc/testsuite/g++.dg/cpp1z/direct-enum-init1.C	2017-09-14 19:25:20.774227644 +0200
@@ -22,41 +22,41 @@  foo ()
   C c1 { s };
   D d1 { D(t) };	// { dg-error "invalid cast from type 'T' to type 'D'" }
   D d2 { t };		// { dg-error "cannot convert 'T' to 'D' in initialization" "" { target c++14_down } }
-			// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++1z } .-1 }
+			// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++17 } .-1 }
   D d3 { 9 };		// { dg-error "cannot convert 'int' to 'D' in initialization" "" { target c++14_down } }
   D d4 { l };		// { dg-error "cannot convert 'long int' to 'D' in initialization" "" { target c++14_down } }
   D d5 { D(l) };
   D d6 { G };		// { dg-error "cannot convert 'A' to 'D' in initialization" "" { target c++14_down } }
   E e1 { 5 };		// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   E e2 { -1 };		// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++17 } .-1 }
   E e3 { 5.0 };		// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   E e4 { 5.2 };		// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   B b2 = { 7 };		// { dg-error "invalid conversion from 'int' to 'B'" }
   C c2 = { C { 8 } };	// { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
 
   D *d7 = new D { 9 };	// { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target c++14_down } }
   E *e5 = new E { -4 };	// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++17 } .-1 }
   bar ({ 10 });		// { dg-error "cannot convert \[^\n\r]* to 'E' for argument" }
   bar (E { 9 });	// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   V v1 = { { 11 } };	// { dg-error "braces around scalar initializer for type 'E'" }
   V v2 = { E { 12 } };	// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   V v3 = { E { 5.0 } };	// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   V v4 = { 13 };	// { dg-error "cannot convert 'int' to 'E' in initialization" }
   if (B b3 { 5 })	// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
     ;
   if (B b4 { 4.0 })	// { dg-error "cannot convert 'double' to 'B' in initialization" "" { target c++14_down } }
-    ;			// { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++1z } .-1 }
+    ;			// { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++17 } .-1 }
   C c3 { 8L };		// { dg-error "cannot convert 'long int' to 'C' in initialization" "" { target c++14_down } }
   B b4 {short (c + 5)};	// { dg-error "invalid conversion from 'short int' to 'B'" "" { target c++14_down } }
   B b5 {c + 5};		// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++17 } .-1 }
   C c4 { ll };		// { dg-error "cannot convert 'long long int' to 'C' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++17 } .-1 }
   C c5 {short (c + 5)};	// { dg-error "cannot convert 'short int' to 'C' in initialization" "" { target c++14_down } }
   C c6 {c + 5};		// { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
 }
@@ -65,7 +65,7 @@  struct U
 {
   U () : e { 5 } {}	// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
   U (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   U (float) : e({ 6 }) {}// { dg-error "list-initializer for non-class type must not be parenthesized" }
 			// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target *-*-* } .-1 }
   E e;
@@ -76,7 +76,7 @@  struct W
   A a { 5 };		// { dg-error "invalid conversion from 'int' to 'A'" }
   B b { 6 };		// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
   C c { 3.0f };		// { dg-error "cannot convert \[^\n\r]* to 'C' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++17 } .-1 }
   D d = { 7 };		// { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" }
 };
 
@@ -89,40 +89,40 @@  foo2 ()
   C c1 { s };
   D d1 { D(t) };	// { dg-error "invalid cast from type 'T' to type 'D'" }
   D d2 { t };		// { dg-error "cannot convert 'T' to 'D' in initialization" "" { target c++14_down } }
-			// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++1z } .-1 }
+			// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++17 } .-1 }
   D d3 { 9 };		// { dg-error "cannot convert 'int' to 'D' in initialization" "" { target c++14_down } }
   D d4 { l };		// { dg-error "cannot convert 'long int' to 'D' in initialization" "" { target c++14_down } }
   D d5 { D(l) };
   D d6 { G };		// { dg-error "cannot convert 'A' to 'D' in initialization" "" { target c++14_down } }
   E e1 { 5 };		// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   E e2 { -1 };		// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++17 } .-1 }
   E e3 { 5.0 };		// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   E e4 { 5.2 };		// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   B b2 = { 7 };		// { dg-error "invalid conversion from 'int' to 'B'" }
   C c2 = { C { 8 } };	// { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
   D *d7 = new D { 9 };	// { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target c++14_down } }
   E *e5 = new E { -4 };	// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++17 } .-1 }
   bar ({ 10 });		// { dg-error "cannot convert \[^\n\r]* to 'E' for argument" }
   bar (E { 9 });	// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   V v1 = { { 11 } };	// { dg-error "braces around scalar initializer for type 'E'" }
   V v2 = { E { 12 } };	// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   V v3 = { E { 5.0 } };	// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   V v4 = { 13 };	// { dg-error "cannot convert 'int' to 'E' in initialization" }
   if (B b3 { 5 })	// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
     ;
   if (B b4 { 4.0 })	// { dg-error "cannot convert 'double' to 'B' in initialization" "" { target c++14_down } }
-    ;			// { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++1z } .-1 }
+    ;			// { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++17 } .-1 }
   C c3 { 8L };		// { dg-error "cannot convert 'long int' to 'C' in initialization" "" { target c++14_down } }
   B b4 {short (c + 5)};	// { dg-error "invalid conversion from 'short int' to 'B'" "" { target c++14_down } }
   B b5 {c + 5};		// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++17 } .-1 }
   C c4 { ll };		// { dg-error "cannot convert 'long long int' to 'C' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++17 } .-1 }
   C c5 {short (c + 5)};	// { dg-error "cannot convert 'short int' to 'C' in initialization" "" { target c++14_down } }
   C c6 {c + 5};		// { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
 }
@@ -132,7 +132,7 @@  struct U2
 {
   U2 () : e { 5 } {}	// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
   U2 (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   U2 (float) : e({ 6 }) {}
   E e;
 };
@@ -143,7 +143,7 @@  struct W2
   A a { 5 };		// { dg-error "invalid conversion from 'int' to 'A'" "" { target *-*-* } }
   B b { 6 };		// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
   C c { 3.0f };		// { dg-error "cannot convert \[^\n\r]* to 'C' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++17 } .-1 }
   D d = { 7 };		// { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target *-*-* } }
 };
 
@@ -157,40 +157,40 @@  foo3 ()
   J c1 { s };
   K d1 { K(t) };	// { dg-error "invalid cast from type 'T' to type 'D'" }
   K d2 { t };		// { dg-error "cannot convert 'T' to 'D' in initialization" "" { target c++14_down } }
-			// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++1z } .-1 }
+			// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++17 } .-1 }
   K d3 { 9 };		// { dg-error "cannot convert 'int' to 'D' in initialization" "" { target c++14_down } }
   K d4 { l };		// { dg-error "cannot convert 'long int' to 'D' in initialization" "" { target c++14_down } }
   K d5 { K(l) };
   K d6 { G };		// { dg-error "cannot convert 'A' to 'D' in initialization" "" { target c++14_down } }
   L e1 { 5 };		// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   L e2 { -1 };		// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++17 } .-1 }
   L e3 { 5.0 };		// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   L e4 { 5.2 };		// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   I b2 = { 7 };		// { dg-error "invalid conversion from 'int' to 'B'" }
   J c2 = { J { 8 } };	// { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
   K *d7 = new K { 9 };	// { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target c++14_down } }
   L *e5 = new L { -4 };	// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++17 } .-1 }
   bar3 ({ 10 });	// { dg-error "cannot convert \[^\n\r]* to 'E' for argument" }
   bar3 (E { 9 });	// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   M v1 = { { 11 } };	// { dg-error "braces around scalar initializer for type 'E'" }
   M v2 = { L { 12 } };	// { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
   M v3 = { L { 5.0 } };	// { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   M v4 = { 13 };	// { dg-error "cannot convert 'int' to 'E' in initialization" }
   if (I b3 { 5 })	// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
     ;
   if (I b4 { 4.0 })	// { dg-error "cannot convert 'double' to 'B' in initialization" "" { target c++14_down } }
-    ;			// { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++1z } .-1 }
+    ;			// { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++17 } .-1 }
   J c3 { 8L };		// { dg-error "cannot convert 'long int' to 'C' in initialization" "" { target c++14_down } }
   I b4 {short (c + 5)};	// { dg-error "invalid conversion from 'short int' to 'B'" "" { target c++14_down } }
   I b5 {c + 5};		// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++17 } .-1 }
   J c4 { ll };		// { dg-error "cannot convert 'long long int' to 'C' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++17 } .-1 }
   J c5 {short (c + 5)};	// { dg-error "cannot convert 'short int' to 'C' in initialization" "" { target c++14_down } }
   J c6 {c + 5};		// { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
 }
@@ -200,7 +200,7 @@  struct U3
 {
   U3 () : e { 5 } {}	// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
   U3 (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++17 } .-1 }
   U3 (float) : e({ 6 }) {}
   L e;
 };
@@ -211,7 +211,7 @@  struct W3
   H a { 5 };		// { dg-error "invalid conversion from 'int' to 'A'" "" { target *-*-* } }
   I b { 6 };		// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
   J c { 3.0f };		// { dg-error "cannot convert \[^\n\r]* to 'C' in initialization" "" { target c++14_down } }
-			// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++1z } .-1 }
+			// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++17 } .-1 }
   K d = { 7 };		// { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target *-*-* } }
 };
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction30.C.jj	2017-03-01 09:31:47.499094396 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction30.C	2017-09-14 19:25:20.595229800 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T = void> struct A { };
 
--- gcc/testsuite/g++.dg/cpp1z/abbrev2.C.jj	2015-08-24 18:27:05.020415471 +0200
+++ gcc/testsuite/g++.dg/cpp1z/abbrev2.C	2017-09-14 19:25:20.860226608 +0200
@@ -1,6 +1,6 @@ 
 // PR c++/66197
 // { dg-do run }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 extern "C" void abort();
 
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto6.C.jj	2016-11-09 23:55:14.455237771 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto6.C	2017-09-14 19:25:20.412232004 +0200
@@ -4,5 +4,5 @@  template <int N> struct A;
 template <typename T, T N> int foo(A<N> *) = delete;
 void foo(void *);
 void bar(A<0> *p) {
-  foo(p);			// { dg-error "" "" { target c++1z } }
+  foo(p);			// { dg-error "" "" { target c++17 } }
 }
--- gcc/testsuite/g++.dg/cpp1z/regress2.C.jj	2015-08-24 18:27:05.022415443 +0200
+++ gcc/testsuite/g++.dg/cpp1z/regress2.C	2017-09-14 19:25:20.927225801 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67142
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 namespace detail {
 template <int> int split_at;
--- gcc/testsuite/g++.dg/cpp1z/decomp16.C.jj	2016-11-15 18:06:17.286482555 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp16.C	2017-09-14 19:25:20.719228307 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 struct A { bool a, b; };
 struct B { int a, b; };
--- gcc/testsuite/g++.dg/cpp1z/bool-increment1.C.jj	2016-09-14 23:49:00.739969131 +0200
+++ gcc/testsuite/g++.dg/cpp1z/bool-increment1.C	2017-09-14 19:25:20.570230101 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 int
 fn (bool b)
--- gcc/testsuite/g++.dg/cpp1z/aligned-new1.C.jj	2016-09-13 10:43:50.429765895 +0200
+++ gcc/testsuite/g++.dg/cpp1z/aligned-new1.C	2017-09-14 19:25:21.061224187 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // { dg-do run }
 
 #ifndef __STDCPP_DEFAULT_NEW_ALIGNMENT__
--- gcc/testsuite/g++.dg/cpp1z/decomp3.C.jj	2017-07-04 09:39:22.138588512 +0200
+++ gcc/testsuite/g++.dg/cpp1z/decomp3.C	2017-09-14 19:25:20.583229945 +0200
@@ -10,35 +10,35 @@  void
 test (A &b, B c)
 {
   int && [ d ] = c;			// { dg-error "structured binding declaration cannot have type 'int'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   char & [ e, f, ff ] { b };		// { dg-error "structured binding declaration cannot have type 'char'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
-  auto&[g,h,i]=b;			// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
+  auto&[g,h,i]=b;			// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } }
   decltype (auto) [ j ] = c;		// { dg-error "structured binding declaration cannot have type 'decltype.auto.'" "" { target c++14 } }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
 					// { dg-error "expected primary-expression before 'decltype'" "" { target c++11_down } .-2 }
   auto & & && & [ m, n, o ] = b;	// { dg-error "multiple ref-qualifiers" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   constexpr auto [ p ] = c;		// { dg-error "structured binding declaration cannot be 'constexpr'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   friend auto [ q ] = c;		// { dg-error "'friend' used outside of class" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   typedef auto [ r ] = c;		// { dg-error "structured binding declaration cannot be 'typedef'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   inline auto [ s ] = c;		// { dg-error "structured binding declaration cannot be 'inline'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   __restrict auto [ t ] = c;		// { dg-error "invalid use of 'restrict'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   long long auto [ u ] = c;		// { dg-error "'long long' invalid for 'structured binding'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   virtual auto [ v ] = c;		// { dg-error "'virtual' outside class declaration" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   explicit auto [ w ] = c;		// { dg-error "'explicit' outside class declaration" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   static auto [ x ] = c;		// { dg-error "structured binding declaration cannot be 'static'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   extern auto [ y ] { c };		// { dg-error "structured binding declaration cannot be 'extern'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
 }
 
 void
@@ -52,15 +52,15 @@  void
 test3 (A &b, B c)
 {
   auto [ d, e, f ] = arr;		// { dg-error "only 3 names provided while 'int .4.' decomposes into 4 elements" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   auto & [ g, h, i, j, k ] = arr;	// { dg-error "5 names provided while 'int .4.' decomposes into 4 elements" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   auto [ l, m ] = b;			// { dg-error "only 2 names provided while 'A' decomposes into 3 elements" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   auto & [ n, o, p, q ] = b;		// { dg-error "4 names provided while 'A' decomposes into 3 elements" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   auto [] { c };			// { dg-error "empty structured binding declaration" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   auto [ r, s ] = c;			// { dg-error "2 names provided while 'B' decomposes into 1 elements" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
 }
--- gcc/testsuite/g++.dg/cpp1z/register1.C.jj	2016-09-29 22:53:53.928231444 +0200
+++ gcc/testsuite/g++.dg/cpp1z/register1.C	2017-09-14 19:25:21.104223669 +0200
@@ -7,22 +7,22 @@ 
 #endif
 
 #ifdef REG1
-register int a __asm (REG1);	// { dg-bogus "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+register int a __asm (REG1);	// { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 #endif
-register int b;			// { dg-error "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+register int b;			// { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 register int c ();		// { dg-error "storage class 'register' invalid for function" }
-int foo (register int d)	// { dg-error "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+int foo (register int d)	// { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 {
   return d;
 }
 int bar ()
 {
 #ifdef REG2
-  register int e __asm (REG2);	// { dg-bogus "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+  register int e __asm (REG2);	// { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 #else
   int e;
 #endif
-  register int f;		// { dg-error "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+  register int f;		// { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
   e = 6;
   f = 7;
   return e + f;
--- gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C.jj	2015-10-11 19:11:09.732830967 +0200
+++ gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C	2017-09-14 19:25:20.496230993 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 namespace A __attribute ((visibility ("default"))) {}
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction1.C.jj	2016-10-05 17:01:31.343639964 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction1.C	2017-09-14 19:25:20.647229174 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/decomp10.C.jj	2016-12-15 21:40:45.119719753 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp10.C	2017-09-14 19:25:21.124223428 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 namespace std {
   template<typename T> struct tuple_size;
--- gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C.jj	2017-01-08 17:41:17.697190558 +0100
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C	2017-09-14 19:25:20.492231041 +0200
@@ -1,6 +1,6 @@ 
 // Test that discarded statements differ from unevaluated operands in some
 // ways.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct A { int i; };
 
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C.jj	2016-08-09 09:22:27.211057731 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C	2017-09-14 19:25:20.538230487 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0170R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 void g() {
   const int n = 0;
--- gcc/testsuite/g++.dg/cpp1z/decomp27.C.jj	2017-03-21 07:56:59.231188159 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp27.C	2017-09-14 19:25:20.546230390 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/80084
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // { dg-do run }
 
 struct A
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C.jj	2016-11-09 15:22:33.908455246 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C	2017-09-14 19:25:20.611229607 +0200
@@ -1,5 +1,5 @@ 
 // Test for function pointer conversion on template arguments.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <void (*P)()> struct A { };
 
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C.jj	2016-08-12 11:12:46.212483569 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C	2017-09-14 19:25:20.962225380 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0170R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 auto monoid = [](auto v) { return [=] { return v; }; };
 auto add = [](auto m1) constexpr {
--- gcc/testsuite/g++.dg/cpp1z/class-deduction9.C.jj	2017-02-09 23:01:47.742650630 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction9.C	2017-09-14 19:25:20.756227861 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 namespace N {
   template <class T>
--- gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C.jj	2015-10-29 09:14:38.008570094 +0100
+++ gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C	2017-09-14 19:25:21.024224633 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 #ifndef __cpp_enumerator_attributes
 #error __cpp_enumerator_attributes not defined
--- gcc/testsuite/g++.dg/cpp1z/decomp11.C.jj	2016-11-15 09:57:00.127076378 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp11.C	2017-09-14 19:25:20.574230053 +0200
@@ -1,5 +1,5 @@ 
 // Test for decltype of direct decomposition.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class,class> struct same_type;
 template <class T> struct same_type<T,T> {};
--- gcc/testsuite/g++.dg/cpp1z/aligned-new3.C.jj	2017-01-26 20:35:12.383519094 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aligned-new3.C	2017-09-14 19:25:20.689228668 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // { dg-do run }
 
 #include <new>
--- gcc/testsuite/g++.dg/cpp1z/utf8-2.C.jj	2015-10-29 09:14:38.006570123 +0100
+++ gcc/testsuite/g++.dg/cpp1z/utf8-2.C	2017-09-14 19:25:20.740228054 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 #ifndef __cpp_unicode_characters
 #error __cpp_unicode_characters not defined
--- gcc/testsuite/g++.dg/cpp1z/lambda-this3.C.jj	2017-06-12 12:41:53.248366112 +0200
+++ gcc/testsuite/g++.dg/cpp1z/lambda-this3.C	2017-09-14 19:25:21.036224488 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct S {
   int i;
--- gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C.jj	2016-11-15 09:57:00.127076378 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C	2017-09-14 19:25:20.752227909 +0200
@@ -1,5 +1,5 @@ 
 // Test for reference address comparison in constant expression.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 int i[2];
 struct A { int i, j; } a;
--- gcc/testsuite/g++.dg/cpp1z/byte1.C.jj	2017-03-19 11:57:14.005984243 +0100
+++ gcc/testsuite/g++.dg/cpp1z/byte1.C	2017-09-14 19:25:20.664228969 +0200
@@ -1,5 +1,5 @@ 
 // Test for std::byte aliasing properties.
-// { dg-options "-std=c++1z -O3" }
+// { dg-options "-std=c++17 -O3" }
 
 #include <cstddef>
 
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C.jj	2017-02-18 14:12:35.625943935 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C	2017-09-14 19:25:21.069224091 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/79556
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <auto> struct A;
 template <auto...> struct B;
--- gcc/testsuite/g++.dg/cpp1z/aggr-base4.C.jj	2016-10-31 13:28:10.718387516 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aggr-base4.C	2017-09-14 19:25:20.701228523 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // { dg-do run }
 
 struct derived;
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C.jj	2016-08-09 09:22:27.207057780 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C	2017-09-14 19:25:20.975225223 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 constexpr auto Add5 = [](int i) { return i+5; };
 
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C.jj	2016-11-09 23:55:14.456237758 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C	2017-09-14 19:25:20.667228933 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0127R2
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<auto n> struct B { decltype(n) f = n; };
 B<5> b1;   // OK: template parameter type is int
--- gcc/testsuite/g++.dg/cpp1z/utf8-2a.C.jj	2015-10-29 09:14:38.008570094 +0100
+++ gcc/testsuite/g++.dg/cpp1z/utf8-2a.C	2017-09-14 19:25:21.008224826 +0200
@@ -1,4 +1,4 @@ 
-// This macro should not be 201411 without -std=c++1z.
+// This macro should not be 201411 without -std=c++17.
 
 #if __cpp_unicode_characters == 201411
 #error Wrong value for __cpp_unicode_characters
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C.jj	2016-08-09 09:22:27.209057755 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C	2017-09-14 19:25:20.599229752 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0170R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 auto ID = [](auto a) { return a; };
 static_assert( ID (3) == 3); // OK
--- gcc/testsuite/g++.dg/cpp1z/aggr-base6.C.jj	2016-10-31 13:28:10.691387858 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aggr-base6.C	2017-09-14 19:25:21.043224404 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -w" }
+// { dg-options "-std=c++17 -w" }
 // { dg-do run }
 
 struct A { };
--- gcc/testsuite/g++.dg/cpp1z/cplusplus.C.jj	2014-09-01 09:43:37.951747123 +0200
+++ gcc/testsuite/g++.dg/cpp1z/cplusplus.C	2017-09-14 19:25:20.615229559 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 #if __cplusplus <= 201402L
 #error "__cplusplus <= 201402L"
--- gcc/testsuite/g++.dg/cpp1z/class-deduction20.C.jj	2016-10-31 13:28:10.718387516 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction20.C	2017-09-14 19:25:21.110223597 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/77890
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<class F> struct S{S(F&&f){}}; 
 void f()
--- gcc/testsuite/g++.dg/cpp1z/aggr-base2.C.jj	2016-10-31 13:28:10.683387959 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aggr-base2.C	2017-09-14 19:25:20.676228825 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct derived;
 struct base {
@@ -8,5 +8,5 @@  private:
 };
 struct derived : base {};
 
-derived d1{};			// { dg-error "" "" { target c++1z } }
+derived d1{};			// { dg-error "" "" { target c++17 } }
 derived d2;			// still OK
--- gcc/testsuite/g++.dg/cpp1z/class-deduction6.C.jj	2016-10-05 17:01:31.342639977 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction6.C	2017-09-14 19:25:20.979225175 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C.jj	2016-11-09 15:22:33.909455233 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C	2017-09-14 19:25:20.908226030 +0200
@@ -1,5 +1,5 @@ 
 // Test for overload resolution.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 void f(void (*)() noexcept) = delete;
 void f(void (*)()) { }
--- gcc/testsuite/g++.dg/cpp1z/class-deduction31.C.jj	2017-03-01 09:31:47.518094134 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction31.C	2017-09-14 19:25:20.626229427 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T> struct A {
   A(T); // #1
--- gcc/testsuite/g++.dg/cpp1z/class-deduction25.C.jj	2017-03-01 09:31:47.518094134 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction25.C	2017-09-14 19:25:21.093223802 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0512R0 for C++17 NB comment US 19
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<typename> struct remove_ref;
 template<typename _Tp> struct remove_ref { typedef _Tp type; };
--- gcc/testsuite/g++.dg/cpp1z/class-deduction18.C.jj	2016-10-05 21:02:19.991460728 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction18.C	2017-09-14 19:25:20.630229379 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<class T> struct S{S(T){}};
 
--- gcc/testsuite/g++.dg/cpp1z/fold9.C.jj	2017-02-10 21:35:29.227880948 +0100
+++ gcc/testsuite/g++.dg/cpp1z/fold9.C	2017-09-14 19:25:20.955225464 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/71285
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<typename... Args>
 void spurious(Args... args)
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C.jj	2016-11-09 15:22:33.910455221 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C	2017-09-14 19:25:20.693228620 +0200
@@ -1,5 +1,5 @@ 
 // Test for exception handling.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // { dg-do run }
 
 void f() {}
--- gcc/testsuite/g++.dg/cpp1z/abbrev1.C.jj	2015-08-24 18:27:05.020415471 +0200
+++ gcc/testsuite/g++.dg/cpp1z/abbrev1.C	2017-09-14 19:25:20.566230149 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/64969
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 auto f1(auto x) { return *x; }
 decltype(auto) f2(auto x) { return *x; }
--- gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C.jj	2017-01-09 17:23:55.054017195 +0100
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C	2017-09-14 19:25:20.924225837 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/78948
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <int T>
 void sizeof_mismatch()
--- gcc/testsuite/g++.dg/cpp1z/utf8.C.jj	2015-06-30 16:40:42.518029299 +0200
+++ gcc/testsuite/g++.dg/cpp1z/utf8.C	2017-09-14 19:25:20.892226223 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 #include <cassert>
 #include <experimental/type_traits>
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C.jj	2016-11-09 15:22:33.910455221 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C	2017-09-14 19:25:20.803227295 +0200
@@ -1,5 +1,5 @@ 
 // Test for static_cast.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 void f()
 {
--- gcc/testsuite/g++.dg/cpp1z/aggr-base3.C.jj	2016-10-31 13:28:10.692387845 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aggr-base3.C	2017-09-14 19:25:20.723228258 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct derived;
 struct base { };
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C.jj	2017-04-19 15:46:48.953687834 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C	2017-09-14 19:25:21.047224356 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0170R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 auto Fwd = [](int (*fp)(int), auto a) { return fp(a); };
 auto C = [](auto a) { return a; };
--- gcc/testsuite/g++.dg/cpp1z/init-statement2.C.jj	2016-10-06 00:21:28.999978138 +0200
+++ gcc/testsuite/g++.dg/cpp1z/init-statement2.C	2017-09-14 19:25:20.482231161 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // Test C++17 selection statements with initializer, basic use.
 
 extern int foo (void);
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C.jj	2016-11-09 23:55:14.456237758 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C	2017-09-14 19:25:20.562230198 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T, T n> void f(T, int (&)[n]);
 template <class T, T n> void g(int (&)[n], T);
--- gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C.jj	2017-06-20 08:48:37.358880502 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C	2017-09-14 19:25:20.381232378 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/80562
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct T {
   constexpr auto foo() { return false; }
--- gcc/testsuite/g++.dg/cpp1z/class-deduction40.C.jj	2017-06-30 09:49:18.740775733 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction40.C	2017-09-14 19:25:21.040224440 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/81180
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template < int I > struct int_{};
 
--- gcc/testsuite/g++.dg/cpp1z/nontype3.C.jj	2015-10-29 09:14:38.007570108 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype3.C	2017-09-14 19:25:21.121223465 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 #ifndef __cpp_nontype_template_args
 #error __cpp_nontype_template_args not defined
--- gcc/testsuite/g++.dg/cpp1z/class-deduction14.C.jj	2016-10-05 17:01:31.345639938 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction14.C	2017-09-14 19:25:21.127223392 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <vector>
 
--- gcc/testsuite/g++.dg/cpp1z/fold7.C.jj	2016-03-15 17:10:19.247530725 +0100
+++ gcc/testsuite/g++.dg/cpp1z/fold7.C	2017-09-14 19:25:20.680228776 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 #ifndef __cpp_fold_expressions
 #error __cpp_fold_expressions not defined
--- gcc/testsuite/g++.dg/cpp1z/nontype2.C.jj	2015-10-29 09:14:38.007570108 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype2.C	2017-09-14 19:25:20.744228005 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <typeinfo>
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction15.C.jj	2016-10-05 17:01:31.343639964 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction15.C	2017-09-14 19:25:21.131223344 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <utility>
 
--- gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C.jj	2017-05-22 10:49:47.719048322 +0200
+++ gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C	2017-09-14 19:25:20.992225018 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 namespace A::B::C
 {
--- gcc/testsuite/g++.dg/cpp1z/class-deduction13.C.jj	2016-10-05 17:01:31.343639964 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction13.C	2017-09-14 19:25:20.619229511 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/aligned-new7.C.jj	2016-10-31 13:28:10.654388326 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aligned-new7.C	2017-09-14 19:25:20.639229270 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/77742
-// { dg-options "-Wall -std=c++1z" }
+// { dg-options "-Wall -std=c++17" }
 
 #include <new>
 
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C.jj	2016-12-08 09:23:26.431181626 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C	2017-09-14 19:25:21.051224308 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0012r1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 void (*p)() throw(int);	       // { dg-error "dynamic exception specification" }
 void (**pp)() noexcept = &p;   // { dg-error "" } cannot convert to pointer to noexcept function
--- gcc/testsuite/g++.dg/cpp1z/nontype1.C.jj	2015-10-29 09:14:38.007570108 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype1.C	2017-09-14 19:25:20.558230246 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct S { int m; static int s; } s;
 
--- gcc/testsuite/g++.dg/cpp1z/init-statement5.C.jj	2016-10-06 00:21:29.001978113 +0200
+++ gcc/testsuite/g++.dg/cpp1z/init-statement5.C	2017-09-14 19:25:20.607229656 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0305R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 enum class status_code { SUCCESS };
 extern int get_value ();
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C.jj	2016-11-09 23:55:14.455237771 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C	2017-09-14 19:25:20.778227596 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0127R2
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <typename T> struct S;
 template <typename T, T n> struct S<int[n]> {
--- gcc/testsuite/g++.dg/cpp1z/decomp17.C.jj	2016-11-16 22:43:00.525838681 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp17.C	2017-09-14 19:25:20.728228198 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <tuple>
 
--- gcc/testsuite/g++.dg/cpp1z/fold4.C.jj	2015-10-11 19:11:09.734830939 +0200
+++ gcc/testsuite/g++.dg/cpp1z/fold4.C	2017-09-14 19:25:21.077223994 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class...T>
 constexpr auto f(T... t)
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C.jj	2016-08-09 09:22:27.208057768 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C	2017-09-14 19:25:20.832226946 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0170R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 constexpr int AddEleven(int n){
   return[n]{return n+11;}();
--- gcc/testsuite/g++.dg/cpp1z/fold7a.C.jj	2015-10-29 09:14:38.005570137 +0100
+++ gcc/testsuite/g++.dg/cpp1z/fold7a.C	2017-09-14 19:25:20.534230535 +0200
@@ -1,4 +1,4 @@ 
-// This macro should not be defined without -std=c++1z.
+// This macro should not be defined without -std=c++17.
 
 #ifdef __cpp_fold_expressions
 #error __cpp_fold_expressions defined
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C.jj	2016-11-09 23:55:14.427238131 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C	2017-09-14 19:25:20.896226175 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T> struct A
 {
--- gcc/testsuite/g++.dg/cpp1z/init-statement7.C.jj	2016-10-06 00:21:29.002978100 +0200
+++ gcc/testsuite/g++.dg/cpp1z/init-statement7.C	2017-09-14 19:25:20.912225982 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 int
 main ()
--- gcc/testsuite/g++.dg/cpp1z/aggr-base5.C.jj	2016-10-31 13:28:10.747387149 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aggr-base5.C	2017-09-14 19:25:20.824227042 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -w" }
+// { dg-options "-std=c++17 -w" }
 // { dg-do run }
 
 struct A { };
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C.jj	2016-08-09 09:22:27.209057755 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C	2017-09-14 19:25:20.988225066 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 auto addOne = [] (int n) {
   return n + 1;
--- gcc/testsuite/g++.dg/cpp1z/pr79143.C.jj	2017-02-09 23:11:41.801038591 +0100
+++ gcc/testsuite/g++.dg/cpp1z/pr79143.C	2017-09-14 19:25:20.888226271 +0200
@@ -1,6 +1,6 @@ 
 // PR c++/79143
 // { dg-do compile }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 struct base {
   base (int, int) {}
--- gcc/testsuite/g++.dg/cpp1z/class-deduction38.C.jj	2017-03-03 11:39:04.071395339 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction38.C	2017-09-14 19:25:20.643229222 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T> struct A {
   using value_type = T;
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C.jj	2017-02-18 14:12:35.625943935 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C	2017-09-14 19:25:20.791227439 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/79549
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <auto...>
 struct meow;
--- gcc/testsuite/g++.dg/cpp1z/class-deduction12.C.jj	2016-10-05 17:01:31.345639938 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction12.C	2017-09-14 19:25:21.000224922 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/decomp20.C.jj	2017-01-11 09:36:50.450680167 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp20.C	2017-09-14 19:25:21.087223874 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct A { int i,j; };
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction22.C.jj	2016-11-09 23:55:14.455237771 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction22.C	2017-09-14 19:25:21.058224223 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <template <class> class T>
 void f()
--- gcc/testsuite/g++.dg/cpp1z/class-deduction29.C.jj	2017-02-20 13:43:20.585483675 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction29.C	2017-09-14 19:25:20.634229330 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/79500
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<typename T> struct A {};
 A(...) -> A<int>;
--- gcc/testsuite/g++.dg/cpp1z/class-deduction8.C.jj	2016-10-05 17:01:31.342639977 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction8.C	2017-09-14 19:25:21.055224259 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/class-deduction43.C.jj	2017-08-07 10:27:57.304109534 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction43.C	2017-09-14 19:25:20.377232426 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/79790
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <int N>
 struct array
--- gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C.jj	2017-09-12 09:35:47.068696888 +0200
+++ gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C	2017-09-14 19:25:20.787227488 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -I${srcdir}/g++.dg/cpp1y -I${srcdir}/g++.dg/cpp1y/testinc" }
+// { dg-options "-std=c++17 -I${srcdir}/g++.dg/cpp1y -I${srcdir}/g++.dg/cpp1y/testinc" }
 
 //  C++98 features:
 
--- gcc/testsuite/g++.dg/cpp1z/fold8.C.jj	2016-11-18 20:04:20.180658101 +0100
+++ gcc/testsuite/g++.dg/cpp1z/fold8.C	2017-09-14 19:25:20.438231691 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/68377
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct Sink { } s;
 template <class T> Sink& operator<<(Sink&, const T&);
--- gcc/testsuite/g++.dg/cpp1z/init-statement3.C.jj	2016-10-06 00:21:29.001978113 +0200
+++ gcc/testsuite/g++.dg/cpp1z/init-statement3.C	2017-09-14 19:25:20.869226500 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // Test C++17 selection statements with initializer, side-effects.
 
 int
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C.jj	2017-03-21 07:56:59.231188159 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C	2017-09-14 19:25:21.114223549 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/80096
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<auto> struct A
 {
--- gcc/testsuite/g++.dg/cpp1z/class-deduction36.C.jj	2017-03-03 11:39:04.071395339 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction36.C	2017-09-14 19:25:20.983225127 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T> struct A {
   A(T&);
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C.jj	2017-06-19 08:27:56.598333857 +0200
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C	2017-09-14 19:25:20.971225271 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/80465
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 int foo(...);
 int main() {
--- gcc/testsuite/g++.dg/cpp1z/fallthrough1.C.jj	2016-09-26 12:06:39.708864032 +0200
+++ gcc/testsuite/g++.dg/cpp1z/fallthrough1.C	2017-09-14 19:25:20.408232053 +0200
@@ -1,6 +1,6 @@ 
 // PR c/7652
 // { dg-do compile }
-// { dg-options "-std=c++1z -Wextra -Wall -Wpedantic" }
+// { dg-options "-std=c++17 -Wextra -Wall -Wpedantic" }
 
 // Check that we accept attribute [[fallthrough]].
 
--- gcc/testsuite/g++.dg/cpp1z/fold1.C.jj	2016-03-09 10:19:08.525762444 +0100
+++ gcc/testsuite/g++.dg/cpp1z/fold1.C	2017-09-14 19:25:20.529230595 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 #include <cassert>
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction26.C.jj	2017-01-21 02:26:04.092833304 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction26.C	2017-09-14 19:25:20.459231438 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0512R0 for C++17 NB comment US 20
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class,class> struct same;
 template <class T> struct same<T,T> {};
--- gcc/testsuite/g++.dg/cpp1z/fold-ice1.C.jj	2015-10-29 09:14:38.005570137 +0100
+++ gcc/testsuite/g++.dg/cpp1z/fold-ice1.C	2017-09-14 19:25:20.948225548 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67926
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <bool ... T> bool FUR = (T && ...);
 template <bool ... T> bool FUL = (... && T);
--- gcc/testsuite/g++.dg/cpp1z/fold5.C.jj	2015-12-07 12:17:54.789682030 +0100
+++ gcc/testsuite/g++.dg/cpp1z/fold5.C	2017-09-14 19:25:21.031224549 +0200
@@ -1,5 +1,5 @@ 
 // Test that we complain about fold-expressions in C++11 and C++14.
-// { dg-do compile { target { c++11 && { ! c++1z } } } }
+// { dg-do compile { target { c++11 && { ! c++17 } } } }
 
 template <class...T>
 constexpr int f(T... t)
--- gcc/testsuite/g++.dg/cpp1z/class-deduction34.C.jj	2017-03-02 08:08:42.103376601 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction34.C	2017-09-14 19:25:20.795227391 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C.jj	2016-11-09 15:22:33.908455246 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C	2017-09-14 19:25:20.622229475 +0200
@@ -1,5 +1,5 @@ 
 // Test for lambda conversion.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 void f()
 {
--- gcc/testsuite/g++.dg/cpp1z/class-deduction7.C.jj	2016-10-05 17:01:31.344639951 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction7.C	2017-09-14 19:25:20.684228728 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/class-deduction16.C.jj	2016-10-05 17:01:31.346639925 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction16.C	2017-09-14 19:25:20.816227138 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <tuple>
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction10.C.jj	2016-10-05 17:01:31.345639938 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction10.C	2017-09-14 19:25:20.872226464 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/eval-order3.C.jj	2016-07-11 11:14:26.919441271 +0200
+++ gcc/testsuite/g++.dg/cpp1z/eval-order3.C	2017-09-14 19:25:20.386232318 +0200
@@ -1,6 +1,6 @@ 
 // P0145R2: Refining Expression Order for C++
 // { dg-do run }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 extern "C" int printf (const char *, ...);
 void sink(...) { }
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C.jj	2016-08-09 09:22:27.212057718 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C	2017-09-14 19:25:20.932225741 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 auto l1 = []() constexpr constexpr { }; // { dg-error "duplicate" }
 auto l2 = []() mutable mutable { }; // { dg-error "duplicate" }
--- gcc/testsuite/g++.dg/cpp1z/aggr-base2a.C.jj	2016-10-31 13:28:10.691387858 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aggr-base2a.C	2017-09-14 19:25:20.940225645 +0200
@@ -8,5 +8,5 @@  private:
 };
 struct derived : base {};
 
-derived d1{};			// { dg-error "" "" { target c++1z } }
+derived d1{};			// { dg-error "" "" { target c++17 } }
 derived d2;			// still OK
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C.jj	2016-11-09 23:55:14.427238131 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C	2017-09-14 19:25:20.944225596 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0127R2
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <long n> struct A { };
 
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C.jj	2016-08-09 09:22:27.208057768 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C	2017-09-14 19:25:20.884226319 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 constexpr auto add = [] (int n, int m) {
   auto L = [=] { return n; };
--- gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C.jj	2017-02-04 08:43:14.779490534 +0100
+++ gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C	2017-09-14 19:25:20.603229704 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/78334
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <auto> auto constexpr_string([](auto) {});
 void foo() { constexpr_string<0>(0); };
--- gcc/testsuite/g++.dg/cpp1z/decomp15.C.jj	2016-11-15 18:06:17.286482555 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp15.C	2017-09-14 19:25:20.416231956 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 struct A { bool a, b; };
 struct B { int a, b; };
--- gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C.jj	2016-11-09 15:22:33.910455221 +0100
+++ gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C	2017-09-14 19:25:20.900226126 +0200
@@ -1,5 +1,5 @@ 
 // Test for deduction.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class R, class... A>
 void f(R (*)(A...));
--- gcc/testsuite/g++.dg/cpp1z/fold-mangle.C.jj	2016-07-16 10:41:02.568677893 +0200
+++ gcc/testsuite/g++.dg/cpp1z/fold-mangle.C	2017-09-14 19:25:20.876226416 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/71711
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template < int > struct A {};
 template < int ... N > void unary_left (A < (... + N) >);
--- gcc/testsuite/g++.dg/cpp1z/class-deduction35.C.jj	2017-03-02 08:08:42.129376255 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction35.C	2017-09-14 19:25:20.732228150 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T> struct A;
 
--- gcc/testsuite/g++.dg/cpp1z/decomp4.C.jj	2017-07-04 09:39:22.147588402 +0200
+++ gcc/testsuite/g++.dg/cpp1z/decomp4.C	2017-09-14 19:25:21.073224043 +0200
@@ -15,18 +15,18 @@  void
 test (A &a, B &b, C &c, D &d, E &e, F &f, G &g, H &h, I &i)
 {
   auto [ j ] = a;			// { dg-error "cannot decompose class type 'A' because it has an anonymous struct member" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   auto [ k ] { b };			// { dg-error "cannot decompose class type 'B' because it has an anonymous union member" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
   auto [ l, l2 ] = c;			// { dg-error "cannot decompose non-public member 'C::b' of 'C'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
-  auto [ m ] = d;			// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
+  auto [ m ] = d;			// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } }
   auto [ n ] { e };			// { dg-error "cannot decompose non-public member 'E::a' of 'E'" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
-  auto [ o ] { f };			// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
+  auto [ o ] { f };			// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } }
   auto & [ p ] { g };			// { dg-error "cannot decompose class type 'G': both it and its base class 'F' have non-static data members" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
-  auto [ q ] { h };			// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
+  auto [ q ] { h };			// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } }
   auto [ r ] { i };			// { dg-error "cannot decompose class type 'I': its base classes 'F' and 'H' have non-static data members" }
-					// { dg-warning "structured bindings only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+					// { dg-warning "structured bindings only available with -std=c..17 or -std=gnu..17" "" { target c++14_down } .-1 }
 }
--- gcc/testsuite/g++.dg/cpp1z/class-deduction42.C.jj	2017-07-26 21:12:17.925383967 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction42.C	2017-09-14 19:25:21.004224874 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <initializer_list>
 
--- gcc/testsuite/g++.dg/cpp1z/init-statement8.C.jj	2016-10-06 00:21:29.000978125 +0200
+++ gcc/testsuite/g++.dg/cpp1z/init-statement8.C	2017-09-14 19:25:20.799227343 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 int
 f ()
--- gcc/testsuite/g++.dg/cpp1z/inline-var1a.C.jj	2016-10-31 13:28:10.747387149 +0100
+++ gcc/testsuite/g++.dg/cpp1z/inline-var1a.C	2017-09-14 19:25:20.781227560 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z -Wno-deprecated -g" }
+// { dg-options "-std=c++17 -Wno-deprecated -g" }
 
 #include "inline-var1.h"
 
--- gcc/testsuite/g++.dg/cpp1z/init-statement6.C.jj	2016-11-16 07:13:47.126605928 +0100
+++ gcc/testsuite/g++.dg/cpp1z/init-statement6.C	2017-09-14 19:25:20.705228475 +0200
@@ -1,5 +1,5 @@ 
 // Testcase from P0305R1
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <string>
 #include <map>
--- gcc/testsuite/g++.dg/cpp1z/class-deduction17.C.jj	2017-03-01 09:31:47.518094134 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction17.C	2017-09-14 19:25:20.520230704 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <initializer_list>
 template <class T>
--- gcc/testsuite/g++.dg/cpp1z/class-deduction28.C.jj	2017-02-09 23:01:47.742650630 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction28.C	2017-09-14 19:25:20.828226994 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/79350
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/class-deduction27.C.jj	2017-02-09 23:01:47.741650643 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction27.C	2017-09-14 19:25:20.936225693 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/79316
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
   template<typename T> struct S { S(T t) {} };
   template<typename T> S(T, int = 7) -> S<T>;
--- gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C.jj	2016-11-15 09:57:00.126076391 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C	2017-09-14 19:25:20.865226548 +0200
@@ -1,5 +1,5 @@ 
 // Test of bit-fields.
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct A { long i: 2; } a;
 
--- gcc/testsuite/g++.dg/cpp1z/attributes-enum-1a.C.jj	2015-10-29 09:14:38.009570079 +0100
+++ gcc/testsuite/g++.dg/cpp1z/attributes-enum-1a.C	2017-09-14 19:25:20.390232269 +0200
@@ -1,4 +1,4 @@ 
-// This macro should not be defined without -std=c++1z.
+// This macro should not be defined without -std=c++17.
 
 #ifdef __cpp_enumerator_attributes
 #error __cpp_enumerator_attributes defined
--- gcc/testsuite/g++.dg/cpp1z/class-deduction11.C.jj	2016-10-05 17:01:31.342639977 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction11.C	2017-09-14 19:25:20.748227957 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C.jj	2016-08-09 09:22:27.211057731 +0200
+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C	2017-09-14 19:25:21.028224585 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 void f(int i)
 {
--- gcc/testsuite/g++.dg/cpp1z/init-statement9.C.jj	2016-10-06 10:14:56.854307446 +0200
+++ gcc/testsuite/g++.dg/cpp1z/init-statement9.C	2017-09-14 19:25:20.660229017 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 void
 f ()
--- gcc/testsuite/g++.dg/cpp1z/class-deduction19.C.jj	2016-10-31 13:28:10.712387592 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction19.C	2017-09-14 19:25:20.655229077 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/77912
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template<class T> struct S{S(T){}}; 
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction5.C.jj	2016-10-05 17:01:31.344639951 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction5.C	2017-09-14 19:25:20.812227186 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class T>
 struct A
--- gcc/testsuite/g++.dg/cpp1z/fold2.C.jj	2015-10-11 19:11:09.733830953 +0200
+++ gcc/testsuite/g++.dg/cpp1z/fold2.C	2017-09-14 19:25:20.959225416 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z" }
+// { dg-options "-std=c++17" }
 
 // Check that we can fold over all of the operators required
 // by the standard in every possible way.
--- gcc/testsuite/g++.dg/cpp1z/class-deduction33.C.jj	2017-03-02 08:08:42.129376255 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction33.C	2017-09-14 19:25:20.672228873 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <class,class> struct same;
 template <class T> struct same<T,T> {};
--- gcc/testsuite/g++.dg/cpp1z/class-deduction24.C.jj	2017-01-18 18:39:04.703308792 +0100
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction24.C	2017-09-14 19:25:21.100223717 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/78894
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 struct A
 {
--- gcc/testsuite/g++.dg/cpp1z/aggr-base1.C.jj	2016-10-31 13:28:10.739387250 +0100
+++ gcc/testsuite/g++.dg/cpp1z/aggr-base1.C	2017-09-14 19:25:20.554230294 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // { dg-do run }
 
 struct base1 { int b1, b2 = 42; };
--- gcc/testsuite/g++.dg/cpp1z/fold6.C.jj	2015-10-11 19:11:09.734830939 +0200
+++ gcc/testsuite/g++.dg/cpp1z/fold6.C	2017-09-14 19:25:20.996224970 +0200
@@ -1,7 +1,7 @@ 
 // Test that we reject a fold-expression with an LHS that is not a
 // cast-expression.
 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 int i;
 
--- gcc/testsuite/g++.dg/cpp1z/decomp12.C.jj	2016-11-15 18:02:57.262014735 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp12.C	2017-09-14 19:25:21.020224681 +0200
@@ -1,6 +1,6 @@ 
 // PR c++/78358
 // { dg-do run }
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 #include <tuple>
 
--- gcc/testsuite/g++.dg/cpp1z/class-deduction4.C.jj	2016-10-05 17:01:31.341639990 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction4.C	2017-09-14 19:25:20.904226078 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <int I, int J>
 struct A { };
--- gcc/testsuite/g++.dg/cpp1z/inline-var1.C.jj	2016-10-31 13:28:10.704387693 +0100
+++ gcc/testsuite/g++.dg/cpp1z/inline-var1.C	2017-09-14 19:25:20.590229860 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -Wno-deprecated" }
+// { dg-options "-std=c++17 -Wno-deprecated" }
 // { dg-require-weak "" }
 // { dg-additional-sources "inline-var1a.C" }
 
--- gcc/testsuite/g++.dg/cpp1z/aligned-new2.C.jj	2016-09-13 10:43:50.454765585 +0200
+++ gcc/testsuite/g++.dg/cpp1z/aligned-new2.C	2017-09-14 19:25:20.395232209 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 // { dg-do run }
 
 #include <new>
--- gcc/testsuite/g++.dg/cpp1z/class-deduction3.C.jj	2016-10-05 17:01:31.344639951 +0200
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction3.C	2017-09-14 19:25:20.764227765 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options -std=c++1z }
+// { dg-options -std=c++17 }
 
 template <int I>
 struct A { };
--- gcc/testsuite/g++.dg/other/error3.C.jj	2017-04-28 22:16:43.969582475 +0200
+++ gcc/testsuite/g++.dg/other/error3.C	2017-09-14 19:25:21.137223272 +0200
@@ -1,6 +1,6 @@ 
 // Test for proper error message formatting; the throw() should go inside
 // the parens, as below.
 
-void (*g() throw())();		// { dg-message "g\\(\\) throw" "" { target { ! c++1z } } }
-				// { dg-message "g\\(\\) noexcept" "" { target c++1z } .-1 }
+void (*g() throw())();		// { dg-message "g\\(\\) throw" "" { target { ! c++17 } } }
+				// { dg-message "g\\(\\) noexcept" "" { target c++17 } .-1 }
 void (*g())();			// { dg-error "" }
--- gcc/testsuite/g++.dg/init/new25.C.jj	2016-12-08 09:23:26.474181079 +0100
+++ gcc/testsuite/g++.dg/init/new25.C	2017-09-14 19:25:21.142223212 +0200
@@ -5,11 +5,11 @@  class C
 {
 public:
   void* operator new(std::size_t = 32) throw (std::bad_alloc); // { dg-error "first parameter" }
-							       // { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-							       // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-2 }
+							       // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+							       // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
   void* operator new[](std::size_t = 32) throw (std::bad_alloc); // { dg-error "first parameter" }
-								 // { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-								 // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-2 }
+								 // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+								 // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
   void* operator new(std::size_t = 32, const std::nothrow_t&) throw(); // { dg-error "first parameter" }
   void* operator new[](std::size_t = 32, const std::nothrow_t&) throw(); // { dg-error "first parameter" }
 };
--- gcc/testsuite/g++.dg/init/new13.C.jj	2016-12-08 09:23:26.460181257 +0100
+++ gcc/testsuite/g++.dg/init/new13.C	2017-09-14 19:25:21.139223248 +0200
@@ -6,6 +6,6 @@ 
 struct A
 {
   void* operator new(__SIZE_TYPE__) throw(X);  // { dg-error "expected|type" }
-};					       // { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-					       // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-2 }
+};					       // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+					       // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
 A* p = new A;
--- gcc/testsuite/g++.dg/tls/diag-2.C.jj	2016-10-02 21:32:24.426157993 +0200
+++ gcc/testsuite/g++.dg/tls/diag-2.C	2017-09-14 19:25:21.147223151 +0200
@@ -12,7 +12,7 @@  void foo()
   auto __thread int l2;		/* { dg-error "multiple storage classes|data types" } */
   __thread extern int l3;	/* { dg-error "'__thread' before 'extern'" } */
   register __thread int l4;	/* { dg-error "multiple storage classes" } */
-}				/* { dg-error "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } .-1 } */
+}				/* { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } .-1 } */
 
 __thread void f1 ();		/* { dg-error "invalid for function" } */
 extern __thread void f2 ();	/* { dg-error "invalid for function" } */
--- gcc/testsuite/g++.dg/tls/diag-4.C.jj	2016-10-02 21:32:24.431157930 +0200
+++ gcc/testsuite/g++.dg/tls/diag-4.C	2017-09-14 19:25:21.144223187 +0200
@@ -7,4 +7,4 @@  void foo()
 {
   __thread auto int l2;		/* { dg-error "multiple storage classes|data types" } */
   __thread register int l4;	/* { dg-error "multiple storage classes" } */
-}				/* { dg-error "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } .-1 } */
+}				/* { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } .-1 } */
--- gcc/testsuite/g++.dg/opt/noreturn-1.C.jj	2016-12-08 09:23:26.480181003 +0100
+++ gcc/testsuite/g++.dg/opt/noreturn-1.C	2017-09-14 19:25:21.150223115 +0200
@@ -60,17 +60,17 @@  struct Egeneric {
 struct infinint {
     void detruit()
 #if __cplusplus <= 201402L
-    throw(Egeneric)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw(Egeneric)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
     template<class T> void infinint_from(T a)
 #if __cplusplus <= 201402L
-    throw(Egeneric)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw(Egeneric)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
     infinint(long a = 0)
 #if __cplusplus <= 201402L
-    throw(Egeneric)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw(Egeneric)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     {
 	try {
@@ -81,7 +81,7 @@  struct infinint {
     }
     ~infinint()
 #if __cplusplus <= 201402L
-    throw(Egeneric)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw(Egeneric)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
     noexcept(false)
 #endif
--- gcc/testsuite/g++.dg/eh/async-unwind2.C.jj	2016-12-08 09:23:26.504180698 +0100
+++ gcc/testsuite/g++.dg/eh/async-unwind2.C	2017-09-14 19:25:21.173222838 +0200
@@ -89,12 +89,12 @@  struct Z;
 
 X <V> baz1 (const S &)
 #if __cplusplus <= 201402L
-throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 ;
 X <Z> baz2 (const X <Z> &)
 #if __cplusplus <= 201402L
-throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 ;
 
@@ -122,7 +122,7 @@  template <typename T> T *X<T>::operator
 
 X <V> baz1 (const S &)
 #if __cplusplus <= 201402L
-throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   return X<V> ();
@@ -138,7 +138,7 @@  E::~E ()
 
 X <Z> baz2 (const X <Z> &)
 #if __cplusplus <= 201402L
-throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   throw E ();
--- gcc/testsuite/g++.dg/eh/spec9.C.jj	2016-12-08 09:23:26.546180165 +0100
+++ gcc/testsuite/g++.dg/eh/spec9.C	2017-09-14 19:25:21.201222501 +0200
@@ -6,7 +6,7 @@  IntArray i;
 
 void test_array()
 #if __cplusplus <= 201402L
-throw (IntArray)	// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (IntArray)	// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   throw i;
--- gcc/testsuite/g++.dg/eh/spec7.C.jj	2016-12-08 09:23:26.535180305 +0100
+++ gcc/testsuite/g++.dg/eh/spec7.C	2017-09-14 19:25:21.161222983 +0200
@@ -21,7 +21,7 @@  struct D : public B {
         struct Raiser { 
             Raiser()
 #if __cplusplus <= 201402L
-	    throw( int )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+	    throw( int )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 	    {throw 1;}; 
         } raiser; 
--- gcc/testsuite/g++.dg/eh/template1.C.jj	2016-12-08 09:23:26.504180698 +0100
+++ gcc/testsuite/g++.dg/eh/template1.C	2017-09-14 19:25:21.170222874 +0200
@@ -19,7 +19,7 @@  struct C
   typedef typename D::E E;
   void f()
 #if __cplusplus <= 201402L
-  throw(E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   { throw E(); }
 };
--- gcc/testsuite/g++.dg/eh/cond4.C.jj	2016-12-08 09:23:26.548180139 +0100
+++ gcc/testsuite/g++.dg/eh/cond4.C	2017-09-14 19:25:21.181222742 +0200
@@ -14,7 +14,7 @@  struct A {
   A(int) { }
   ~A()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
--- gcc/testsuite/g++.dg/eh/pr41819.C.jj	2016-12-08 09:23:26.547180152 +0100
+++ gcc/testsuite/g++.dg/eh/pr41819.C	2017-09-14 19:25:21.192222609 +0200
@@ -17,7 +17,7 @@  void f1()
 
 void f2()
 #if __cplusplus <= 201402L
-throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   bar();
--- gcc/testsuite/g++.dg/eh/delete1.C.jj	2016-12-08 09:23:26.546180165 +0100
+++ gcc/testsuite/g++.dg/eh/delete1.C	2017-09-14 19:25:21.195222573 +0200
@@ -14,7 +14,7 @@  void operator delete (void *) throw ()
 struct Foo {
   ~Foo()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
@@ -28,7 +28,7 @@  struct Baz {
   }
   virtual ~Baz()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
--- gcc/testsuite/g++.dg/eh/spec3.C.jj	2016-12-08 09:23:26.491180864 +0100
+++ gcc/testsuite/g++.dg/eh/spec3.C	2017-09-14 19:25:21.153223079 +0200
@@ -14,7 +14,7 @@  struct B {};
 
 void func()
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   throw A();
--- gcc/testsuite/g++.dg/eh/forced4.C.jj	2016-12-08 09:23:26.494180825 +0100
+++ gcc/testsuite/g++.dg/eh/forced4.C	2017-09-14 19:25:21.177222790 +0200
@@ -40,7 +40,7 @@  force_unwind ()
 static void
 doit ()
 #if __cplusplus <= 201402L
-throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   force_unwind ();
--- gcc/testsuite/g++.dg/eh/spec2.C.jj	2016-12-08 09:23:26.514180571 +0100
+++ gcc/testsuite/g++.dg/eh/spec2.C	2017-09-14 19:25:21.189222645 +0200
@@ -3,15 +3,15 @@ 
 struct S { void f (void); };
 
 typedef void f1 (void) throw (int); // { dg-error "exception" "" { target c++14_down } }
-				    // { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-				    // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-2 }
+				    // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+				    // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
 typedef void (*f2) (void) throw (int); // { dg-error "exception" "" { target c++14_down } }
-				       // { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-				       // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-2 }
+				       // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+				       // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
 typedef void (S::*f3) (void) throw (int); // { dg-error "exception" "" { target c++14_down } }
-					  // { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-					  // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-2 }
-void (*f4) (void) throw (int); // { dg-error "dynamic exception specification" "" { target c++1z } }
-			       // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-1 }
-void (S::*f5) (void) throw (int); // { dg-error "dynamic exception specification" "" { target c++1z } }
-				  // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-1 }
+					  // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+					  // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
+void (*f4) (void) throw (int); // { dg-error "dynamic exception specification" "" { target c++17 } }
+			       // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-1 }
+void (S::*f5) (void) throw (int); // { dg-error "dynamic exception specification" "" { target c++17 } }
+				  // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-1 }
--- gcc/testsuite/g++.dg/eh/shadow1.C.jj	2016-12-08 09:23:26.534180317 +0100
+++ gcc/testsuite/g++.dg/eh/shadow1.C	2017-09-14 19:25:21.198222537 +0200
@@ -13,14 +13,14 @@  struct D : private B
   friend class E;
   
   static B *baz (D *);
-  virtual void V () throw (B);  // { dg-error "overriding" "" { target { ! c++1z } } }
-};				// { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-				// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-2 }
+  virtual void V () throw (B);  // { dg-error "overriding" "" { target { ! c++17 } } }
+};				// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+				// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
 struct E : public D
 {
-  virtual void V () throw (D); // { dg-error "looser throw" "" { target { ! c++1z } } }
-};			       // { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-			       // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-2 }
+  virtual void V () throw (D); // { dg-error "looser throw" "" { target { ! c++17 } } }
+};			       // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+			       // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
 B* foo (D *);
 
 B *D::baz (D *p)
--- gcc/testsuite/g++.dg/eh/pr38662.C.jj	2016-12-08 09:23:26.504180698 +0100
+++ gcc/testsuite/g++.dg/eh/pr38662.C	2017-09-14 19:25:21.157223031 +0200
@@ -4,7 +4,7 @@  class E { };
 class T {
   int foo(bool a)
 #if __cplusplus <= 201402L
-  throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw (E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   __attribute__((regparm(1)));
   int bar(bool b) __attribute__((regparm(1)));
--- gcc/testsuite/g++.dg/eh/ehopt1.C.jj	2016-12-08 09:23:26.547180152 +0100
+++ gcc/testsuite/g++.dg/eh/ehopt1.C	2017-09-14 19:25:21.167222910 +0200
@@ -17,7 +17,7 @@  public:
   A(const A&) { ++count; if (b) throw 1; }
   ~A()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
@@ -34,7 +34,7 @@  public:
   A(const B&) { if (b) throw 1; }
   ~A()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
--- gcc/testsuite/g++.dg/eh/spec8.C.jj	2016-12-08 09:23:26.564179936 +0100
+++ gcc/testsuite/g++.dg/eh/spec8.C	2017-09-14 19:25:21.185222694 +0200
@@ -4,7 +4,7 @@ 
 struct exception {};
 
 template <typename T> void foo() throw(exception); // { dg-message "declaration" }
-						   // { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-1 }
+						   // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-1 }
 template <typename T> void foo(); // { dg-error "exception" }
 
 struct bar
--- gcc/testsuite/g++.dg/eh/init-temp2.C.jj	2016-12-08 09:23:26.547180152 +0100
+++ gcc/testsuite/g++.dg/eh/init-temp2.C	2017-09-14 19:25:21.164222947 +0200
@@ -10,7 +10,7 @@  public:
 
   ~AutoPtr()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
@@ -22,7 +22,7 @@  struct A
   A() { }
   ~A()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
@@ -33,7 +33,7 @@  struct B
 {
   virtual ~B()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
--- gcc/testsuite/g++.dg/rtti/crash3.C.jj	2016-12-08 09:23:26.598179504 +0100
+++ gcc/testsuite/g++.dg/rtti/crash3.C	2017-09-14 19:25:21.205222453 +0200
@@ -7,7 +7,7 @@  class C : public A, public B {};
 class D : public C {};
 void f ()
 #if __cplusplus <= 201402L
-throw (D)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (D)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
 }
--- gcc/testsuite/g++.dg/warn/Wreturn-type-3.C.jj	2016-12-08 09:23:26.618179250 +0100
+++ gcc/testsuite/g++.dg/warn/Wreturn-type-3.C	2017-09-14 19:25:21.209222405 +0200
@@ -5,7 +5,7 @@  struct E{};
 
 inline int bar()
 #if __cplusplus <= 201402L
-throw(E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(E)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   return 0;
--- gcc/testsuite/g++.dg/warn/register-parm-1.C.jj	2016-09-29 22:53:53.784233240 +0200
+++ gcc/testsuite/g++.dg/warn/register-parm-1.C	2017-09-14 19:25:21.213222356 +0200
@@ -1,9 +1,9 @@ 
 // PR c++/60955
 // { dg-options "-Wextra" }
 
-unsigned int erroneous_warning(register int a) {	// { dg-warning "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+unsigned int erroneous_warning(register int a) {	// { dg-warning "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
     if ((a) & 0xff) return 1; else return 0;
 }
-unsigned int no_erroneous_warning(register int a) {	// { dg-warning "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+unsigned int no_erroneous_warning(register int a) {	// { dg-warning "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
     if (a & 0xff) return 1; else return 0;
 }
--- gcc/testsuite/g++.dg/warn/register-var-2.C.jj	2016-09-29 22:53:53.784233240 +0200
+++ gcc/testsuite/g++.dg/warn/register-var-2.C	2017-09-14 19:25:21.217222308 +0200
@@ -9,6 +9,6 @@  void g(int *);
 
 void f(void) 
 { 
-  register int x;	/* { dg-warning "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } } */
+  register int x;	/* { dg-warning "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } } */
   g(&x); /* { dg-warning "address requested for 'x', which is declared 'register'" } */
 } 
--- gcc/testsuite/g++.dg/gcov/gcov-7.C.jj	2016-12-08 09:23:26.633179060 +0100
+++ gcc/testsuite/g++.dg/gcov/gcov-7.C	2017-09-14 19:25:21.220222272 +0200
@@ -9,7 +9,7 @@  struct foo
 {
   foo ()
 #if __cplusplus <= 201402L
-    throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     {			/* count (-) */
       throw (1);
--- gcc/testsuite/g++.dg/tree-ssa/pr45605.C.jj	2017-09-01 09:26:20.800939161 +0200
+++ gcc/testsuite/g++.dg/tree-ssa/pr45605.C	2017-09-14 19:25:21.223222236 +0200
@@ -17,7 +17,7 @@  struct D : public B {
         struct Raiser { 
             Raiser()
 #if __cplusplus <= 201402L
-	    throw( int )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+	    throw( int )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 	    {throw 1;}; 
         } raiser; 
--- gcc/testsuite/g++.dg/cpp/pr23827_cxx98_neg.C.jj	2016-03-15 17:10:18.903535422 +0100
+++ gcc/testsuite/g++.dg/cpp/pr23827_cxx98_neg.C	2017-09-14 19:25:21.237222067 +0200
@@ -1,4 +1,4 @@ 
 // { dg-do compile { target c++98_only } }
 /* { dg-options "-ansi -pedantic-errors" }  */
 
-double x = 0x3.1415babep0; // { dg-error "use of C..1z hexadecimal floating constant" }
+double x = 0x3.1415babep0; // { dg-error "use of C..17 hexadecimal floating constant" }
--- gcc/testsuite/g++.dg/lookup/exception1.C.jj	2016-12-08 09:23:26.654178793 +0100
+++ gcc/testsuite/g++.dg/lookup/exception1.C	2017-09-14 19:25:21.240222031 +0200
@@ -13,12 +13,12 @@  namespace ns
     public:
       inline Test()
 #if __cplusplus <= 201402L
-      throw( Exception )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+      throw( Exception )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
       ;
       inline Test(int n )
 #if __cplusplus <= 201402L
-      throw( Exception )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+      throw( Exception )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
       ;
     private:
@@ -30,7 +30,7 @@  namespace ns
 // right scope.
 ns::Test::Test()
 #if __cplusplus <= 201402L
-throw( Exception )				// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw( Exception )				// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 : i( 1 )
 {
@@ -38,7 +38,7 @@  throw( Exception )				// { dg-warning "d
 
 ns::Test::Test( int n )
 #if __cplusplus <= 201402L
-throw( Exception )				// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw( Exception )				// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 : i( n )
 {
--- gcc/testsuite/g++.dg/ubsan/pr79589.C.jj	2017-02-21 18:57:59.518877233 +0100
+++ gcc/testsuite/g++.dg/ubsan/pr79589.C	2017-09-14 19:25:21.244221983 +0200
@@ -1,6 +1,6 @@ 
 // PR sanitizer/79589
 // { dg-do compile }
-// { dg-options "-fsanitize=undefined -std=c++1z" }
+// { dg-options "-fsanitize=undefined -std=c++17" }
 
 struct A { char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r; } a[64];
 
--- gcc/testsuite/g++.dg/tm/pr47340.C.jj	2016-12-08 09:23:26.676178514 +0100
+++ gcc/testsuite/g++.dg/tm/pr47340.C	2017-09-14 19:25:21.247221947 +0200
@@ -3,7 +3,7 @@ 
 
 void* operator new(__SIZE_TYPE__)
 #if __cplusplus <= 201402L
-throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 ;
 
--- gcc/testsuite/g++.dg/tm/pr46567.C.jj	2016-12-08 09:23:26.668178615 +0100
+++ gcc/testsuite/g++.dg/tm/pr46567.C	2017-09-14 19:25:21.257221826 +0200
@@ -1669,12 +1669,12 @@  namespace std
 }
 void* operator new(std::size_t)
 #if __cplusplus <= 201402L
-throw (std::bad_alloc)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (std::bad_alloc)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 ;
 void* operator new[](std::size_t)
 #if __cplusplus <= 201402L
-throw (std::bad_alloc)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (std::bad_alloc)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 ;
 void operator delete(void*) throw();
--- gcc/testsuite/g++.dg/expr/bitfield5.C.jj	2017-04-19 15:46:51.131659338 +0200
+++ gcc/testsuite/g++.dg/expr/bitfield5.C	2017-09-14 19:25:21.275221610 +0200
@@ -8,12 +8,12 @@  struct S {
 S s;
 
 int main() {
-  s.x++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
+  s.x++; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
   if (s.x != 1)
     return 1;
-  ++s.x; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
+  ++s.x; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
   if (s.x != 1)
     return 2;
 }
--- gcc/testsuite/g++.dg/expr/bool1.C.jj	2017-04-19 15:46:51.131659338 +0200
+++ gcc/testsuite/g++.dg/expr/bool1.C	2017-09-14 19:25:21.264221742 +0200
@@ -10,10 +10,10 @@  int main()
   my_bool b = false;
   int i;
 
-  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
-  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
+  b++; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
+  b++; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
   i = b;
   if (i != 1)
     abort ();
--- gcc/testsuite/g++.dg/expr/lval3.C.jj	2017-04-19 15:46:51.130659351 +0200
+++ gcc/testsuite/g++.dg/expr/lval3.C	2017-09-14 19:25:21.271221658 +0200
@@ -4,5 +4,5 @@  f()
 {
   bool i = 0;
   i++ = 3; // { dg-error "" }
-  // { dg-warning "deprecated" "" { target { ! c++1z } } .-1 }
+  // { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
 }
--- gcc/testsuite/g++.dg/expr/lval4.C.jj	2017-04-19 15:46:51.153659050 +0200
+++ gcc/testsuite/g++.dg/expr/lval4.C	2017-09-14 19:25:21.268221694 +0200
@@ -4,6 +4,6 @@  f()
 {
   bool i = 0;
   ++i = 3;
-  // { dg-warning "deprecated" "" { target { ! c++1z } } .-1 }
-  // { dg-error "forbidden" "" { target c++1z } .-2 }
+  // { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
+  // { dg-error "forbidden" "" { target c++17 } .-2 }
 }
--- gcc/testsuite/g++.dg/expr/bitfield4.C.jj	2017-04-19 15:46:51.153659050 +0200
+++ gcc/testsuite/g++.dg/expr/bitfield4.C	2017-09-14 19:25:21.281221537 +0200
@@ -14,8 +14,8 @@  template <>
 void f(bool) {} 
 
 int main() {
-  f(s.x++); // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
-  f(++s.x); // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
+  f(s.x++); // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
+  f(++s.x); // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
 }
--- gcc/testsuite/g++.dg/expr/bitfield6.C.jj	2017-04-19 15:46:51.153659050 +0200
+++ gcc/testsuite/g++.dg/expr/bitfield6.C	2017-09-14 19:25:21.278221573 +0200
@@ -7,6 +7,6 @@  struct S {
 S s;
 
 void f() {
-  ++s.x = false; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
+  ++s.x = false; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
 }
--- gcc/testsuite/g++.dg/expr/bool3.C.jj	2017-04-19 15:46:51.153659050 +0200
+++ gcc/testsuite/g++.dg/expr/bool3.C	2017-09-14 19:25:21.260221790 +0200
@@ -10,10 +10,10 @@  int main()
   my_bool b = false;
   int i;
 
-  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
-  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
+  b++; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
+  b++; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
   i = b;
   if (i != 1)
     abort ();
--- gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C.jj	2016-12-08 09:23:26.720177955 +0100
+++ gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C	2017-09-14 19:25:21.291221417 +0200
@@ -15,7 +15,7 @@  struct B
 #if __cplusplus > 201402L
 #define THROW_INT
 #else
-#define THROW_INT throw(int)	// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+#define THROW_INT throw(int)	// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 
 struct C 
--- gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C.jj	2016-12-08 09:23:26.693178298 +0100
+++ gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C	2017-09-14 19:25:21.284221501 +0200
@@ -5,7 +5,7 @@  struct S {
     S (const S&) throw ();
     S (S&&)
 #if __cplusplus <= 201402L
-    throw (int)			// { dg-warning "deprecated" "" { target { ! c++1z } } }
+    throw (int)			// { dg-warning "deprecated" "" { target { ! c++17 } } }
 #endif
     ;
 };
--- gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C.jj	2016-12-08 09:23:26.686178386 +0100
+++ gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C	2017-09-14 19:25:21.310221188 +0200
@@ -18,7 +18,7 @@  struct C
 #if __cplusplus > 201402L
 #define THROW_INT
 #else
-#define THROW_INT throw(int)	// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+#define THROW_INT throw(int)	// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 
 struct D
--- gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C.jj	2016-12-08 09:23:26.703178171 +0100
+++ gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C	2017-09-14 19:25:21.298221333 +0200
@@ -5,7 +5,7 @@ 
 struct A {
   template <class T> A (T)
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   ;
 };
@@ -13,7 +13,7 @@  struct B {
   B (B&) throw ();
   template <class T> B (T)
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   ;
 };
--- gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C.jj	2016-12-08 09:23:26.701178196 +0100
+++ gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C	2017-09-14 19:25:21.302221284 +0200
@@ -6,7 +6,7 @@  struct S {
     S (const S&) throw ();
     S (...)
 #if __cplusplus <= 201402L
-    throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
 };
--- gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C.jj	2016-12-08 09:23:26.711178069 +0100
+++ gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C	2017-09-14 19:25:21.288221453 +0200
@@ -6,7 +6,7 @@  struct S {
     S (const S&) throw ();
     S (int)
 #if __cplusplus <= 201402L
-    throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
 };
--- gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C.jj	2016-12-08 09:23:26.692178310 +0100
+++ gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C	2017-09-14 19:25:21.295221369 +0200
@@ -5,7 +5,7 @@  struct S {
     S (S&) throw ();
     S (const S&, int)
 #if __cplusplus <= 201402L
-    throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
 };
--- gcc/testsuite/g++.dg/ext/has_nothrow_assign.C.jj	2016-12-08 09:23:26.708178107 +0100
+++ gcc/testsuite/g++.dg/ext/has_nothrow_assign.C	2017-09-14 19:25:21.306221236 +0200
@@ -18,7 +18,7 @@  struct C
 #if __cplusplus > 201402L
 #define THROW_INT
 #else
-#define THROW_INT throw(int)	// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+#define THROW_INT throw(int)	// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 
 struct D
--- gcc/testsuite/g++.dg/parse/register1.C.jj	2016-09-29 22:53:53.785233228 +0200
+++ gcc/testsuite/g++.dg/parse/register1.C	2017-09-14 19:25:21.322221043 +0200
@@ -8,7 +8,7 @@  public:
   operator int() { return i; }
 };
 
-C f (register C x)	// { dg-error "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+C f (register C x)	// { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 {
   return x + 31;
 }
--- gcc/testsuite/g++.dg/parse/error15.C.jj	2017-03-01 09:31:47.029100874 +0100
+++ gcc/testsuite/g++.dg/parse/error15.C	2017-09-14 19:25:21.318221092 +0200
@@ -11,7 +11,7 @@  namespace N
 }
 
 N::A f2;              // { dg-error "1:invalid use of template-name 'N::A' without an argument list" "" { target c++14_down } }
-				// { dg-error "deduction|no match" "" { target c++1z } .-1 }
+				// { dg-error "deduction|no match" "" { target c++17 } .-1 }
 N::INVALID f3;        // { dg-error "4:'INVALID' in namespace 'N' does not name a type" }
 N::C::INVALID f4;     // { dg-error "7:'INVALID' in 'struct N::C' does not name a type" }
 N::K f6;              // { dg-error "4:'K' in namespace 'N' does not name a type" }
--- gcc/testsuite/g++.dg/parse/linkage2.C.jj	2016-09-29 22:53:53.785233228 +0200
+++ gcc/testsuite/g++.dg/parse/linkage2.C	2017-09-14 19:25:21.314221140 +0200
@@ -1,3 +1,3 @@ 
 // PR c++/27884
 
-extern "C" void foo(register int *my_perl);	// { dg-error "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+extern "C" void foo(register int *my_perl);	// { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
--- gcc/testsuite/g++.dg/concepts/intro2.C.jj	2016-03-09 10:19:18.890619867 +0100
+++ gcc/testsuite/g++.dg/concepts/intro2.C	2017-09-14 19:25:21.515218719 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 
--- gcc/testsuite/g++.dg/concepts/class.C.jj	2016-03-09 10:19:18.872620115 +0100
+++ gcc/testsuite/g++.dg/concepts/class.C	2017-09-14 19:25:21.468219285 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Class() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/traits1.C.jj	2016-03-09 10:19:18.875620073 +0100
+++ gcc/testsuite/g++.dg/concepts/traits1.C	2017-09-14 19:25:21.393220188 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Nothrow_assignable() { return __has_nothrow_assign(T); }
--- gcc/testsuite/g++.dg/concepts/req5.C.jj	2016-07-21 08:59:52.238549733 +0200
+++ gcc/testsuite/g++.dg/concepts/req5.C	2017-09-14 19:25:21.381220333 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 struct fool { };
 
--- gcc/testsuite/g++.dg/concepts/var-concept5.C.jj	2016-10-05 17:01:31.574636987 +0200
+++ gcc/testsuite/g++.dg/concepts/var-concept5.C	2017-09-14 19:25:21.814215117 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T1, typename T2>
 concept bool C1 = true;
--- gcc/testsuite/g++.dg/concepts/fn-concept2.C.jj	2016-03-09 10:19:18.903619688 +0100
+++ gcc/testsuite/g++.dg/concepts/fn-concept2.C	2017-09-14 19:25:21.595217755 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept auto C1() { return 0; } // { dg-error "deduced return type" }
--- gcc/testsuite/g++.dg/concepts/traits2.C.jj	2016-03-09 10:19:18.898619757 +0100
+++ gcc/testsuite/g++.dg/concepts/traits2.C	2017-09-14 19:25:21.842214780 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Nothrow_assignable() { return __has_nothrow_assign(T); }
--- gcc/testsuite/g++.dg/concepts/placeholder2.C.jj	2016-03-09 10:19:18.828620720 +0100
+++ gcc/testsuite/g++.dg/concepts/placeholder2.C	2017-09-14 19:25:21.471219249 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Check argument deduction constraints.
 // TODO: We shoul have more of these...
--- gcc/testsuite/g++.dg/concepts/class6.C.jj	2016-03-09 10:19:18.906619647 +0100
+++ gcc/testsuite/g++.dg/concepts/class6.C	2017-09-14 19:25:21.333220911 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool One() { return sizeof(T) >= 4; }
--- gcc/testsuite/g++.dg/concepts/memtmpl1.C.jj	2016-06-24 12:59:21.220434997 +0200
+++ gcc/testsuite/g++.dg/concepts/memtmpl1.C	2017-09-14 19:25:21.858214587 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T>
 struct A {
--- gcc/testsuite/g++.dg/concepts/friend2.C.jj	2016-03-09 10:19:18.876620060 +0100
+++ gcc/testsuite/g++.dg/concepts/friend2.C	2017-09-14 19:25:21.445219562 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Eq() { return requires(T t) { t == t; }; }
--- gcc/testsuite/g++.dg/concepts/template-parm3.C.jj	2016-03-09 10:19:18.906619647 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm3.C	2017-09-14 19:25:21.568218080 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C1 = __is_same_as(T, int);
--- gcc/testsuite/g++.dg/concepts/template-parm10.C.jj	2016-03-09 10:19:18.901619716 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm10.C	2017-09-14 19:25:21.389220236 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<int N, class T>
   concept bool P() { return true; }
--- gcc/testsuite/g++.dg/concepts/explicit-spec1.C.jj	2016-03-09 10:19:18.898619757 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-spec1.C	2017-09-14 19:25:21.806215214 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 
--- gcc/testsuite/g++.dg/concepts/explicit-spec3.C.jj	2016-03-09 10:19:18.863620238 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-spec3.C	2017-09-14 19:25:21.689216623 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/var-templ2.C.jj	2016-03-09 10:19:18.855620348 +0100
+++ gcc/testsuite/g++.dg/concepts/var-templ2.C	2017-09-14 19:25:21.326220995 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67139
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T>
 constexpr typename T::type::value_type _v = T::type::value;
--- gcc/testsuite/g++.dg/concepts/intro5.C.jj	2016-03-09 10:19:18.867620183 +0100
+++ gcc/testsuite/g++.dg/concepts/intro5.C	2017-09-14 19:25:21.337220863 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T, typename U = int>
   concept bool C()
--- gcc/testsuite/g++.dg/concepts/deduction-constraint1.C.jj	2016-03-09 10:19:18.874620087 +0100
+++ gcc/testsuite/g++.dg/concepts/deduction-constraint1.C	2017-09-14 19:25:21.697216527 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67007
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class U>
 concept bool A =
--- gcc/testsuite/g++.dg/concepts/iconv1.C.jj	2016-03-09 10:19:18.887619908 +0100
+++ gcc/testsuite/g++.dg/concepts/iconv1.C	2017-09-14 19:25:21.426219791 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67240
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 int foo(int x)
 {
--- gcc/testsuite/g++.dg/concepts/constrained-parm.C.jj	2016-03-09 10:19:18.859620293 +0100
+++ gcc/testsuite/g++.dg/concepts/constrained-parm.C	2017-09-14 19:25:21.501218887 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/template-template-parm1.C.jj	2016-03-09 10:19:18.827620734 +0100
+++ gcc/testsuite/g++.dg/concepts/template-template-parm1.C	2017-09-14 19:25:21.786215455 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66937
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <tuple>
 
--- gcc/testsuite/g++.dg/concepts/var-concept3.C.jj	2016-03-09 10:19:18.864620225 +0100
+++ gcc/testsuite/g++.dg/concepts/var-concept3.C	2017-09-14 19:25:21.418219887 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C1 = __is_class(T);
--- gcc/testsuite/g++.dg/concepts/class3.C.jj	2016-03-09 10:19:18.855620348 +0100
+++ gcc/testsuite/g++.dg/concepts/class3.C	2017-09-14 19:25:21.542218394 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/memfun2.C.jj	2016-08-06 12:11:34.093718135 +0200
+++ gcc/testsuite/g++.dg/concepts/memfun2.C	2017-09-14 19:25:21.414219935 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/72415
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<int... Indices>
 struct indices {};
--- gcc/testsuite/g++.dg/concepts/req1.C.jj	2016-03-09 10:19:18.828620720 +0100
+++ gcc/testsuite/g++.dg/concepts/req1.C	2017-09-14 19:25:21.693216575 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Class () { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/disjunction1.C.jj	2016-03-09 10:19:18.889619881 +0100
+++ gcc/testsuite/g++.dg/concepts/disjunction1.C	2017-09-14 19:25:21.875214383 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66962
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <typename> struct remove_cv;
 template <typename> struct is_reference;
--- gcc/testsuite/g++.dg/concepts/req17.C.jj	2016-03-09 10:19:18.858620307 +0100
+++ gcc/testsuite/g++.dg/concepts/req17.C	2017-09-14 19:25:21.656217020 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67018
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <typename T>
 constexpr bool Val = true;
--- gcc/testsuite/g++.dg/concepts/pr65848.C.jj	2016-03-09 10:19:18.826620747 +0100
+++ gcc/testsuite/g++.dg/concepts/pr65848.C	2017-09-14 19:25:21.822215021 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Performance test... This should be fast.
 
--- gcc/testsuite/g++.dg/concepts/placeholder4.C.jj	2016-03-09 10:19:18.889619881 +0100
+++ gcc/testsuite/g++.dg/concepts/placeholder4.C	2017-09-14 19:25:21.352220682 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66218
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T, class U>
 concept bool Same = __is_same_as(T, U);
--- gcc/testsuite/g++.dg/concepts/decl-diagnose.C.jj	2016-10-31 13:28:10.829386110 +0100
+++ gcc/testsuite/g++.dg/concepts/decl-diagnose.C	2017-09-14 19:25:21.461219369 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 typedef concept int CINT; // { dg-error "'concept' cannot appear in a typedef declaration" }
 
--- gcc/testsuite/g++.dg/concepts/intro7.C.jj	2016-03-09 10:19:18.904619674 +0100
+++ gcc/testsuite/g++.dg/concepts/intro7.C	2017-09-14 19:25:21.837214840 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66985
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <template <class> class T>
 concept bool _Valid = requires { typename T<int>; };
--- gcc/testsuite/g++.dg/concepts/pr68683.C.jj	2016-03-09 10:19:18.858620307 +0100
+++ gcc/testsuite/g++.dg/concepts/pr68683.C	2017-09-14 19:25:21.810215166 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <typename, typename>
 struct is_same {
--- gcc/testsuite/g++.dg/concepts/partial-spec4.C.jj	2016-03-09 10:19:18.908619619 +0100
+++ gcc/testsuite/g++.dg/concepts/partial-spec4.C	2017-09-14 19:25:21.685216671 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T> concept bool is_int = __is_same_as(T,int);
 
--- gcc/testsuite/g++.dg/concepts/template-parm5.C.jj	2016-03-09 10:19:18.871620128 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm5.C	2017-09-14 19:25:21.603217659 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C1 = __is_same_as(T, int);
--- gcc/testsuite/g++.dg/concepts/explicit-inst1.C.jj	2016-03-09 10:19:18.874620087 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-inst1.C	2017-09-14 19:25:21.533218502 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/class-deduction1.C.jj	2016-10-05 17:01:31.574636987 +0200
+++ gcc/testsuite/g++.dg/concepts/class-deduction1.C	2017-09-14 19:25:21.453219466 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T>
 concept bool Isint = __is_same_as(T,int);
--- gcc/testsuite/g++.dg/concepts/class1.C.jj	2016-03-09 10:19:18.892619839 +0100
+++ gcc/testsuite/g++.dg/concepts/class1.C	2017-09-14 19:25:21.866214491 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/req15.C.jj	2016-03-09 10:19:18.894619812 +0100
+++ gcc/testsuite/g++.dg/concepts/req15.C	2017-09-14 19:25:21.701216478 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66832
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T, class U, unsigned N>
   requires requires (T& t, U &u) { t.foo(); u.foo(); }
--- gcc/testsuite/g++.dg/concepts/memfun.C.jj	2016-03-09 10:19:18.867620183 +0100
+++ gcc/testsuite/g++.dg/concepts/memfun.C	2017-09-14 19:25:21.762215744 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run}
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 
--- gcc/testsuite/g++.dg/concepts/pr68434.C.jj	2016-03-09 10:19:18.876620060 +0100
+++ gcc/testsuite/g++.dg/concepts/pr68434.C	2017-09-14 19:25:21.672216828 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class>
 concept bool C1 () {
--- gcc/testsuite/g++.dg/concepts/inherit-ctor4.C.jj	2016-03-09 10:19:18.894619812 +0100
+++ gcc/testsuite/g++.dg/concepts/inherit-ctor4.C	2017-09-14 19:25:21.782215503 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/partial-spec6.C.jj	2016-03-09 10:19:18.873620101 +0100
+++ gcc/testsuite/g++.dg/concepts/partial-spec6.C	2017-09-14 19:25:21.526218586 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67152
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T>
 concept bool HasType = requires { typename T::type; };
--- gcc/testsuite/g++.dg/concepts/var-templ1.C.jj	2016-07-21 08:59:52.268549342 +0200
+++ gcc/testsuite/g++.dg/concepts/var-templ1.C	2017-09-14 19:25:21.766215696 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67117
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T>
   requires false
--- gcc/testsuite/g++.dg/concepts/template-parm8.C.jj	2016-03-09 10:19:18.859620293 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm8.C	2017-09-14 19:25:21.830214925 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/explicit-inst3.C.jj	2016-03-09 10:19:18.908619619 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-inst3.C	2017-09-14 19:25:21.737216045 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/class4.C.jj	2016-03-09 10:19:18.869620156 +0100
+++ gcc/testsuite/g++.dg/concepts/class4.C	2017-09-14 19:25:21.373220429 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Class() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/req6.C.jj	2016-07-21 08:59:52.265549381 +0200
+++ gcc/testsuite/g++.dg/concepts/req6.C	2017-09-14 19:25:21.579217948 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 struct X { };
 int operator==(X, X) { return 0; }
--- gcc/testsuite/g++.dg/concepts/fn8.C.jj	2016-03-09 10:19:18.886619922 +0100
+++ gcc/testsuite/g++.dg/concepts/fn8.C	2017-09-14 19:25:21.643217177 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Class() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/class5.C.jj	2016-03-09 10:19:18.893619826 +0100
+++ gcc/testsuite/g++.dg/concepts/class5.C	2017-09-14 19:25:21.483219104 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool One() { return sizeof(T) >= 4; }
--- gcc/testsuite/g++.dg/concepts/placeholder5.C.jj	2016-03-09 10:19:18.901619716 +0100
+++ gcc/testsuite/g++.dg/concepts/placeholder5.C	2017-09-14 19:25:21.494218972 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T, class U>
 concept bool Same = __is_same_as(T, U);
--- gcc/testsuite/g++.dg/concepts/req16.C.jj	2016-03-09 10:19:18.907619633 +0100
+++ gcc/testsuite/g++.dg/concepts/req16.C	2017-09-14 19:25:21.890214202 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66988
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <type_traits>
 
--- gcc/testsuite/g++.dg/concepts/req10.C.jj	2016-03-09 10:19:18.868620170 +0100
+++ gcc/testsuite/g++.dg/concepts/req10.C	2017-09-14 19:25:21.546218345 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Test that standard conversions are checked with
 // implicit conversion constraints.
--- gcc/testsuite/g++.dg/concepts/var-concept2.C.jj	2016-03-09 10:19:18.827620734 +0100
+++ gcc/testsuite/g++.dg/concepts/var-concept2.C	2017-09-14 19:25:21.879214334 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C1 = __is_class(T);
--- gcc/testsuite/g++.dg/concepts/auto3.C.jj	2016-03-09 10:19:18.870620142 +0100
+++ gcc/testsuite/g++.dg/concepts/auto3.C	2017-09-14 19:25:21.508218803 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class...> class tuple {};
 
--- gcc/testsuite/g++.dg/concepts/generic-fn-err.C.jj	2016-03-09 10:19:18.895619798 +0100
+++ gcc/testsuite/g++.dg/concepts/generic-fn-err.C	2017-09-14 19:25:21.405220044 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/pr65552.C.jj	2016-03-09 10:19:18.868620170 +0100
+++ gcc/testsuite/g++.dg/concepts/pr65552.C	2017-09-14 19:25:21.749215900 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool Concept() {
--- gcc/testsuite/g++.dg/concepts/partial-concept-id2.C.jj	2016-03-09 10:19:18.872620115 +0100
+++ gcc/testsuite/g++.dg/concepts/partial-concept-id2.C	2017-09-14 19:25:21.778215551 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Make sure that we check partial concept ids
 // with variable concepts.
--- gcc/testsuite/g++.dg/concepts/fn1.C.jj	2016-03-09 10:19:18.897619771 +0100
+++ gcc/testsuite/g++.dg/concepts/fn1.C	2017-09-14 19:25:21.564218129 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/partial-spec.C.jj	2016-03-09 10:19:18.854620362 +0100
+++ gcc/testsuite/g++.dg/concepts/partial-spec.C	2017-09-14 19:25:21.561218165 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Check that constraints don't break unconstrained partial
 // specializations.
--- gcc/testsuite/g++.dg/concepts/template-parm12.C.jj	2016-03-09 10:19:18.865620211 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm12.C	2017-09-14 19:25:21.538218442 +0200
@@ -1,5 +1,5 @@ 
 // Conceptized version of template/ttp23.C
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T> concept bool Foo = true;
 
--- gcc/testsuite/g++.dg/concepts/diagnostic1.C.jj	2016-07-21 08:59:52.267549355 +0200
+++ gcc/testsuite/g++.dg/concepts/diagnostic1.C	2017-09-14 19:25:21.652217069 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67159
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T, class U>
 concept bool SameAs = __is_same_as(T, U);
--- gcc/testsuite/g++.dg/concepts/intro1.C.jj	2016-03-09 10:19:18.866620197 +0100
+++ gcc/testsuite/g++.dg/concepts/intro1.C	2017-09-14 19:25:21.794215358 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C = __is_class(T);
--- gcc/testsuite/g++.dg/concepts/explicit-inst4.C.jj	2016-03-09 10:19:18.860620280 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-inst4.C	2017-09-14 19:25:21.345220766 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/req18.C.jj	2016-03-09 10:19:18.871620128 +0100
+++ gcc/testsuite/g++.dg/concepts/req18.C	2017-09-14 19:25:21.583217900 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class> struct all_same {
   static constexpr bool value = 1;
--- gcc/testsuite/g++.dg/concepts/explicit-spec5.C.jj	2016-03-09 10:19:18.899619743 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-spec5.C	2017-09-14 19:25:21.397220140 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 
--- gcc/testsuite/g++.dg/concepts/var-concept6.C.jj	2016-03-09 10:19:18.828620720 +0100
+++ gcc/testsuite/g++.dg/concepts/var-concept6.C	2017-09-14 19:25:21.457219417 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T>
 concept int C = true;		// { dg-error "bool" }
--- gcc/testsuite/g++.dg/concepts/fn9.C.jj	2016-03-09 10:19:18.899619743 +0100
+++ gcc/testsuite/g++.dg/concepts/fn9.C	2017-09-14 19:25:21.385220285 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 
--- gcc/testsuite/g++.dg/concepts/req2.C.jj	2016-03-09 10:19:18.864620225 +0100
+++ gcc/testsuite/g++.dg/concepts/req2.C	2017-09-14 19:25:21.846214732 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Class () { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/template-parm7.C.jj	2016-03-09 10:19:18.908619619 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm7.C	2017-09-14 19:25:21.409219996 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename... Ts> struct are_same;
 
--- gcc/testsuite/g++.dg/concepts/req14.C.jj	2016-03-09 10:19:18.870620142 +0100
+++ gcc/testsuite/g++.dg/concepts/req14.C	2017-09-14 19:25:21.826214973 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66758
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T, class U>
 concept bool C = requires (T t, U u) { t + u; };
--- gcc/testsuite/g++.dg/concepts/template-parm6.C.jj	2016-03-09 10:19:18.895619798 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm6.C	2017-09-14 19:25:21.553218261 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename... Ts> struct are_same;
 
--- gcc/testsuite/g++.dg/concepts/variadic4.C.jj	2016-08-11 17:56:45.313501819 +0200
+++ gcc/testsuite/g++.dg/concepts/variadic4.C	2017-09-14 19:25:21.668216876 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/73456
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename...> struct list {};
 
--- gcc/testsuite/g++.dg/concepts/fn6.C.jj	2016-03-09 10:19:18.909619606 +0100
+++ gcc/testsuite/g++.dg/concepts/fn6.C	2017-09-14 19:25:21.498218924 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Redefinition errors.
 
--- gcc/testsuite/g++.dg/concepts/req-neg1.C.jj	2016-03-09 10:19:18.853620376 +0100
+++ gcc/testsuite/g++.dg/concepts/req-neg1.C	2017-09-14 19:25:21.475219201 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 void f1(int a) requires true;         // OK
 auto f2(int a) -> bool requires true; // OK
--- gcc/testsuite/g++.dg/concepts/alias3.C.jj	2016-03-09 10:19:18.865620211 +0100
+++ gcc/testsuite/g++.dg/concepts/alias3.C	2017-09-14 19:25:21.356220634 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/expression2.C.jj	2016-07-21 08:59:52.264549394 +0200
+++ gcc/testsuite/g++.dg/concepts/expression2.C	2017-09-14 19:25:21.557218213 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool C1()
--- gcc/testsuite/g++.dg/concepts/partial-spec3.C.jj	2016-03-09 10:19:18.895619798 +0100
+++ gcc/testsuite/g++.dg/concepts/partial-spec3.C	2017-09-14 19:25:21.631217322 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T> struct A { };
 template <class T> requires false struct A<T*> { };
--- gcc/testsuite/g++.dg/concepts/expression3.C.jj	2016-03-09 10:19:18.874620087 +0100
+++ gcc/testsuite/g++.dg/concepts/expression3.C	2017-09-14 19:25:21.377220381 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool C()
--- gcc/testsuite/g++.dg/concepts/memfun-err.C.jj	2017-06-30 16:51:53.019997827 +0200
+++ gcc/testsuite/g++.dg/concepts/memfun-err.C	2017-09-14 19:25:21.639217225 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run}
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 
 template<typename T>
--- gcc/testsuite/g++.dg/concepts/pr66091.C.jj	2016-03-09 10:19:18.897619771 +0100
+++ gcc/testsuite/g++.dg/concepts/pr66091.C	2017-09-14 19:25:21.618217478 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool C1()
--- gcc/testsuite/g++.dg/concepts/explicit-spec2.C.jj	2016-03-09 10:19:18.909619606 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-spec2.C	2017-09-14 19:25:21.599217707 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/equiv.C.jj	2016-03-09 10:19:18.856620335 +0100
+++ gcc/testsuite/g++.dg/concepts/equiv.C	2017-09-14 19:25:21.870214443 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Check equivalence of short- and longhand declarations.
 
--- gcc/testsuite/g++.dg/concepts/friend1.C.jj	2016-05-30 23:22:55.872085054 +0200
+++ gcc/testsuite/g++.dg/concepts/friend1.C	2017-09-14 19:25:21.721216238 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Eq() { return requires(T t) { t == t; }; }
--- gcc/testsuite/g++.dg/concepts/fn4.C.jj	2016-03-09 10:19:18.875620073 +0100
+++ gcc/testsuite/g++.dg/concepts/fn4.C	2017-09-14 19:25:21.437219658 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/var-templ3.C.jj	2017-01-19 16:58:14.979361087 +0100
+++ gcc/testsuite/g++.dg/concepts/var-templ3.C	2017-09-14 19:25:21.774215599 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/68666
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 struct A {
   template <class>
--- gcc/testsuite/g++.dg/concepts/explicit-inst2.C.jj	2016-03-09 10:19:18.896619784 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-inst2.C	2017-09-14 19:25:21.757215804 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/alias2.C.jj	2016-03-09 10:19:18.853620376 +0100
+++ gcc/testsuite/g++.dg/concepts/alias2.C	2017-09-14 19:25:21.660216972 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/regress/alias-decl-42.C.jj	2017-04-04 19:51:04.087124217 +0200
+++ gcc/testsuite/g++.dg/concepts/regress/alias-decl-42.C	2017-09-14 19:25:21.622217430 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/59200
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 struct A
 {
--- gcc/testsuite/g++.dg/concepts/placeholder6.C.jj	2016-03-09 10:19:18.829620706 +0100
+++ gcc/testsuite/g++.dg/concepts/placeholder6.C	2017-09-14 19:25:21.635217273 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <int I> struct B { static const int i = I; };
 template <int I> concept bool Few = I < 10;
--- gcc/testsuite/g++.dg/concepts/fn10.C.jj	2016-03-09 10:19:18.888619894 +0100
+++ gcc/testsuite/g++.dg/concepts/fn10.C	2017-09-14 19:25:21.607217611 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Test that constraint satisfaction checks work even when
 // processing template declarations.
--- gcc/testsuite/g++.dg/concepts/req3.C.jj	2016-03-09 10:19:18.890619867 +0100
+++ gcc/testsuite/g++.dg/concepts/req3.C	2017-09-14 19:25:21.360220586 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Class () { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/variadic2.C.jj	2016-07-21 08:59:52.265549381 +0200
+++ gcc/testsuite/g++.dg/concepts/variadic2.C	2017-09-14 19:25:21.818215069 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T> concept bool Copyable = requires (T t) { T(t); };
 template <class T> concept bool Constructable = requires { T(); };
--- gcc/testsuite/g++.dg/concepts/pr65636.C.jj	2016-03-09 10:19:18.856620335 +0100
+++ gcc/testsuite/g++.dg/concepts/pr65636.C	2017-09-14 19:25:21.549218309 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 using TD = int;
 
--- gcc/testsuite/g++.dg/concepts/intro6.C.jj	2016-03-09 10:19:18.892619839 +0100
+++ gcc/testsuite/g++.dg/concepts/intro6.C	2017-09-14 19:25:21.341220815 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67003
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 namespace X {
   template<class>
--- gcc/testsuite/g++.dg/concepts/class2.C.jj	2016-03-09 10:19:18.904619674 +0100
+++ gcc/testsuite/g++.dg/concepts/class2.C	2017-09-14 19:25:21.883214286 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/fn2.C.jj	2016-03-09 10:19:18.909619606 +0100
+++ gcc/testsuite/g++.dg/concepts/fn2.C	2017-09-14 19:25:21.519218671 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/req20.C.jj	2016-07-21 08:59:52.266549368 +0200
+++ gcc/testsuite/g++.dg/concepts/req20.C	2017-09-14 19:25:21.611217562 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T> concept bool C = true;
 
--- gcc/testsuite/g++.dg/concepts/req8.C.jj	2016-03-09 10:19:18.903619688 +0100
+++ gcc/testsuite/g++.dg/concepts/req8.C	2017-09-14 19:25:21.802215262 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do compile }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Check that type requirements are normalized correctly.
 
--- gcc/testsuite/g++.dg/concepts/placeholder1.C.jj	2016-03-09 10:19:18.900619729 +0100
+++ gcc/testsuite/g++.dg/concepts/placeholder1.C	2017-09-14 19:25:21.401220092 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T, typename U>
 struct is_same
--- gcc/testsuite/g++.dg/concepts/pr65854.C.jj	2016-03-09 10:19:18.871620128 +0100
+++ gcc/testsuite/g++.dg/concepts/pr65854.C	2017-09-14 19:25:21.433219706 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Handle alias templates in type requirements.
 
--- gcc/testsuite/g++.dg/concepts/member-concept.C.jj	2016-03-09 10:19:18.827620734 +0100
+++ gcc/testsuite/g++.dg/concepts/member-concept.C	2017-09-14 19:25:21.833214889 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 struct Base {
   template<typename T>
--- gcc/testsuite/g++.dg/concepts/template-parm2.C.jj	2016-03-09 10:19:18.893619826 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm2.C	2017-09-14 19:25:21.627217370 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C1 = __is_same_as(T, int);
--- gcc/testsuite/g++.dg/concepts/variadic1.C.jj	2016-03-09 10:19:18.863620238 +0100
+++ gcc/testsuite/g++.dg/concepts/variadic1.C	2017-09-14 19:25:21.505218839 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66712
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T, class...Args>
 concept bool _Constructible_ =
--- gcc/testsuite/g++.dg/concepts/fn7.C.jj	2016-03-09 10:19:18.862620252 +0100
+++ gcc/testsuite/g++.dg/concepts/fn7.C	2017-09-14 19:25:21.587217852 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do link }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // FIXME: What is this actually testing?
 
--- gcc/testsuite/g++.dg/concepts/intro4.C.jj	2016-03-09 10:19:18.854620362 +0100
+++ gcc/testsuite/g++.dg/concepts/intro4.C	2017-09-14 19:25:21.770215647 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename ... T>
   concept bool C1 = true;
--- gcc/testsuite/g++.dg/concepts/req13.C.jj	2016-03-09 10:19:18.857620321 +0100
+++ gcc/testsuite/g++.dg/concepts/req13.C	2017-09-14 19:25:21.464219333 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66758
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T, class...Args>
 concept bool Constructible =
--- gcc/testsuite/g++.dg/concepts/inherit-ctor3.C.jj	2016-03-09 10:19:18.869620156 +0100
+++ gcc/testsuite/g++.dg/concepts/inherit-ctor3.C	2017-09-14 19:25:21.647217129 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/explicit-spec6.C.jj	2016-03-09 10:19:18.826620747 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-spec6.C	2017-09-14 19:25:21.479219152 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 struct A {
--- gcc/testsuite/g++.dg/concepts/auto1.C.jj	2016-03-09 10:19:18.905619661 +0100
+++ gcc/testsuite/g++.dg/concepts/auto1.C	2017-09-14 19:25:21.741215997 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T1, class T2> class A { };
 
--- gcc/testsuite/g++.dg/concepts/alias1.C.jj	2016-03-09 10:19:18.902619702 +0100
+++ gcc/testsuite/g++.dg/concepts/alias1.C	2017-09-14 19:25:21.676216780 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/fn-concept1.C.jj	2016-03-09 10:19:18.890619867 +0100
+++ gcc/testsuite/g++.dg/concepts/fn-concept1.C	2017-09-14 19:25:21.529218550 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Tuple() { // { dg-error "multiple statements" }
--- gcc/testsuite/g++.dg/concepts/template-parm11.C.jj	2016-03-09 10:19:18.852620390 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm11.C	2017-09-14 19:25:21.486219068 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool NameProvider()
--- gcc/testsuite/g++.dg/concepts/explicit-spec4.C.jj	2016-03-09 10:19:18.886619922 +0100
+++ gcc/testsuite/g++.dg/concepts/explicit-spec4.C	2017-09-14 19:25:21.512218755 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 
--- gcc/testsuite/g++.dg/concepts/partial-concept-id1.C.jj	2016-03-09 10:19:18.858620307 +0100
+++ gcc/testsuite/g++.dg/concepts/partial-concept-id1.C	2017-09-14 19:25:21.365220526 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool Type() { return true; }
--- gcc/testsuite/g++.dg/concepts/req9.C.jj	2016-03-09 10:19:18.854620362 +0100
+++ gcc/testsuite/g++.dg/concepts/req9.C	2017-09-14 19:25:21.709216382 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 struct S1 {};
--- gcc/testsuite/g++.dg/concepts/req4.C.jj	2016-07-21 08:59:52.267549355 +0200
+++ gcc/testsuite/g++.dg/concepts/req4.C	2017-09-14 19:25:21.449219514 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 struct fool {
   constexpr fool operator&&(fool) const { return {}; }
--- gcc/testsuite/g++.dg/concepts/pr65681.C.jj	2016-03-09 10:19:18.899619743 +0100
+++ gcc/testsuite/g++.dg/concepts/pr65681.C	2017-09-14 19:25:21.575217996 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool C()
--- gcc/testsuite/g++.dg/concepts/req7.C.jj	2016-03-09 10:19:18.891619853 +0100
+++ gcc/testsuite/g++.dg/concepts/req7.C	2017-09-14 19:25:21.717216286 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <vector>
 
--- gcc/testsuite/g++.dg/concepts/req12.C.jj	2016-03-09 10:19:18.906619647 +0100
+++ gcc/testsuite/g++.dg/concepts/req12.C	2017-09-14 19:25:21.790215406 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66218
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <type_traits>
 
--- gcc/testsuite/g++.dg/concepts/fn5.C.jj	2016-03-09 10:19:18.897619771 +0100
+++ gcc/testsuite/g++.dg/concepts/fn5.C	2017-09-14 19:25:21.490219020 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Check shorthand notation.
 
--- gcc/testsuite/g++.dg/concepts/alias4.C.jj	2016-03-09 10:19:18.891619853 +0100
+++ gcc/testsuite/g++.dg/concepts/alias4.C	2017-09-14 19:25:21.422219839 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/generic-fn.C.jj	2016-03-09 10:19:18.866620197 +0100
+++ gcc/testsuite/g++.dg/concepts/generic-fn.C	2017-09-14 19:25:21.895214142 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 #include <type_traits>
--- gcc/testsuite/g++.dg/concepts/feature-macro.C.jj	2016-03-09 10:19:18.862620252 +0100
+++ gcc/testsuite/g++.dg/concepts/feature-macro.C	2017-09-14 19:25:21.753215852 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #ifndef __cpp_concepts
 #error __cpp_concepts not defined
--- gcc/testsuite/g++.dg/concepts/req19.C.jj	2016-07-21 08:59:52.266549368 +0200
+++ gcc/testsuite/g++.dg/concepts/req19.C	2017-09-14 19:25:21.887214238 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 struct B
 {
--- gcc/testsuite/g++.dg/concepts/placeholder3.C.jj	2016-03-09 10:19:18.864620225 +0100
+++ gcc/testsuite/g++.dg/concepts/placeholder3.C	2017-09-14 19:25:21.664216924 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66218
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T, class U>
 concept bool Same = __is_same_as(T, U);
--- gcc/testsuite/g++.dg/concepts/intro3.C.jj	2016-03-09 10:19:18.903619688 +0100
+++ gcc/testsuite/g++.dg/concepts/intro3.C	2017-09-14 19:25:21.369220477 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename ... T>
   concept bool C1 = true;
--- gcc/testsuite/g++.dg/concepts/partial-spec5.C.jj	2016-03-09 10:19:18.860620280 +0100
+++ gcc/testsuite/g++.dg/concepts/partial-spec5.C	2017-09-14 19:25:21.705216430 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67138
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T>
 concept bool _Auto = true;
--- gcc/testsuite/g++.dg/concepts/template-parm4.C.jj	2016-03-09 10:19:18.857620321 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm4.C	2017-09-14 19:25:21.329220959 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C1 = __is_same_as(T, int);
--- gcc/testsuite/g++.dg/concepts/dr1430.C.jj	2016-07-21 08:59:52.266549368 +0200
+++ gcc/testsuite/g++.dg/concepts/dr1430.C	2017-09-14 19:25:21.615217514 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/66092
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <type_traits>
 
--- gcc/testsuite/g++.dg/concepts/pr65634.C.jj	2016-03-09 10:19:18.892619839 +0100
+++ gcc/testsuite/g++.dg/concepts/pr65634.C	2017-09-14 19:25:21.349220718 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool C1() {
--- gcc/testsuite/g++.dg/concepts/var-concept4.C.jj	2016-03-09 10:19:18.889619881 +0100
+++ gcc/testsuite/g++.dg/concepts/var-concept4.C	2017-09-14 19:25:21.429219755 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T, typename U>
 concept bool Same = __is_same_as(T, U);
--- gcc/testsuite/g++.dg/concepts/pr67249.C.jj	2016-03-09 10:19:18.887619908 +0100
+++ gcc/testsuite/g++.dg/concepts/pr67249.C	2017-09-14 19:25:21.798215310 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<class T> concept bool C1 = true;
 template<class A, class B> struct Pair {};
--- gcc/testsuite/g++.dg/concepts/expression.C.jj	2016-03-09 10:19:18.887619908 +0100
+++ gcc/testsuite/g++.dg/concepts/expression.C	2017-09-14 19:25:21.854214636 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 #include <iostream>
--- gcc/testsuite/g++.dg/concepts/pr65575.C.jj	2016-03-09 10:19:18.907619633 +0100
+++ gcc/testsuite/g++.dg/concepts/pr65575.C	2017-09-14 19:25:21.713216334 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool C = false;
--- gcc/testsuite/g++.dg/concepts/partial-spec2.C.jj	2016-03-09 10:19:18.873620101 +0100
+++ gcc/testsuite/g++.dg/concepts/partial-spec2.C	2017-09-14 19:25:21.850214684 +0200
@@ -1,5 +1,5 @@ 
 // PR c++/67084
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template <class T>
 constexpr bool p = false;
--- gcc/testsuite/g++.dg/concepts/template-parm9.C.jj	2016-03-09 10:19:18.872620115 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm9.C	2017-09-14 19:25:21.862214539 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/inherit-ctor1.C.jj	2016-03-09 10:19:18.905619661 +0100
+++ gcc/testsuite/g++.dg/concepts/inherit-ctor1.C	2017-09-14 19:25:21.441219610 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/equiv2.C.jj	2016-03-09 10:19:18.852620390 +0100
+++ gcc/testsuite/g++.dg/concepts/equiv2.C	2017-09-14 19:25:21.571218044 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 
 // template<typename T>
--- gcc/testsuite/g++.dg/concepts/req11.C.jj	2016-03-09 10:19:18.893619826 +0100
+++ gcc/testsuite/g++.dg/concepts/req11.C	2017-09-14 19:25:21.733216093 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 // Check that we can evaluate constant requires-expressions
 // as constant expressions, for the curious case when they
--- gcc/testsuite/g++.dg/concepts/template-parm1.C.jj	2016-03-09 10:19:18.868620170 +0100
+++ gcc/testsuite/g++.dg/concepts/template-parm1.C	2017-09-14 19:25:21.522218634 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C1 = __is_same_as(T, int);
--- gcc/testsuite/g++.dg/concepts/inherit-ctor2.C.jj	2016-03-09 10:19:18.856620335 +0100
+++ gcc/testsuite/g++.dg/concepts/inherit-ctor2.C	2017-09-14 19:25:21.681216719 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
   concept bool C() { return __is_class(T); }
--- gcc/testsuite/g++.dg/concepts/var-concept1.C.jj	2016-03-09 10:19:18.900619729 +0100
+++ gcc/testsuite/g++.dg/concepts/var-concept1.C	2017-09-14 19:25:21.745215948 +0200
@@ -1,4 +1,4 @@ 
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 template<typename T>
 concept bool C1 = __is_class(T);
--- gcc/testsuite/g++.dg/concepts/fn3.C.jj	2016-03-09 10:19:18.861620266 +0100
+++ gcc/testsuite/g++.dg/concepts/fn3.C	2017-09-14 19:25:21.591217803 +0200
@@ -1,5 +1,5 @@ 
 // { dg-do run }
-// { dg-options "-std=c++1z -fconcepts" }
+// { dg-options "-std=c++17 -fconcepts" }
 
 #include <cassert>
 
--- gcc/testsuite/g++.dg/torture/pr46364.C.jj	2016-12-08 09:23:26.734177777 +0100
+++ gcc/testsuite/g++.dg/torture/pr46364.C	2017-09-14 19:25:21.906214009 +0200
@@ -3,7 +3,7 @@ 
 
 void a()
 #if __cplusplus <= 201402L
-throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 ;
 void b(std::string const &);
--- gcc/testsuite/g++.dg/torture/stackalign/eh-alloca-1.C.jj	2017-06-19 08:27:56.018341237 +0200
+++ gcc/testsuite/g++.dg/torture/stackalign/eh-alloca-1.C	2017-09-14 19:25:21.925213780 +0200
@@ -29,7 +29,7 @@  struct B {};
 void
 foo (int size)
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   char *p = (char*) __builtin_alloca (size + 1);
--- gcc/testsuite/g++.dg/torture/stackalign/eh-fastcall-1.C.jj	2016-12-08 09:23:26.742177675 +0100
+++ gcc/testsuite/g++.dg/torture/stackalign/eh-fastcall-1.C	2017-09-14 19:25:21.910213961 +0200
@@ -23,7 +23,7 @@  __attribute__ ((fastcall))
 void
 foo (int j, int k, int m, int n, int o)
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   aligned i;
--- gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-1.C.jj	2017-06-19 08:27:56.017341249 +0200
+++ gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-1.C	2017-09-14 19:25:21.914213913 +0200
@@ -30,7 +30,7 @@  struct B {};
 void
 foo (const char *fmt, ...)
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   va_list arg;
--- gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-2.C.jj	2017-06-19 08:27:56.017341249 +0200
+++ gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-2.C	2017-09-14 19:25:21.938213624 +0200
@@ -31,7 +31,7 @@  struct B {};
 void
 test (va_list arg)
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   char *p;
--- gcc/testsuite/g++.dg/torture/stackalign/eh-global-1.C.jj	2017-06-19 08:27:56.018341237 +0200
+++ gcc/testsuite/g++.dg/torture/stackalign/eh-global-1.C	2017-09-14 19:25:21.921213829 +0200
@@ -23,7 +23,7 @@  struct B {};
 void
 foo (void)
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   aligned i;
--- gcc/testsuite/g++.dg/torture/stackalign/eh-thiscall-1.C.jj	2016-12-08 09:23:26.749177586 +0100
+++ gcc/testsuite/g++.dg/torture/stackalign/eh-thiscall-1.C	2017-09-14 19:25:21.917213877 +0200
@@ -23,7 +23,7 @@  __attribute__ ((thiscall))
 void
 foo (int j, int k, int m, int n, int o)
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   aligned i;
--- gcc/testsuite/g++.dg/torture/stackalign/eh-inline-2.C.jj	2017-06-19 08:27:56.017341249 +0200
+++ gcc/testsuite/g++.dg/torture/stackalign/eh-inline-2.C	2017-09-14 19:25:21.929213732 +0200
@@ -30,7 +30,7 @@  static void
 inline __attribute__((always_inline))
 foo (int size)
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   char *p = (char *) __builtin_alloca (size + 1);
--- gcc/testsuite/g++.dg/torture/stackalign/eh-inline-1.C.jj	2017-06-19 08:27:56.017341249 +0200
+++ gcc/testsuite/g++.dg/torture/stackalign/eh-inline-1.C	2017-09-14 19:25:21.933213684 +0200
@@ -24,7 +24,7 @@  static void
 inline __attribute__((always_inline))
 foo (void)
 #if __cplusplus <= 201402L
-throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (B,A)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   aligned i;
--- gcc/testsuite/g++.dg/torture/pr52918-1.C.jj	2016-12-08 09:23:26.733177789 +0100
+++ gcc/testsuite/g++.dg/torture/pr52918-1.C	2017-09-14 19:25:21.899214094 +0200
@@ -23,13 +23,13 @@  class free_list   {
     __mutex_type&     _M_get_mutex();
     void _M_get(size_t __sz)
 #if __cplusplus <= 201402L
-    throw(bad_alloc)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw(bad_alloc)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
 };
 void  free_list::_M_get(size_t __sz)
 #if __cplusplus <= 201402L
-throw(bad_alloc)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(bad_alloc)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   __mutex_type& __bfl_mutex = _M_get_mutex();
--- gcc/testsuite/g++.dg/torture/pr49394.C.jj	2016-12-08 09:23:26.733177789 +0100
+++ gcc/testsuite/g++.dg/torture/pr49394.C	2017-09-14 19:25:21.902214057 +0200
@@ -6,7 +6,7 @@  struct Mutex
   bool locked;
   ~Mutex ()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   {
     if (locked)
--- gcc/testsuite/g++.dg/torture/pr57190.C.jj	2016-12-08 09:23:26.734177777 +0100
+++ gcc/testsuite/g++.dg/torture/pr57190.C	2017-09-14 19:25:21.942213576 +0200
@@ -21,7 +21,7 @@  class UIException {
 class PasswordDialog {
     void run()
 #if __cplusplus <= 201402L
-    throw (UIException)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw (UIException)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
 };
@@ -29,12 +29,12 @@  class MessageBox  {
 public:
     MessageBox (std::string t)
 #if __cplusplus <= 201402L
-    throw (UIException)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw (UIException)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
     virtual int run()
 #if __cplusplus <= 201402L
-    throw (UIException)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw (UIException)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
 };
@@ -47,7 +47,7 @@  extern "C" {
 sigjmp_buf password_dialog_sig_jmp_buf;
 void PasswordDialog::run()
 #if __cplusplus <= 201402L
-throw (UIException)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (UIException)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   __sigsetjmp (password_dialog_sig_jmp_buf, 1);
--- gcc/testsuite/g++.dg/cpp0x/static_assert8.C.jj	2015-12-07 12:17:54.313688747 +0100
+++ gcc/testsuite/g++.dg/cpp0x/static_assert8.C	2017-09-14 19:25:21.961213347 +0200
@@ -6,4 +6,4 @@  static_assert (1 == 0,); // { dg-error "
 
 static_assert (1 == 0, "oops"); // { dg-error "static assertion failed" }
 
-// { dg-error "static_assert without a message only available with " "" { target { ! c++1z } } 3 }
+// { dg-error "static_assert without a message only available with " "" { target { ! c++17 } } 3 }
--- gcc/testsuite/g++.dg/cpp0x/noexcept19.C.jj	2016-12-08 09:23:26.781177180 +0100
+++ gcc/testsuite/g++.dg/cpp0x/noexcept19.C	2017-09-14 19:25:21.949213491 +0200
@@ -24,7 +24,7 @@  struct D
 {
   D ()
 #if __cplusplus <= 201402L
-  throw (int)			// { dg-warning "deprecated" "" { target { ! c++1z } } }
+  throw (int)			// { dg-warning "deprecated" "" { target { ! c++17 } } }
 #endif
   ;
 };
--- gcc/testsuite/g++.dg/cpp0x/variadic-throw.C.jj	2016-12-08 09:23:26.766177370 +0100
+++ gcc/testsuite/g++.dg/cpp0x/variadic-throw.C	2017-09-14 19:25:21.976213166 +0200
@@ -9,9 +9,9 @@  template<int M, int N> struct pair
 
 template<int... M> struct S
 {
-  template<int... N> static int foo() throw (pair <M, N>...) // { dg-error "mismatched" "" { target { ! c++1z } } }
-  {							     // { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-    return 1;						     // { dg-warning "deprecated" "" { target { ! c++1z } } .-2 }
+  template<int... N> static int foo() throw (pair <M, N>...) // { dg-error "mismatched" "" { target { ! c++17 } } }
+  {							     // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+    return 1;						     // { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
   }
 };
 
@@ -22,5 +22,5 @@  int bar ()
 
 int wibble()
 {
-  return S<0, 1, 2>::foo<0, 1> (); // { dg-error "no matching" "" { target { ! c++1z } } }
+  return S<0, 1, 2>::foo<0, 1> (); // { dg-error "no matching" "" { target { ! c++17 } } }
 }
--- gcc/testsuite/g++.dg/cpp0x/variadic73.C.jj	2016-12-08 09:23:26.761177434 +0100
+++ gcc/testsuite/g++.dg/cpp0x/variadic73.C	2017-09-14 19:25:21.979213130 +0200
@@ -5,7 +5,7 @@  struct C {};
 
 template<typename... Exceptions> void f(int idx)
 #if __cplusplus <= 201402L
-throw(Exceptions...)		// { dg-warning "deprecated" "" { target { ! c++1z } } }
+throw(Exceptions...)		// { dg-warning "deprecated" "" { target { ! c++17 } } }
 #endif
 {
   if (idx == 0) throw A();
--- gcc/testsuite/g++.dg/cpp0x/noexcept02.C.jj	2016-12-08 09:23:26.762177421 +0100
+++ gcc/testsuite/g++.dg/cpp0x/noexcept02.C	2017-09-14 19:25:21.972213214 +0200
@@ -10,10 +10,10 @@  void f();
 
 SA(!noexcept(f()));
 
-void g() throw (int);		// { dg-message "previous declaration" "" { target { ! c++1z } } }
-				// { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-				// { dg-warning "deprecated" "" { target { ! c++1z } } .-2 }
-void g() noexcept(false);	// { dg-error "different exception" "" { target { ! c++1z } } }
+void g() throw (int);		// { dg-message "previous declaration" "" { target { ! c++17 } } }
+				// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+				// { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
+void g() noexcept(false);	// { dg-error "different exception" "" { target { ! c++17 } } }
 void g();
 
 void h() throw();
--- gcc/testsuite/g++.dg/cpp0x/defaulted23.C.jj	2016-12-08 09:23:26.765177383 +0100
+++ gcc/testsuite/g++.dg/cpp0x/defaulted23.C	2017-09-14 19:25:21.968213262 +0200
@@ -10,22 +10,22 @@  A a;
 
 struct B
 {
-  B() throw (int) = default; // { dg-message "exception-specification" "" { target { ! c++1z } } }
-};				// { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-				// { dg-warning "deprecated" "" { target { ! c++1z } } .-2 }
-B b;				// { dg-error "deleted" "" { target { ! c++1z } } }
+  B() throw (int) = default; // { dg-message "exception-specification" "" { target { ! c++17 } } }
+};				// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+				// { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
+B b;				// { dg-error "deleted" "" { target { ! c++17 } } }
 
 struct C
 {
-  C() throw (int) { }		// { dg-error "dynamic exception specification" "" { target c++1z } }
-};				// { dg-warning "deprecated" "" { target { ! c++1z } } .-1 }
+  C() throw (int) { }		// { dg-error "dynamic exception specification" "" { target c++17 } }
+};				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
 
 C c;
 
 struct D: C
 {
-  D() throw (int) = default;	// { dg-error "dynamic exception specification" "" { target c++1z } }
-};				// { dg-warning "deprecated" "" { target { ! c++1z } } .-1 }
+  D() throw (int) = default;	// { dg-error "dynamic exception specification" "" { target c++17 } }
+};				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
 
 D d;
 
--- gcc/testsuite/g++.dg/cpp0x/noexcept08.C.jj	2016-12-08 09:23:26.762177421 +0100
+++ gcc/testsuite/g++.dg/cpp0x/noexcept08.C	2017-09-14 19:25:21.965213299 +0200
@@ -7,8 +7,8 @@  struct A
   virtual void g() throw();
   virtual void h() noexcept;
   virtual void i() noexcept(false);
-  virtual void j() throw(int);	// { dg-error "dynamic exception specification" "" { target c++1z } }
-};				// { dg-warning "deprecated" "" { target { ! c++1z } } .-1 }
+  virtual void j() throw(int);	// { dg-error "dynamic exception specification" "" { target c++17 } }
+};				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
 
 struct B: A
 {
@@ -34,23 +34,23 @@  struct D: A
   void g() noexcept(false);	// { dg-error "looser" }
   void h() noexcept(false);	// { dg-error "looser" }
   void i() noexcept(false);
-  void j() noexcept(false);	// { dg-error "looser" "" { target { ! c++1z } } }
+  void j() noexcept(false);	// { dg-error "looser" "" { target { ! c++17 } } }
 };
 
 struct E: A
 {
-  void f() throw(int);		// { dg-error "dynamic exception specification" "" { target c++1z } }
-				// { dg-warning "deprecated" "" { target { ! c++1z } } .-1 }
+  void f() throw(int);		// { dg-error "dynamic exception specification" "" { target c++17 } }
+				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
   void g() throw(int);		// { dg-error "looser" }
-				// { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-				// { dg-warning "deprecated" "" { target { ! c++1z } } .-2 }
+				// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+				// { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
   void h() throw(int);		// { dg-error "looser" }
-				// { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-				// { dg-warning "deprecated" "" { target { ! c++1z } } .-2 }
-  void i() throw(int);		// { dg-error "dynamic exception specification" "" { target c++1z } }
-				// { dg-warning "deprecated" "" { target { ! c++1z } } .-1 }
-  void j() throw(int);		// { dg-error "dynamic exception specification" "" { target c++1z } }
-				// { dg-warning "deprecated" "" { target { ! c++1z } } .-1 }
+				// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+				// { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
+  void i() throw(int);		// { dg-error "dynamic exception specification" "" { target c++17 } }
+				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
+  void j() throw(int);		// { dg-error "dynamic exception specification" "" { target c++17 } }
+				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
 };
 
 struct F: A
@@ -59,5 +59,5 @@  struct F: A
   void g();			// { dg-error "looser" }
   void h();			// { dg-error "looser" }
   void i();
-  void j();			// { dg-error "looser" "" { target { ! c++1z } } }
+  void j();			// { dg-error "looser" "" { target { ! c++17 } } }
 };
--- gcc/testsuite/g++.dg/cpp0x/auto9.C.jj	2016-12-08 09:23:26.765177383 +0100
+++ gcc/testsuite/g++.dg/cpp0x/auto9.C	2017-09-14 19:25:21.986213046 +0200
@@ -103,15 +103,15 @@  auto fnlate2 () -> auto *;			// { dg-err
 
 void
 badthrow () throw (auto)			// { dg-error "invalid use of" }
-{						// { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-}						// { dg-warning "deprecated" "" { target { ! c++1z } } .-2 }
+{						// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+}						// { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
 
 void
 badthrow2 () throw (auto &)			// { dg-error "invalid use of|expected" }
-{						// { dg-error "dynamic exception specification" "" { target c++1z } .-1 }
-}						// { dg-warning "deprecated" "" { target { ! c++1z } } .-2 }
+{						// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
+}						// { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
 
-template <auto V = 4> struct G {};		// { dg-error "auto" "" { target { ! c++1z } } }
+template <auto V = 4> struct G {};		// { dg-error "auto" "" { target { ! c++17 } } }
 
 template <typename T> struct H { H (); ~H (); };
 H<auto> h;					// { dg-error "invalid|initializer" }
--- gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C.jj	2016-12-08 09:23:26.791177053 +0100
+++ gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C	2017-09-14 19:25:21.982213094 +0200
@@ -1,7 +1,7 @@ 
 // PR c++/47263
 // PR c++/49260
 // { dg-options "-fno-asynchronous-unwind-tables -fno-dwarf2-cfi-asm" }
-// { dg-do run { target { c++11 && { ! c++1z } } } }
+// { dg-do run { target { c++11 && { ! c++17 } } } }
 
 #include <exception>
 
--- gcc/testsuite/g++.dg/cpp0x/error5.C.jj	2016-12-08 09:23:26.781177180 +0100
+++ gcc/testsuite/g++.dg/cpp0x/error5.C	2017-09-14 19:25:21.946213527 +0200
@@ -41,7 +41,7 @@  struct bad_alloc { };
 
 void* operator new(std::size_t)
 #if __cplusplus <= 201402L
-throw (std::bad_alloc)			// { dg-warning "deprecated" "" { target { ! c++1z } } }
+throw (std::bad_alloc)			// { dg-warning "deprecated" "" { target { ! c++17 } } }
 #endif
 ;
 
--- gcc/testsuite/c-c++-common/gomp/atomic-12.c.jj	2016-09-23 18:55:40.701159853 +0200
+++ gcc/testsuite/c-c++-common/gomp/atomic-12.c	2017-09-14 20:56:43.910101671 +0200
@@ -4,7 +4,7 @@ 
 /* atomicvar should never be referenced in between the barrier and
    following #pragma omp atomic_load.  */
 /* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */
-/* { dg-skip-if "invalid in C++1z" { c++1z } } */
+/* { dg-skip-if "invalid in C++17" { c++17 } } */
 
 #ifdef __cplusplus
 bool atomicvar, c;
--- gcc/testsuite/c-c++-common/gomp/atomic-13.c.jj	2016-09-23 18:55:40.701159853 +0200
+++ gcc/testsuite/c-c++-common/gomp/atomic-13.c	2017-09-14 20:56:43.905101733 +0200
@@ -4,6 +4,6 @@ 
 /* atomicvar should never be referenced in between the barrier and
    following #pragma omp atomic_load.  */
 /* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */
-/* { dg-skip-if "invalid in C++1z" { c++1z } } */
+/* { dg-skip-if "invalid in C++17" { c++17 } } */
 
 #include "atomic-12.c"
--- gcc/testsuite/c-c++-common/gomp/atomic-14.c.jj	2016-09-23 18:55:40.701159853 +0200
+++ gcc/testsuite/c-c++-common/gomp/atomic-14.c	2017-09-14 20:56:43.915101609 +0200
@@ -1,7 +1,7 @@ 
 /* PR middle-end/45423 */
 /* { dg-do compile } */
 /* { dg-options "-fopenmp -Wno-deprecated" } */
-/* { dg-skip-if "invalid in C++1z" { c++1z } } */
+/* { dg-skip-if "invalid in C++17" { c++17 } } */
 
 #ifdef __cplusplus
 bool *baz ();
--- gcc/testsuite/c-c++-common/Wvarargs-2.c.jj	2016-09-29 22:53:53.782233265 +0200
+++ gcc/testsuite/c-c++-common/Wvarargs-2.c	2017-09-14 20:56:43.920101548 +0200
@@ -23,7 +23,7 @@  foo0 (int a, int b, ...)
 }
 
 void
-foo1 (int a, register int b, ...)	// { dg-warning "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+foo1 (int a, register int b, ...)	// { dg-warning "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 {
     va_list vp;
     /* 'b' is declared with register storage, but don't warn
--- gcc/testsuite/c-c++-common/Wvarargs.c.jj	2016-09-29 22:53:53.783233253 +0200
+++ gcc/testsuite/c-c++-common/Wvarargs.c	2017-09-14 20:56:43.502106700 +0200
@@ -23,7 +23,7 @@  foo0 (int a, int b, ...)
 }
 
 void
-foo1 (int a, register int b, ...)	// { dg-warning "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+foo1 (int a, register int b, ...)	// { dg-warning "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 {
     va_list vp;
     /* 'b' is declared with register storage, but don't warn
@@ -45,7 +45,7 @@  foo2 (int a, int b, ...)
 }
 
 void
-foo3 (int a, register int b, ...)	// { dg-warning "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+foo3 (int a, register int b, ...)	// { dg-warning "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
 {
     va_list vp;
     /* 'b' is declared with register storage, so warn.  */
--- gcc/testsuite/c-c++-common/vector-subscript-2.c.jj	2016-10-02 21:32:24.435157879 +0200
+++ gcc/testsuite/c-c++-common/vector-subscript-2.c	2017-09-14 20:56:43.507106638 +0200
@@ -7,6 +7,6 @@ 
 
 float vf(int i)
 {
-  register vector float a;	// { dg-warning "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+  register vector float a;	// { dg-warning "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
   return a[0];
 }
--- gcc/testsuite/g++.old-deja/g++.robertl/eb123.C.jj	2016-12-08 09:23:26.794177015 +0100
+++ gcc/testsuite/g++.old-deja/g++.robertl/eb123.C	2017-09-14 21:57:00.244394335 +0200
@@ -4,7 +4,7 @@ 
 
 void writeNote()
 #if __cplusplus <= 201402L
-throw( int )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw( int )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
     printf( "hello world\n" );
--- gcc/testsuite/g++.old-deja/g++.eh/tmpl3.C.jj	2016-12-08 09:23:26.890175795 +0100
+++ gcc/testsuite/g++.old-deja/g++.eh/tmpl3.C	2017-09-14 21:57:00.262394112 +0200
@@ -5,7 +5,7 @@ 
 template<class T> struct A {
     void X()
 #if __cplusplus <= 201402L
-    throw(T)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+    throw(T)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
     ;
 };
@@ -13,6 +13,6 @@  template<class T> struct A {
 template<class T>
 inline void A<T>::X() 
 #if __cplusplus <= 201402L
-throw(T)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(T)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 { } 
--- gcc/testsuite/g++.old-deja/g++.eh/cleanup2.C.jj	2016-12-08 09:23:26.890175795 +0100
+++ gcc/testsuite/g++.old-deja/g++.eh/cleanup2.C	2017-09-14 21:57:00.250394261 +0200
@@ -20,7 +20,7 @@  struct X
 {
   X (int)
 #if __cplusplus <= 201402L
-  throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   ;
   ~X () throw ();
@@ -28,7 +28,7 @@  struct X
 
 X::X (int)
 #if __cplusplus <= 201402L
-  throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   {printf ("in ctor X %s\n", __PRETTY_FUNCTION__); bad = true;}
 X::~X () throw ()
@@ -39,14 +39,14 @@  struct Y : X
 {
   Y()
 #if __cplusplus <= 201402L
-  throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   ;
   ~Y() throw ();
 };
 Y::Y()
 #if __cplusplus <= 201402L
-  throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw (int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   : X(thrower ())   // throws, so X::X is never called
   {printf ("in ctor Y%s\n", __PRETTY_FUNCTION__); bad = true;}
--- gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C.jj	2017-06-20 08:48:36.831886915 +0200
+++ gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C	2017-09-14 21:57:00.265394075 +0200
@@ -88,7 +88,7 @@  extern "C" void *realloc (void *p, size_
 
 void fn_throw()
 #if __cplusplus <= 201402L
-throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   throw 1;
@@ -96,7 +96,7 @@  throw(int)			// { dg-warning "deprecated
 
 void fn_rethrow()
 #if __cplusplus <= 201402L
-throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   try{fn_throw();}
@@ -106,7 +106,7 @@  throw(int)			// { dg-warning "deprecated
 
 void fn_catchthrow()
 #if __cplusplus <= 201402L
-throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   try{fn_throw();}
--- gcc/testsuite/g++.old-deja/g++.eh/throw2.C.jj	2016-12-08 09:23:26.918175439 +0100
+++ gcc/testsuite/g++.old-deja/g++.eh/throw2.C	2017-09-14 21:57:00.258394162 +0200
@@ -6,7 +6,7 @@ 
 
 void athrow(const ANY & e)
 #if __cplusplus <= 201402L
-throw(ANY)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(ANY)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
    throw e; // { dg-bogus "" } discarding const
--- gcc/testsuite/g++.old-deja/g++.eh/throw1.C.jj	2016-12-08 09:23:26.824176633 +0100
+++ gcc/testsuite/g++.old-deja/g++.eh/throw1.C	2017-09-14 21:57:00.254394211 +0200
@@ -2,7 +2,7 @@ 
 
 void athrow(const int & e)
 #if __cplusplus <= 201402L
-throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
    throw e;
--- gcc/testsuite/g++.old-deja/g++.eh/tmpl1.C.jj	2016-12-08 09:23:26.931175274 +0100
+++ gcc/testsuite/g++.old-deja/g++.eh/tmpl1.C	2017-09-14 21:57:00.248394286 +0200
@@ -2,7 +2,7 @@ 
 template <class T>
 void f()
 #if __cplusplus <= 201402L
-throw (T)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw (T)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   throw 7;
--- gcc/testsuite/g++.old-deja/g++.other/new7.C.jj	2016-12-08 09:23:26.951175020 +0100
+++ gcc/testsuite/g++.old-deja/g++.other/new7.C	2017-09-14 21:57:00.273393976 +0200
@@ -15,7 +15,7 @@  struct X {
   }
   void* operator new ( std::size_t n )
 #if __cplusplus <= 201402L
-  throw ( std::bad_alloc )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw ( std::bad_alloc )			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   {
     new_flag = true;
--- gcc/testsuite/g++.old-deja/g++.other/crash30.C.jj	2016-12-08 09:23:26.945175096 +0100
+++ gcc/testsuite/g++.old-deja/g++.other/crash30.C	2017-09-14 21:57:00.269394025 +0200
@@ -8,7 +8,7 @@  struct foo
 };
 
 void foo::x() throw(bar)	// { dg-error "" } parse error
-{				// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } .-1 }
+{				// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-1 }
 }
 
 void bar()
--- gcc/testsuite/g++.old-deja/g++.other/regstack.C.jj	2016-10-02 21:32:24.520156804 +0200
+++ gcc/testsuite/g++.old-deja/g++.other/regstack.C	2017-09-14 21:57:00.276393938 +0200
@@ -3,7 +3,7 @@ 
 
 inline double foo (double x)
 {
-  register double r;	// { dg-warning "ISO C\\+\\+1z does not allow 'register' storage class specifier" "" { target c++1z } }
+  register double r;	// { dg-warning "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
   asm volatile ("fsqrt" : "=t" (r) : "0" (x));
   return r;
 }
--- gcc/testsuite/g++.old-deja/g++.other/crash28.C.jj	2016-12-08 09:23:26.951175020 +0100
+++ gcc/testsuite/g++.old-deja/g++.other/crash28.C	2017-09-14 21:57:00.278393913 +0200
@@ -29,13 +29,13 @@  public:
   foo();
   void x ()
 #if __cplusplus <= 201402L
-  throw(bar)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(bar)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   ;
 };
 void foo::x()
 #if __cplusplus <= 201402L
-throw(bar)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+throw(bar)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
 {
   if (!b) throw bar (static_cast<::N::X*>(this));	// { dg-error "lambda expressions|expected|invalid" } parse error
--- gcc/testsuite/g++.old-deja/g++.jason/bool5.C.jj	2017-04-19 15:46:09.980197757 +0200
+++ gcc/testsuite/g++.old-deja/g++.jason/bool5.C	2017-09-14 21:57:00.280393889 +0200
@@ -2,12 +2,12 @@ 
 int main ()
 {
   bool b = false;
-  int i = b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
+  int i = b++; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
   if (i != false || b != true)
     return 1;
-  i = b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
-  // { dg-error "forbidden" "" { target c++1z } .-1 }
+  i = b++; // { dg-warning "deprecated" "" { target { ! c++17 } } }
+  // { dg-error "forbidden" "" { target c++17 } .-1 }
   if (i != true || b != true)
     return 1;
 }
--- gcc/testsuite/g++.old-deja/g++.mike/p10416.C.jj	2017-06-19 08:27:29.341680689 +0200
+++ gcc/testsuite/g++.old-deja/g++.mike/p10416.C	2017-09-14 21:57:00.345393082 +0200
@@ -7,7 +7,7 @@  class not_ok {
 public:
   void f()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #endif
   { }
 };
--- gcc/testsuite/g++.old-deja/g++.mike/eh25.C.jj	2016-12-08 09:23:27.169172251 +0100
+++ gcc/testsuite/g++.old-deja/g++.mike/eh25.C	2017-09-14 21:57:00.283393851 +0200
@@ -12,7 +12,7 @@  struct A {
   A() { }
   ~A()
 #if __cplusplus <= 201402L
-  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++1z } } } }
+  throw(int)			// { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } }
 #else
   noexcept(false)
 #endif
--- gcc/testsuite/g++.old-deja/g++.mike/eh55.C.jj	2016-12-08 09:23:27.182172086 +0100
+++ gcc/testsuite/g++.old-deja/g++.mike/eh55.C	2017-09-14 21:57:00.348393045 +0200
@@ -9,7 +9,7 @@  void my_terminate_handler() {
 }
 
 void throw_an_unexpected_exception() throw() {
-  throw 1;	// { dg-warning "throw will always call terminate" "" { target c++1z } }
+  throw 1;	// { dg-warning "throw will always call terminate" "" { target c++17 } }
 }
 
 int main() {
--- libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc.jj	2017-01-16 12:27:55.979987836 +0100
+++ libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc	2017-09-14 22:00:18.559934547 +0200
@@ -1,5 +1,5 @@ 
-// { dg-options "-g -O0 -std=gnu++1z" }
-// { dg-do run { target c++1z } }
+// { dg-options "-g -O0 -std=gnu++17" }
+// { dg-do run { target c++17 } }
 // { dg-skip-if "" { *-*-* } { "-D_GLIBCXX_PROFILE" } }
 
 // Copyright (C) 2014-2017 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc.jj	2017-03-22 19:31:46.481992066 +0100
+++ libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc	2017-09-14 22:00:18.564934485 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <mutex>
 
--- libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc.jj	2017-07-17 10:08:29.856711205 +0200
+++ libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc	2017-09-14 22:00:18.574934361 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <mutex>
 
--- libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc.jj	2017-07-17 10:08:29.857711193 +0200
+++ libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc	2017-09-14 22:00:18.569934423 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 // { dg-require-cstdint "" }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc.jj	2017-09-12 21:58:27.527096655 +0200
+++ libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc	2017-09-14 22:00:18.583934249 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 // { dg-require-cstdint "" }
 // { dg-require-gthreads "" }
 
--- libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc.jj	2017-03-05 22:39:55.351179614 +0100
+++ libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc	2017-09-14 22:00:18.578934311 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 // { dg-require-cstdint "" }
 // { dg-require-gthreads "" }
 
--- libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc.jj	2017-03-22 19:31:46.550991179 +0100
+++ libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc	2017-09-14 22:00:18.588934187 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <mutex>
 
--- libstdc++-v3/testsuite/18_support/launder/1.cc.jj	2017-01-01 12:45:55.224447423 +0100
+++ libstdc++-v3/testsuite/18_support/launder/1.cc	2017-09-14 22:00:18.620933791 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <new>
 #include <testsuite_hooks.h>
@@ -36,7 +36,7 @@  test01()
 void
 test02()
 {
-  // C++1z 1.8 [intro.object]
+  // C++17 1.8 [intro.object]
   struct X { const int n; };
   union U { X x; float f; };
 
--- libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc.jj	2017-01-01 12:45:55.225447410 +0100
+++ libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc	2017-09-14 22:00:18.625933729 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <new>
 
--- libstdc++-v3/testsuite/18_support/launder/requirements.cc.jj	2017-01-01 12:45:55.224447423 +0100
+++ libstdc++-v3/testsuite/18_support/launder/requirements.cc	2017-09-14 22:00:18.608933939 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // NB: This file is for testing new with NO OTHER INCLUDES.
 #include <new>
--- libstdc++-v3/testsuite/18_support/byte/requirements.cc.jj	2017-03-09 17:41:47.601142153 +0100
+++ libstdc++-v3/testsuite/18_support/byte/requirements.cc	2017-09-14 22:00:18.630933667 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <cstddef>
 
--- libstdc++-v3/testsuite/18_support/byte/ops.cc.jj	2017-03-09 17:41:47.601142153 +0100
+++ libstdc++-v3/testsuite/18_support/byte/ops.cc	2017-09-14 22:00:18.640933542 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <cstddef>
 
--- libstdc++-v3/testsuite/18_support/byte/global_neg.cc.jj	2017-03-09 17:41:47.601142153 +0100
+++ libstdc++-v3/testsuite/18_support/byte/global_neg.cc	2017-09-14 22:00:18.635933604 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <stddef.h>
 
--- libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc.jj	2017-01-01 12:45:55.232447317 +0100
+++ libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc	2017-09-14 22:00:18.645933480 +0200
@@ -15,7 +15,7 @@ 
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++1z" }
+// { dg-options "-std=gnu++17" }
 
 #include <cassert>
 #include <exception>
--- libstdc++-v3/testsuite/27_io/types/4.cc.jj	2017-07-26 13:37:46.069894934 +0200
+++ libstdc++-v3/testsuite/27_io/types/4.cc	2017-09-14 22:00:18.650933418 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // In C++17 these names are not reserved by the library.
 #define io_state 1
--- libstdc++-v3/testsuite/25_algorithms/sample/81221.cc.jj	2017-06-28 09:05:42.665428604 +0200
+++ libstdc++-v3/testsuite/25_algorithms/sample/81221.cc	2017-09-14 22:00:18.685932984 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 // { dg-require-parallel-mode "" }
 
 #include <algorithm>
--- libstdc++-v3/testsuite/25_algorithms/sample/1.cc.jj	2017-01-01 12:45:55.693441222 +0100
+++ libstdc++-v3/testsuite/25_algorithms/sample/1.cc	2017-09-14 22:00:18.669933183 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <algorithm>
 #include <random>
--- libstdc++-v3/testsuite/25_algorithms/sample/2.cc.jj	2017-01-01 12:45:55.693441222 +0100
+++ libstdc++-v3/testsuite/25_algorithms/sample/2.cc	2017-09-14 22:00:18.655933356 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #ifndef _GLIBCXX_ASSERTIONS
 // Make std::uniform_int_distribution check its parameters
--- libstdc++-v3/testsuite/25_algorithms/search/searcher.cc.jj	2017-05-22 10:49:31.491251003 +0200
+++ libstdc++-v3/testsuite/25_algorithms/search/searcher.cc	2017-09-14 22:00:18.701932786 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <algorithm>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc.jj	2017-06-09 09:59:09.250205408 +0200
+++ libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc	2017-09-14 22:00:18.706932724 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <regex>
 #include <testsuite_iterators.h>
--- libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc.jj	2017-01-01 12:45:55.860439015 +0100
+++ libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc	2017-09-14 22:00:18.711932662 +0200
@@ -1,5 +1,5 @@ 
-// { dg-options "-lstdc++fs -std=gnu++1z" }
-// { dg-do run { target c++1z } }
+// { dg-options "-lstdc++fs -std=gnu++17" }
+// { dg-do run { target c++17 } }
 // { dg-require-filesystem-ts "" }
 
 // Copyright (C) 2016-2017 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc.jj	2017-09-01 09:27:00.025477935 +0200
+++ libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc	2017-09-14 22:00:18.720932550 +0200
@@ -1,4 +1,4 @@ 
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 // { dg-options "-std=gnu++17" }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/24_iterators/container_access.cc.jj	2017-09-01 09:26:59.990478346 +0200
+++ libstdc++-v3/testsuite/24_iterators/container_access.cc	2017-09-14 22:00:18.715932612 +0200
@@ -1,4 +1,4 @@ 
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 // { dg-options "-std=gnu++17" }
 
 // Copyright (C) 2015-2017 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc.jj	2017-01-01 12:45:56.913425093 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc	2017-09-14 22:00:18.763932017 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 // This can take long on simulators, timing out the test.
 // { dg-options "-DITERATIONS=5" { target simulator } }
--- libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc.jj	2017-01-01 12:45:56.904425212 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc	2017-09-14 22:00:18.740932302 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 // This can take long on simulators, timing out the test.
 // { dg-options "-DITERATIONS=5" { target simulator } }
--- libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc.jj	2017-01-01 12:45:56.908425159 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc	2017-09-14 22:00:18.749932191 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 // This can take long on simulators, timing out the test.
 // { dg-options "-DITERATIONS=5" { target simulator } }
--- libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc.jj	2017-01-01 12:45:56.900425265 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc	2017-09-14 22:00:18.725932488 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 
 // -*- C++ -*-
--- libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc.jj	2017-01-01 12:45:56.910425133 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc	2017-09-14 22:00:18.754932128 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 
 // -*- C++ -*-
--- libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc.jj	2017-01-01 12:45:56.904425212 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc	2017-09-14 22:00:18.735932364 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 // This can take long on simulators, timing out the test.
 // { dg-options "-DITERATIONS=5" { target simulator } }
--- libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc.jj	2017-01-01 12:45:56.910425133 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc	2017-09-14 22:00:18.758932079 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 // This can take long on simulators, timing out the test.
 // { dg-options "-DITERATIONS=5" { target simulator } }
--- libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc.jj	2017-01-01 12:45:56.903425225 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc	2017-09-14 22:00:18.730932426 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 // This can take long on simulators, timing out the test.
 // { dg-options "-DITERATIONS=5" { target simulator } }
--- libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc.jj	2017-01-01 12:45:56.906425186 +0100
+++ libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc	2017-09-14 22:00:18.744932253 +0200
@@ -1,5 +1,5 @@ 
 // __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
 // { dg-require-time "" }
 // This can take long on simulators, timing out the test.
 // { dg-options "-DITERATIONS=5" { target simulator } }
--- libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc.jj	2017-01-01 12:45:57.638415508 +0100
+++ libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc	2017-09-14 22:00:18.768931955 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2016-2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc.jj	2017-03-22 19:31:47.250982180 +0100
+++ libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc	2017-09-14 22:00:18.777931843 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <memory>
 
--- libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc.jj	2017-01-01 12:45:57.657415257 +0100
+++ libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc	2017-09-14 22:00:18.773931893 +0200
@@ -20,7 +20,7 @@ 
 #include <memory>
 #include <testsuite_hooks.h>
 
-// C++1z 20.11.2.2.1 shared_ptr constructors [util.smartptr.shared.const]
+// C++17 20.11.2.2.1 shared_ptr constructors [util.smartptr.shared.const]
 
 template<typename To, typename From>
 constexpr bool check()
--- libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc.jj	2017-01-01 12:45:57.670415085 +0100
+++ libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc	2017-09-14 22:00:18.782931781 +0200
@@ -25,7 +25,7 @@  struct A
   int i = 0;
 };
 
-// C++1z 20.11.2.2.5 shared_ptr observers [util.smartptr.shared.obs]
+// C++17 20.11.2.2.5 shared_ptr observers [util.smartptr.shared.obs]
 
 // get
 void
--- libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc.jj	2017-03-22 19:31:47.190982951 +0100
+++ libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc	2017-09-14 22:00:18.787931719 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/variant/deduction.cc.jj	2017-07-17 10:08:30.060708660 +0200
+++ libstdc++-v3/testsuite/20_util/variant/deduction.cc	2017-09-14 22:00:18.816931359 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/tuple/78939.cc.jj	2017-05-22 10:49:32.299240911 +0200
+++ libstdc++-v3/testsuite/20_util/tuple/78939.cc	2017-09-14 22:00:18.826931235 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // PR libstdc++/78939
 
--- libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc.jj	2017-03-22 19:31:47.549978336 +0100
+++ libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc	2017-09-14 22:00:18.821931297 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/void_t/1.cc.jj	2017-01-01 12:45:57.798413393 +0100
+++ libstdc++-v3/testsuite/20_util/void_t/1.cc	2017-09-14 22:00:18.831931173 +0200
@@ -15,7 +15,7 @@ 
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++1z" }
+// { dg-options "-std=gnu++17" }
 // { dg-do compile }
 
 #include <type_traits>
--- libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc.jj	2017-02-20 13:43:17.599523177 +0100
+++ libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc	2017-09-14 22:00:18.836931111 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2011-2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc.jj	2017-03-22 19:31:47.325981216 +0100
+++ libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc	2017-09-14 22:00:18.840931062 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <memory>
 
--- libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc.jj	2017-01-01 12:45:57.860412573 +0100
+++ libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc	2017-09-14 22:00:18.845931000 +0200
@@ -15,8 +15,8 @@ 
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 #include <utility>
 
--- libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc.jj	2017-03-22 19:31:47.499978979 +0100
+++ libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc	2017-09-14 22:00:18.850930938 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <memory>
 
--- libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc.jj	2017-01-01 12:45:57.887412216 +0100
+++ libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc	2017-09-14 22:00:18.867930727 +0200
@@ -1,5 +1,5 @@ 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2016-2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc.jj	2017-01-01 12:45:57.887412216 +0100
+++ libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc	2017-09-14 22:00:18.854930888 +0200
@@ -1,5 +1,5 @@ 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2016-2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc.jj	2017-01-01 12:45:57.886412230 +0100
+++ libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc	2017-09-14 22:00:18.872930665 +0200
@@ -1,5 +1,5 @@ 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2016-2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc.jj	2017-02-20 13:43:17.696521894 +0100
+++ libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc	2017-09-14 22:00:18.877930603 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2011-2016 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc.jj	2017-03-10 20:46:19.670851048 +0100
+++ libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc	2017-09-14 22:00:18.882930541 +0200
@@ -15,7 +15,7 @@ 
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++1z" }
+// { dg-options "-std=gnu++17" }
 // { dg-do compile }
 
 #include <functional>
--- libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc.jj	2017-05-22 10:49:31.952245245 +0200
+++ libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc	2017-09-14 22:00:18.886930491 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <functional>
 
--- libstdc++-v3/testsuite/20_util/function/cons/deduction.cc.jj	2017-03-22 19:31:47.279981807 +0100
+++ libstdc++-v3/testsuite/20_util/function/cons/deduction.cc	2017-09-14 22:00:18.891930429 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <functional>
 
--- libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc.jj	2017-04-28 22:17:23.174083694 +0200
+++ libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc	2017-09-14 22:00:18.896930367 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <memory>
 
--- libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc.jj	2017-04-04 07:32:46.435501452 +0200
+++ libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc	2017-09-14 22:00:18.905930256 +0200
@@ -1,5 +1,5 @@ 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc.jj	2017-04-04 07:32:46.435501452 +0200
+++ libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc	2017-09-14 22:00:18.901930305 +0200
@@ -1,5 +1,5 @@ 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/20_util/is_aggregate/value.cc.jj	2017-04-04 07:32:46.434501465 +0200
+++ libstdc++-v3/testsuite/20_util/is_aggregate/value.cc	2017-09-14 22:00:18.909930206 +0200
@@ -1,5 +1,5 @@ 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/26_numerics/lcm/1.cc.jj	2017-09-12 21:58:27.679094813 +0200
+++ libstdc++-v3/testsuite/26_numerics/lcm/1.cc	2017-09-14 22:00:18.914930144 +0200
@@ -15,8 +15,8 @@ 
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 #include <numeric>
 
--- libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc.jj	2017-09-12 21:58:27.693094643 +0200
+++ libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc	2017-09-14 22:00:18.919930082 +0200
@@ -15,8 +15,8 @@ 
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 #include <numeric>
 
--- libstdc++-v3/testsuite/26_numerics/gcd/1.cc.jj	2017-09-12 21:58:27.799093358 +0200
+++ libstdc++-v3/testsuite/26_numerics/gcd/1.cc	2017-09-14 22:00:18.928929970 +0200
@@ -15,8 +15,8 @@ 
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 #include <numeric>
 
--- libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc.jj	2017-09-12 21:58:27.825093043 +0200
+++ libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc	2017-09-14 22:00:18.923930032 +0200
@@ -15,8 +15,8 @@ 
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
 
 #include <numeric>
 
--- libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc.jj	2017-03-22 19:31:47.108984006 +0100
+++ libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc	2017-09-14 22:00:18.933929908 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <valarray>
 
--- libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc.jj	2017-01-01 12:45:58.046410114 +0100
+++ libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc	2017-09-14 22:00:18.943929784 +0200
@@ -1,4 +1,4 @@ 
-// { dg-do compile { target { ! c++1z } } }
+// { dg-do compile { target { ! c++17 } } }
 
 // Copyright (C) 2007-2017 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc.jj	2017-01-01 12:45:58.043410154 +0100
+++ libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc	2017-09-14 22:00:18.938929846 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 // { dg-xfail-run-if "AIX long double" { powerpc-ibm-aix* } }
 
 #include <cmath>
--- libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc.jj	2017-01-01 12:45:58.256407338 +0100
+++ libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc	2017-09-14 22:00:18.947929735 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <queue>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc.jj	2017-03-22 19:31:46.646989945 +0100
+++ libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc	2017-09-14 22:00:18.952929673 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <array>
 
--- libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc.jj	2017-03-22 19:31:46.646989945 +0100
+++ libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc	2017-09-14 22:00:18.956929623 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <array>
 
--- libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc.jj	2017-01-01 12:45:58.363405923 +0100
+++ libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc	2017-09-14 22:00:18.961929561 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <deque>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc.jj	2017-06-12 12:42:02.845242339 +0200
+++ libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc	2017-09-14 22:00:18.965929511 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <deque>
 #include <testsuite_iterators.h>
--- libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc.jj	2017-01-01 12:45:58.431405024 +0100
+++ libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc	2017-09-14 22:00:18.969929462 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <stack>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc.jj	2017-01-01 12:45:58.473404469 +0100
+++ libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc	2017-09-14 22:00:18.973929412 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <list>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc.jj	2017-06-12 12:42:02.889241771 +0200
+++ libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc	2017-09-14 22:00:18.978929350 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <list>
 #include <testsuite_iterators.h>
--- libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc.jj	2017-01-01 12:45:58.500404112 +0100
+++ libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc	2017-09-14 22:00:18.981929313 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <forward_list>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc.jj	2017-06-12 12:42:02.709244093 +0200
+++ libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc	2017-09-14 22:00:18.986929251 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <forward_list>
 #include <testsuite_iterators.h>
--- libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc.jj	2017-01-16 12:27:56.799977170 +0100
+++ libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc	2017-09-14 22:00:18.991929189 +0200
@@ -30,7 +30,7 @@  struct E : std::equal_to<T> { };
 
 using __gnu_test::CustomPointerAlloc;
 
-// { dg-xfail-if "node reinsertion assumes raw pointers" { c++1z } }
+// { dg-xfail-if "node reinsertion assumes raw pointers" { c++17 } }
 // TODO when removing this xfail change the test back to "dg-do run".
 template class std::unordered_set<T, H, E, CustomPointerAlloc<T>>;
 
--- libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc.jj	2017-01-01 12:45:58.560403319 +0100
+++ libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc	2017-09-14 22:00:18.996929127 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <vector>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc.jj	2017-06-12 12:42:02.756243486 +0200
+++ libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc	2017-09-14 22:00:19.000929077 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <vector>
 #include <testsuite_iterators.h>
--- libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc.jj	2017-01-01 12:45:58.580403055 +0100
+++ libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc	2017-09-14 22:00:19.005929015 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <vector>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc.jj	2017-01-01 12:45:58.658402023 +0100
+++ libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc	2017-09-14 22:00:19.013928916 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <string>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc.jj	2017-06-15 11:03:34.768704860 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc	2017-09-14 22:00:19.018928854 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string>
 #include <testsuite_iterators.h>
--- libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc.jj	2017-03-19 11:57:26.581811568 +0100
+++ libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc	2017-09-14 22:00:19.009928966 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string>
 
--- libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc.jj	2017-01-01 12:45:58.662401970 +0100
+++ libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc	2017-09-14 22:00:19.026928755 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
 
 #include <string>
 #include <testsuite_hooks.h>
--- libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc.jj	2017-06-15 11:03:34.649706284 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc	2017-09-14 22:00:19.030928705 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string>
 #include <testsuite_iterators.h>
--- libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc.jj	2017-03-19 11:57:26.580811582 +0100
+++ libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc	2017-09-14 22:00:19.022928804 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string>
 
--- libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc.jj	2017-09-12 09:35:42.751750054 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc	2017-09-14 22:00:19.034928656 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string_view>
 
--- libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc.jj	2017-09-12 09:35:42.719750448 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc	2017-09-14 22:00:19.038928606 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string_view>
 
--- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc.jj	2017-09-12 09:35:43.557740128 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc	2017-09-14 22:00:19.047928494 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string_view>
 
--- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc.jj	2017-09-12 09:35:43.557740128 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc	2017-09-14 22:00:19.042928556 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string_view>
 
--- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc.jj	2017-09-12 09:35:43.377742345 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc	2017-09-14 22:00:19.051928445 +0200
@@ -16,7 +16,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 #include <string_view>
 
--- libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc.jj	2017-06-13 22:01:43.598770709 +0200
+++ libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc	2017-09-14 22:00:19.055928395 +0200
@@ -1,5 +1,5 @@ 
 // { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
 
 // Copyright (C) 2017 Free Software Foundation, Inc.
 //