From patchwork Wed Dec 16 21:31:20 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 557767 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org 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 BAA071402BF for ; Thu, 17 Dec 2015 08:31:46 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=YP+n+EV5; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :date:to:cc:subject:in-reply-to:message-id:references :mime-version:content-type; q=dns; s=default; b=VbxrC1gNDokGJSEJ E4YwD1YRDzijjKOmAjLe6rH4+EyRV9aTcSY+523DIrZvu9L7lGcvkzBe4MrF/0Kw rHwdUiF1jrCR+cax1Tn0FpaFzJThVWiJAmpS9tUPSIuMqDq1BIIDjpomAd6fAz0L +VJX6wuO/6nlQD0Jaizw9XLcgzk= 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:from :date:to:cc:subject:in-reply-to:message-id:references :mime-version:content-type; s=default; bh=/UYeOeENvvf+OujJjauGFb AgZXI=; b=YP+n+EV5w9rQbP87y6x4a+biOqxn/rx4U9ExFh0ctVKm1BjHGKf/zc kbpzKsdHKenXaPdRc+1U+Hh1VbW5TgqagnLy2VPgyr/cAe/oMf8oDyJXIv90ZLpn 7hh/DkGJ+jNbaGTAAYTRhKM0qZhAz/P37VPW+0/i3YSNW8JhPtmY4= Received: (qmail 7070 invoked by alias); 16 Dec 2015 21:31:39 -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 6280 invoked by uid 89); 16 Dec 2015 21:31:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=doable, Hx-languages-length:1984, matz, Matz X-HELO: mail-qg0-f43.google.com Received: from mail-qg0-f43.google.com (HELO mail-qg0-f43.google.com) (209.85.192.43) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 16 Dec 2015 21:31:38 +0000 Received: by mail-qg0-f43.google.com with SMTP id i91so38681488qgf.2 for ; Wed, 16 Dec 2015 13:31:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=Jq5dQLizeqs60I/ofgRJQxnc//lzSP3hsrjZDt4SRSs=; b=SvhDkgIr5vYyJEATomUJlUMZb1teVr0GfX+iyNPNPCtIYJqqdUjftxQRKItlf2F2sv DepsVvu7jlItkxaZNuqefDgbd3QhTvlRqHUI2doDuYlzierDh4B+/YL4SC+WVubAJ4pn MXC4pHfQj8e3ycINaiYdPHvjq7uRAmPMhZ5Qa+evpdhg1COdMhiXxWCTMQYptP4U7Fxc R2IJcZpJ715iehB6fzCHFIUrpbLP7FWA9YXiMdg0lQqOf529C73mKB13dS9Cv+QMJgrr iDBTnHBowfLTHKZ9AdjtO0VrQ3zpDwW7nunvFsPMmw26zEfs8uPxoYnFCLNsKM+7go+u y1bQ== X-Gm-Message-State: ALoCoQlmiBA95qc61iyv+P4W66x5QudzIn+zGb5MnISY/j7FgDMiPyZXR9ZNd+x9bvO1UDJqUJHcWj7j77OCdlt9v3HbQ86w3w== X-Received: by 10.140.165.16 with SMTP id l16mr58917404qhl.101.1450301495810; Wed, 16 Dec 2015 13:31:35 -0800 (PST) Received: from [192.168.1.130] (ool-4353a8be.dyn.optonline.net. [67.83.168.190]) by smtp.gmail.com with ESMTPSA id x72sm3346727qkx.29.2015.12.16.13.31.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Dec 2015 13:31:35 -0800 (PST) From: Patrick Palka X-Google-Original-From: Patrick Palka Date: Wed, 16 Dec 2015 16:31:20 -0500 (EST) To: Michael Matz cc: Patrick Palka , gcc-patches@gcc.gnu.org, jason@redhat.com Subject: Re: [PATCH] Fix PR c++/21802 (two-stage name lookup fails for operators) In-Reply-To: Message-ID: References: <566F29AB.5010106@redhat.com> <1450138442-25061-1-git-send-email-patrick@parcs.ath.cx> User-Agent: Alpine 2.20.9 (DEB 106 2015-09-22) MIME-Version: 1.0 On Wed, 16 Dec 2015, Michael Matz wrote: > Hi, > > On Mon, 14 Dec 2015, Patrick Palka wrote: > >>>>>> This should use cp_tree_operand_length. >>>> Hmm, I don't immediately see how I can use this function here. It >>>> expects a tree but I dont have an appropriate tree to give to it, only a >>>> tree_code. >>> >>> True. So let's introduce cp_tree_code_length next to cp_tree_operand_length. >>> >>> Jason >>> >>> >> >> Like this? Incremental diff followed by patch v4: > > Not my turf, but if I may make a suggestion: please use the new function > in the old one instead of duplicating the implementation. The implementation is not exactly a duplicate since the old function returns TREE_OPERAND_LENGTH in the default case and the new function returns TREE_CODE_LENGTH in the default case. It's still doable though. Defining one in terms of the other would look like this. Is this patch OK to commit after testing? -- 8< -- Subject: [PATCH] Avoid code duplication in cp_tree_[operand|code]_length gcc/cp/ChangeLog: * tree.c (cp_tree_operand_length): Define in terms of cp_tree_code_length. --- gcc/cp/tree.c | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 0c0987d..ae176d0 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -4427,23 +4427,10 @@ cp_tree_operand_length (const_tree t) { enum tree_code code = TREE_CODE (t); - switch (code) - { - case PREINCREMENT_EXPR: - case PREDECREMENT_EXPR: - case POSTINCREMENT_EXPR: - case POSTDECREMENT_EXPR: - return 1; + if (TREE_CODE_CLASS (code) == tcc_vl_exp) + return VL_EXP_OPERAND_LENGTH (t); - case ARRAY_REF: - return 2; - - case EXPR_PACK_EXPANSION: - return 1; - - default: - return TREE_OPERAND_LENGTH (t); - } + return cp_tree_code_length (code); } /* Like cp_tree_operand_length, but takes a tree_code CODE. */