From patchwork Thu Sep 14 20:26:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Jelinek X-Patchwork-Id: 813943 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-462177-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="d7rD3Ruk"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xtVT32zy6z9s7h for ; Fri, 15 Sep 2017 06:27:34 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:reply-to:mime-version :content-type; q=dns; s=default; b=uHadLafjFu+3jjAmbZAYHSx9X8v9C i6wikAM1zDNwqQoVDNIO2JLi/mhJAlpV5J3O4ho21/r/W3VYU7xApk091VN038oo BlKVPjhmA6GkkPK9wG0etzGMmK/CrcTinBXAtkhyaYQZzaJQGsaLDDvCUB7f29or tQQ6As4GoXShBw= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:reply-to:mime-version :content-type; s=default; bh=jGHmUBNDNZ5o+irUOJ2HVId3G84=; b=d7r D3RukBZM1BuUlYRex6x+s1CQsmHxoNzKLQCONyyJBs88X+lr9lU+iGQLgOUUr2EA WvIc7MEla89iNKltMravQKCbD2lYd2kPR19JhGjncJczA/EQ72VF1LrSL1nBEljf mXyNYx655JcxZK9CvX30aMfB1Y21ucJwHzVCTmGE= Received: (qmail 65301 invoked by alias); 14 Sep 2017 20:27:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 63105 invoked by uid 89); 14 Sep 2017 20:27:08 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-16.9 required=5.0 tests=BAYES_00, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 14 Sep 2017 20:26:40 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D01D64E4C2 for ; Thu, 14 Sep 2017 20:26:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D01D64E4C2 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=jakub@redhat.com Received: from tucnak.zalov.cz (ovpn-116-102.ams2.redhat.com [10.36.116.102]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A0BA55D9C8; Thu, 14 Sep 2017 20:26:37 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.15.2/8.15.2) with ESMTP id v8EKQZNt003645; Thu, 14 Sep 2017 22:26:35 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.15.2/8.15.2/Submit) id v8EKQYMD003644; Thu, 14 Sep 2017 22:26:34 +0200 Date: Thu, 14 Sep 2017 22:26:34 +0200 From: Jakub Jelinek To: Jason Merrill Cc: gcc-patches@gcc.gnu.org Subject: [C++ PATCH] Renames/adjustments of 1z to 17 Message-ID: <20170914202634.GO1701@tucnak> Reply-To: Jakub Jelinek MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.7.1 (2016-10-04) X-IsSubscribed: yes 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 * 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 --- 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 void f(T t) @{ t(); @}; void g() noexcept; -void h() @{ f(g); @} // in C++14 calls f, in C++1z calls f +void h() @{ f(g); @} // in C++14 calls f, in C++17 calls f @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 % storage " + "ISO C++17 does not allow % 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 ("% 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 % storage " + "ISO C++17 does not allow % 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 " - "% is forbidden in C++1z", + "% 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], "% " - "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, "% 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 % or %"); @@ -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 struct Y { }; template -struct Y { }; // { dg-error "" "" { target { ! c++1z } } } +struct Y { }; // { dg-error "" "" { target { ! c++17 } } } template --- 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 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 --- 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 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 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::var41; // { dg-error "re template double const Z::var42; // { dg-error "redefinition of" } template -const int Z::var43; // { dg-warning "redundant redeclaration of" "" { target c++1z } } -template // { dg-warning "redundant redeclaration of" "" { target c++1z } .+1 } +const int Z::var43; // { dg-warning "redundant redeclaration of" "" { target c++17 } } +template // { dg-warning "redundant redeclaration of" "" { target c++17 } .+1 } const int Z::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 #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 --- 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 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 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 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 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 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 struct A; template int foo(A *) = 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 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 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 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 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 --- 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 struct same_type; template struct same_type {}; --- 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 --- 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 --- 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 struct A; template 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 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 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 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 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 struct remove_ref; template 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 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 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 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 #include --- 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 void f(T, int (&)[n]); template 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 --- 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 --- 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 --- 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 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 --- 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 struct S; template struct S { --- 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 --- 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 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 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 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 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 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