From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32994 invoked by alias); 29 Aug 2017 15:15:48 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 30439 invoked by uid 89); 29 Aug 2017 15:15:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=HContent-Transfer-Encoding:8bit 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; Tue, 29 Aug 2017 15:15:26 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C0E89C047B91; Tue, 29 Aug 2017 15:15:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C0E89C047B91 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=law@redhat.com Received: from localhost.localdomain (ovpn-112-9.rdu2.redhat.com [10.10.112.9]) by smtp.corp.redhat.com (Postfix) with ESMTP id E1D3870525; Tue, 29 Aug 2017 15:15:06 +0000 (UTC) Subject: Re: [06/77] Make GET_MODE_WIDER return an opt_mode To: gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org References: <8760ewohsv.fsf@linaro.org> <87fue0n317.fsf@linaro.org> <9b296653-5505-8a64-bdde-9ee879f7363e@redhat.com> <87poc2q7xr.fsf@linaro.org> <487e855f-3202-c562-83dc-112632a62e63@redhat.com> <871snvtsvk.fsf@linaro.org> <87k21mh0zp.fsf@linaro.org> From: Jeff Law Message-ID: <847f8837-8445-93b3-e99e-a4662aece628@redhat.com> Date: Tue, 29 Aug 2017 15:42:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <87k21mh0zp.fsf@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2017-08/txt/msg01657.txt.bz2 On 08/29/2017 09:01 AM, Richard Sandiford wrote: > Jeff Law writes: > > OK, here's a patch that uses require (). I've updated the following > patches in the obvious way. Thanks. > > This does make me want to reconsider another decision though. > Using opt_mode for iterators leads to things like: > > opt_scalar_int_mode wider_mode_iter; > FOR_EACH_WIDER_MODE (wider_mode_iter, mode) > { > scalar_int_mode wider_mode = wider_mode_iter.require (); > if (optab_handler (unoptab, wider_mode) != CODE_FOR_nothing) > ... > > which isn't pretty. It would be easy to support: No ideal, but it's reasonably explicit in what it does, so I wouldn't expect anyone to be surprised. > > scalar_int_mode wider_mode; > FOR_EACH_WIDER_MODE (wider_mode, mode) > if (optab_handler (unoptab, wider_mode) != CODE_FOR_nothing) > ... > > *but* this would mean that "wider_mode" is accessible but undefined > after the loop (unlike the first loop, where wider_mode_iter is > guaranteed to be empty if the loop runs to completion). Is that OK? > Or is it too suprising? I think most folks would be surprised that they can't look at wider_mode in a meaningful way after the loop. > > Another alternative would be: > > opt_scalar_int_mode wider_mode_iter; > scalar_int_mode wider_mode; > FOR_EACH_WIDER_MODE (wider_mode_iter, wider_mode, mode) > if (optab_handler (unoptab, wider_mode) != CODE_FOR_nothing) > ... > > which gives both. But perhaps this would be odd for plain machine_mode > iterators, where there's no obvious distinction between the first and > second arguments. Well, this is like the first to me, except we've separated the iterator from the mode. I slightly prefer the first and think the second is probably too different from the traditional way we think about the state of loop variables after the loop has terminated. Jeff