From patchwork Tue May 10 13:40:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 53737 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C05E5385DC2D for ; Tue, 10 May 2022 13:42:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C05E5385DC2D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1652190128; bh=o1IpydBHkgeHRmtFSEpwRwqpNj6dWYyk4nP5pb0olmQ=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=BWMQxrGCUU2x+cPCDzA3/vrIc8SKEsGiEAPchiiYJVOp21ru2InRkk1NbHoiyevJn DpqB2fL7jqzEZoj1bbOgybbrRIG3/EXdVg2GoTOAPkNz+huWuf4Y7yvoT335HwmeH9 CMBPNUYUyX19pjVUiozk1QLzt5/bOqHTvRhidehk= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id DB2F4385DC2D for ; Tue, 10 May 2022 13:40:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DB2F4385DC2D Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-344-XGdN4X9SPQ-7rxkyevUOSA-1; Tue, 10 May 2022 09:40:42 -0400 X-MC-Unique: XGdN4X9SPQ-7rxkyevUOSA-1 Received: by mail-qt1-f197.google.com with SMTP id br6-20020a05622a1e0600b002f3d470aa4dso6260275qtb.21 for ; Tue, 10 May 2022 06:40:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=o1IpydBHkgeHRmtFSEpwRwqpNj6dWYyk4nP5pb0olmQ=; b=0bs+3l8tbiVFZN+O21R04Z/E3SWSkMG9q36FTfi7Tv+MP7LM6yhJ5nKEEwA5Ij1m9/ OumM4C7fKdIGu0Q4PI+rg1t4hzOoCRbk2f5GMy+ZOySw60LRtSfJFem6GIOkJVI3v5IK O3rRQlFB4jjp10xozBSysAidSmUktHiMKetEPaINfI9xyx1dFDok5HOR0S2dUYG2cm6C AnDjvqToN6SXndjqKWVwXbDaeY3T66VlfS5hMARHZ9vofYosbI6majr0dul7WSEin2ZN i9JtbanWTZxy5/eaalBDA7ehDswkdKSunQ9dsA9dggY1d31RsmzlBWdBm7sSGzXM/UjO GUJg== X-Gm-Message-State: AOAM5304dRt6l0WxXEaVnogmncmy97zHJh8SIxIXb6sCCYK55MY5cvqv 2V4qsNOB1hpYQLIDT0tsPl1dMXTno8fR/MLmTzQX3J9vMqc3+VffHFDSq9lJNgnqJip7sul2747 MKDlpTddp1XauSFplG4Gi2Bj31IqAPBx48uUWuSzt77byCweoV7UplCI8+QwVkATyRQ8= X-Received: by 2002:a05:620a:404a:b0:6a0:922b:d906 with SMTP id i10-20020a05620a404a00b006a0922bd906mr7254766qko.365.1652190041198; Tue, 10 May 2022 06:40:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwV3Vtn1eBMcFmYyIb8IzTkiTId0fJz9/n7xLtyIBKcm9yXmPcoP3kvGvbYhMJ85JRMS2EhvA== X-Received: by 2002:a05:620a:404a:b0:6a0:922b:d906 with SMTP id i10-20020a05620a404a00b006a0922bd906mr7254738qko.365.1652190040786; Tue, 10 May 2022 06:40:40 -0700 (PDT) Received: from localhost.localdomain (ool-457670bb.dyn.optonline.net. [69.118.112.187]) by smtp.gmail.com with ESMTPSA id o7-20020a05620a110700b0069fc13ce205sm8424219qkk.54.2022.05.10.06.40.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 06:40:40 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [PATCH 2/2] c++: Remove SET_PACK_EXPANSION_PATTERN / SET_ARGUMENT_PACK_ARGS Date: Tue, 10 May 2022 09:40:37 -0400 Message-Id: <20220510134037.628893-2-ppalka@redhat.com> X-Mailer: git-send-email 2.36.0.63.gf5aaf72f1b In-Reply-To: <20220510134037.628893-1-ppalka@redhat.com> References: <20220510134037.628893-1-ppalka@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-14.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Patrick Palka via Gcc-patches From: Patrick Palka Reply-To: Patrick Palka Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Unlike in C, in C++ the conditional operator yields an lvalue if both branches are lvalues, so we can just assign to PACK_EXPANSION_PATTERN and ARGUMENT_PACK_ARGS directly. Bootstrapped and regtested on x86_64-pc-linux-gnu, does this look OK for trunk? gcc/cp/ChangeLog: * coroutines.cc (instantiate_coro_traits): Adjust accordingly. * cp-tree.h (SET_PACK_EXPANSION_PATTERN): Remove. (SET_ARGUMENT_PACK_ARGS): Remove. * module.cc (trees_in::tree_node): Adjust accordingly. * parser.cc (make_char_string_pack): Likewise. (make_string_pack): Likewise. * pt.cc (make_pack_expansion): Likewise. (template_parm_to_arg): Likewise. (coerce_template_parameter_pack): Likewise. (extract_fnparm_pack): Likewise. (extract_locals_r): Likewise. (make_argument_pack): Likewise. (tsubst_argument_pack): Likewise. (lookup_init_capture_pack): Likewise. (type_unification_real): Likewise. (unify_pack_expansion): Likewise. (tsubst_initializer_list): Likewise. --- gcc/cp/coroutines.cc | 2 +- gcc/cp/cp-tree.h | 16 ---------------- gcc/cp/module.cc | 4 ++-- gcc/cp/parser.cc | 4 ++-- gcc/cp/pt.cc | 30 +++++++++++++++--------------- 5 files changed, 20 insertions(+), 36 deletions(-) diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc index 1d886b31c77..edb3b706ddc 100644 --- a/gcc/cp/coroutines.cc +++ b/gcc/cp/coroutines.cc @@ -344,7 +344,7 @@ instantiate_coro_traits (tree fndecl, location_t kw) } tree argtypepack = cxx_make_type (TYPE_ARGUMENT_PACK); - SET_ARGUMENT_PACK_ARGS (argtypepack, argtypes); + ARGUMENT_PACK_ARGS (argtypepack) = argtypes; tree targ = make_tree_vec (2); TREE_VEC_ELT (targ, 0) = TREE_TYPE (functyp); diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 29fc0e5f829..cfda8337ad8 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -3903,14 +3903,6 @@ struct GTY(()) lang_decl { (TREE_CODE (PACK_EXPANSION_CHECK (NODE)) == TYPE_PACK_EXPANSION \ ? TREE_TYPE (NODE) : TREE_OPERAND (NODE, 0)) -/* Sets the type or expression pattern for a TYPE_PACK_EXPANSION or - EXPR_PACK_EXPANSION. */ -#define SET_PACK_EXPANSION_PATTERN(NODE,VALUE) \ - if (TREE_CODE (PACK_EXPANSION_CHECK (NODE)) == TYPE_PACK_EXPANSION) \ - TREE_TYPE (NODE) = VALUE; \ - else \ - TREE_OPERAND (NODE, 0) = VALUE - /* The list of parameter packs used in the PACK_EXPANSION_* node. The TREE_VALUE of each TREE_LIST contains the parameter packs. */ #define PACK_EXPANSION_PARAMETER_PACKS(NODE) \ @@ -3963,14 +3955,6 @@ struct GTY(()) lang_decl { (TREE_CODE (ARGUMENT_PACK_CHECK (NODE)) == TYPE_ARGUMENT_PACK \ ? TREE_TYPE (NODE) : TREE_OPERAND (NODE, 0)) -/* Set the arguments stored in an argument pack. VALUE must be a - TREE_VEC. */ -#define SET_ARGUMENT_PACK_ARGS(NODE,VALUE) \ - if (TREE_CODE (ARGUMENT_PACK_CHECK (NODE)) == TYPE_ARGUMENT_PACK) \ - TREE_TYPE (NODE) = VALUE; \ - else \ - TREE_OPERAND (NODE, 0) = VALUE - /* Whether the argument pack is "incomplete", meaning that more arguments can still be deduced. Incomplete argument packs are only used when the user has provided an explicit template argument list diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index bd4771bef72..27b8f64ce75 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -9338,7 +9338,7 @@ trees_in::tree_node (bool is_use) if (!get_overrun ()) { tree pack = cxx_make_type (TYPE_ARGUMENT_PACK); - SET_ARGUMENT_PACK_ARGS (pack, res); + ARGUMENT_PACK_ARGS (pack) = res; res = pack; } break; @@ -9351,7 +9351,7 @@ trees_in::tree_node (bool is_use) { tree expn = cxx_make_type (TYPE_PACK_EXPANSION); SET_TYPE_STRUCTURAL_EQUALITY (expn); - SET_PACK_EXPANSION_PATTERN (expn, res); + PACK_EXPANSION_PATTERN (expn) = res; PACK_EXPANSION_PARAMETER_PACKS (expn) = param_packs; PACK_EXPANSION_LOCAL_P (expn) = local; res = expn; diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 5071c030f53..4ed9feaa427 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -4649,7 +4649,7 @@ make_char_string_pack (tree value) } /* Build the argument packs. */ - SET_ARGUMENT_PACK_ARGS (argpack, charvec); + ARGUMENT_PACK_ARGS (argpack) = charvec; TREE_VEC_ELT (argvec, 0) = argpack; @@ -4684,7 +4684,7 @@ make_string_pack (tree value) double_int::from_buffer (str + i * sz, sz)); /* Build the argument packs. */ - SET_ARGUMENT_PACK_ARGS (argpack, charvec); + ARGUMENT_PACK_ARGS (argpack) = charvec; TREE_VEC_ELT (argvec, 1) = argpack; diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 6e666c2cde3..9932d861af6 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -4219,7 +4219,7 @@ make_pack_expansion (tree arg, tsubst_flags_t complain) /* Create the pack expansion type for the base type. */ purpose = cxx_make_type (TYPE_PACK_EXPANSION); - SET_PACK_EXPANSION_PATTERN (purpose, TREE_PURPOSE (arg)); + PACK_EXPANSION_PATTERN (purpose) = TREE_PURPOSE (arg); PACK_EXPANSION_PARAMETER_PACKS (purpose) = parameter_packs; PACK_EXPANSION_LOCAL_P (purpose) = at_function_scope_p (); @@ -4237,7 +4237,7 @@ make_pack_expansion (tree arg, tsubst_flags_t complain) result = for_types ? cxx_make_type (TYPE_PACK_EXPANSION) : make_node (EXPR_PACK_EXPANSION); - SET_PACK_EXPANSION_PATTERN (result, arg); + PACK_EXPANSION_PATTERN (result) = arg; if (TREE_CODE (result) == EXPR_PACK_EXPANSION) { /* Propagate type and const-expression information. */ @@ -4852,7 +4852,7 @@ template_parm_to_arg (tree t) TREE_VEC_ELT (vec, 0) = make_pack_expansion (t); t = cxx_make_type (TYPE_ARGUMENT_PACK); - SET_ARGUMENT_PACK_ARGS (t, vec); + ARGUMENT_PACK_ARGS (t) = vec; } } else @@ -4869,7 +4869,7 @@ template_parm_to_arg (tree t) TREE_VEC_ELT (vec, 0) = make_pack_expansion (t); t = make_node (NONTYPE_ARGUMENT_PACK); - SET_ARGUMENT_PACK_ARGS (t, vec); + ARGUMENT_PACK_ARGS (t) = vec; } else t = convert_from_reference (t); @@ -8718,7 +8718,7 @@ coerce_template_parameter_pack (tree parms, _DECL as a use rather than a declaration. */ tree decl = TREE_VALUE (parm); tree exp = cxx_make_type (TYPE_PACK_EXPANSION); - SET_PACK_EXPANSION_PATTERN (exp, decl); + PACK_EXPANSION_PATTERN (exp) = decl; PACK_EXPANSION_PARAMETER_PACKS (exp) = packs; SET_TYPE_STRUCTURAL_EQUALITY (exp); @@ -8818,7 +8818,7 @@ coerce_template_parameter_pack (tree parms, TREE_CONSTANT (argument_pack) = 1; } - SET_ARGUMENT_PACK_ARGS (argument_pack, packed_args); + ARGUMENT_PACK_ARGS (argument_pack) = packed_args; if (CHECKING_P) SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (packed_args, TREE_VEC_LENGTH (packed_args)); @@ -12460,7 +12460,7 @@ extract_fnparm_pack (tree tmpl_parm, tree *spec_p) } /* Build the argument packs. */ - SET_ARGUMENT_PACK_ARGS (argpack, parmvec); + ARGUMENT_PACK_ARGS (argpack) = parmvec; } *spec_p = spec_parm; @@ -13023,7 +13023,7 @@ extract_locals_r (tree *tp, int */*walk_subtrees*/, void *data_) { spec = copy_node (spec); args = copy_node (args); - SET_ARGUMENT_PACK_ARGS (spec, args); + ARGUMENT_PACK_ARGS (spec) = args; register_local_specialization (spec, *tp); } TREE_VEC_ELT (args, i) = carg; @@ -13410,7 +13410,7 @@ make_argument_pack (tree vec) pack = make_node (NONTYPE_ARGUMENT_PACK); TREE_CONSTANT (pack) = 1; } - SET_ARGUMENT_PACK_ARGS (pack, vec); + ARGUMENT_PACK_ARGS (pack) = vec; return pack; } @@ -13463,7 +13463,7 @@ tsubst_argument_pack (tree orig_arg, tree args, tsubst_flags_t complain, TREE_CONSTANT (new_arg) = TREE_CONSTANT (orig_arg); } - SET_ARGUMENT_PACK_ARGS (new_arg, pack_args); + ARGUMENT_PACK_ARGS (new_arg) = pack_args; } return new_arg; @@ -18442,7 +18442,7 @@ lookup_init_capture_pack (tree decl) len = TREE_VEC_LENGTH (fpack); vec = make_tree_vec (len); r = make_node (NONTYPE_ARGUMENT_PACK); - SET_ARGUMENT_PACK_ARGS (r, vec); + ARGUMENT_PACK_ARGS (r) = vec; } for (int i = 0; i < len; ++i) { @@ -22911,7 +22911,7 @@ type_unification_real (tree tparms, else arg = cxx_make_type (TYPE_ARGUMENT_PACK); - SET_ARGUMENT_PACK_ARGS (arg, make_tree_vec (0)); + ARGUMENT_PACK_ARGS (arg) = make_tree_vec (0); TREE_VEC_ELT (targs, i) = arg; continue; @@ -23771,7 +23771,7 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms, else result = cxx_make_type (TYPE_ARGUMENT_PACK); - SET_ARGUMENT_PACK_ARGS (result, new_args); + ARGUMENT_PACK_ARGS (result) = new_args; /* Note the deduced argument packs for this parameter pack. */ @@ -23785,7 +23785,7 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms, now we have a complete set of arguments. */ tree explicit_args = ARGUMENT_PACK_EXPLICIT_ARGS (old_pack); - SET_ARGUMENT_PACK_ARGS (old_pack, new_args); + ARGUMENT_PACK_ARGS (old_pack) = new_args; ARGUMENT_PACK_INCOMPLETE_P (old_pack) = 1; ARGUMENT_PACK_EXPLICIT_ARGS (old_pack) = explicit_args; } @@ -26899,7 +26899,7 @@ tsubst_initializer_list (tree t, tree argvec) else { value = expr; - SET_PACK_EXPANSION_PATTERN (value, TREE_VALUE (arg)); + PACK_EXPANSION_PATTERN (value) = TREE_VALUE (arg); } expanded_exprs = tsubst_pack_expansion (value, argvec,