From patchwork Wed Dec 7 13:01:48 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nathan Sidwell X-Patchwork-Id: 87096 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp302723qgi; Wed, 7 Dec 2016 05:04:06 -0800 (PST) X-Received: by 10.84.164.162 with SMTP id w31mr147767708pla.9.1481115846931; Wed, 07 Dec 2016 05:04:06 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id s199si23996236pgs.43.2016.12.07.05.04.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Dec 2016 05:04:06 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-443681-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org; spf=pass (google.com: domain of gcc-patches-return-443681-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-443681-patch=linaro.org@gcc.gnu.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:to:cc :from:subject:message-id:date:mime-version:content-type; q=dns; s=default; b=n87BlOXNaRi5VF0VLhrgbtx6uZCCfQnBgUUUi4GYHp67Bchh9L +kPq2nQAVZILM3vsWeHjRFuxCKVThuBqvxBVCOFwtopEXoUNoDL5j5KaJmg5DIv7 uIaZKKTdaNlTd4T5uzlmV7YVJO82KuvtZrQZ+ZzzLCZCE+ApkSpdwDCeA= 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:to:cc :from:subject:message-id:date:mime-version:content-type; s= default; bh=XTC4KqL31eryGFjpAMvYPm2owQU=; b=FvZCtFSZkbaiJWfNRlro uqE02vesrIbsu+QvP0d1uzOYPKKVdYXdFfKTB4DVkCUk2vRiSxKro+Zd9UZ3BslS mI2srp01kjHYKmo8/dYKUlxGrYaJNvcuCQh92jB1fnZVxVFCHiye+qOsnZ4XoSwu S3kxwIl4gG89KMl9NznsUsU= Received: (qmail 4255 invoked by alias); 7 Dec 2016 13:02:05 -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 3681 invoked by uid 89); 7 Dec 2016 13:02:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=no version=3.3.2 spammy=U*nathan, nathanacmorg, nathan@acm.org, D*acm.org X-HELO: mail-yw0-f195.google.com Received: from mail-yw0-f195.google.com (HELO mail-yw0-f195.google.com) (209.85.161.195) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 07 Dec 2016 13:01:52 +0000 Received: by mail-yw0-f195.google.com with SMTP id s68so31919577ywg.0 for ; Wed, 07 Dec 2016 05:01:51 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:to:cc:from:subject:message-id:date :user-agent:mime-version; bh=jsK7YUfflDzi46Bx+mNO+jUi9WgII1Jje0ZV358JBDE=; b=hjgLvPfEHEmGhD2xuVDnhr/w7ype4GPQOsOESEg4/aJ4S3JR980rd8NpssWRN8f/Ng 1DGLxg2dq3xrclVJACgay8DIH4PUhaGJfUUooq15vZ1PzBYO8UGvAP6BYjpx6jno8VeP aGQSFlpP/Kqwe3zBo6XeVVnvyiJe5w0BgsmSqsh2yexPvBQWAHxhhf2krADlVFFIQMLp CEdid/5eKiuuTU/nvOTz9cr3KN4S5s8rBrHCrA5v/nQOxb9SWF/8XrZHp3+EgZWcXOD1 T3TtZKRuKey0Dub6ovR0P4X1JYzBmqecB6iEBGnzS/XIufV0g/bwRJcx+J1VdHyDEFcx IcUQ== X-Gm-Message-State: AKaTC004ijcShVQRLT3kmkW5c7twtlASD7FJSVnD82qEa/hkS3FvwQXVg62HRO1tmedZJA== X-Received: by 10.13.215.78 with SMTP id z75mr64489415ywd.100.1481115709920; Wed, 07 Dec 2016 05:01:49 -0800 (PST) Received: from ?IPv6:2620:10d:c0a3:20fb:f6d0:5ac5:64cd:f102? ([2620:10d:c091:200::a:6eb0]) by smtp.googlemail.com with ESMTPSA id t77sm10058819ywg.38.2016.12.07.05.01.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Dec 2016 05:01:49 -0800 (PST) To: GCC Patches Cc: Jason Merrill From: Nathan Sidwell Subject: [C++ PATCH] {NON,}TYPE_ARGUMENT_PACK substitution Message-ID: <99827597-6b58-e427-ef6c-69e63228011b@acm.org> Date: Wed, 7 Dec 2016 08:01:48 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 I also noticed argument pack substitution was doing more work than necessary -- we've already tsubst'd TYPE just before the big switch. Took the opportunity to simplify the control flow a bit further too. Committed. nathan -- Nathan Sidwell 2016-12-07 Nathan Sidwell * pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow and avoid re-tsubsting type. Index: cp/pt.c =================================================================== --- cp/pt.c (revision 243342) +++ cp/pt.c (working copy) @@ -13795,22 +13795,23 @@ tsubst (tree t, tree args, tsubst_flags_ case TYPE_ARGUMENT_PACK: case NONTYPE_ARGUMENT_PACK: { - tree r = TYPE_P (t) ? cxx_make_type (code) : make_node (code); - tree packed_out = - tsubst_template_args (ARGUMENT_PACK_ARGS (t), - args, - complain, - in_decl); - SET_ARGUMENT_PACK_ARGS (r, packed_out); + tree r; - /* For template nontype argument packs, also substitute into - the type. */ - if (code == NONTYPE_ARGUMENT_PACK) - TREE_TYPE (r) = tsubst (TREE_TYPE (t), args, complain, in_decl); + if (code == NONTYPE_ARGUMENT_PACK) + { + r = make_node (code); + /* Set the already-substituted type. */ + TREE_TYPE (r) = type; + } + else + r = cxx_make_type (code); - return r; + tree pack_args = ARGUMENT_PACK_ARGS (t); + pack_args = tsubst_template_args (pack_args, args, complain, in_decl); + SET_ARGUMENT_PACK_ARGS (r, pack_args); + + return r; } - break; case VOID_CST: case INTEGER_CST: