From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11605 invoked by alias); 20 Jan 2014 20:31:56 -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 11593 invoked by uid 89); 20 Jan 2014 20:31:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.9 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 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; Mon, 20 Jan 2014 20:31:55 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0KKVrfC000553 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 20 Jan 2014 15:31:54 -0500 Received: from tucnak.zalov.cz (vpn1-7-214.ams2.redhat.com [10.36.7.214]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0KKVq0o028776 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Jan 2014 15:31:53 -0500 Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.14.7/8.14.7) with ESMTP id s0KKVpXU029012; Mon, 20 Jan 2014 21:31:51 +0100 Received: (from jakub@localhost) by tucnak.zalov.cz (8.14.7/8.14.7/Submit) id s0KKVoXU029011; Mon, 20 Jan 2014 21:31:50 +0100 Date: Mon, 20 Jan 2014 20:31:00 -0000 From: Jakub Jelinek To: Alexandre Oliva Cc: Richard Biener , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Fix PR59890, improve var-tracking compile-time Message-ID: <20140120203150.GD892@tucnak.redhat.com> Reply-To: Jakub Jelinek References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes X-SW-Source: 2014-01/txt/msg01281.txt.bz2 On Mon, Jan 20, 2014 at 06:24:36PM -0200, Alexandre Oliva wrote: > > ! if (var->onepart == ONEPART_VALUE) > > { > > rtx x = dv_as_value (dv); > > void **slot; > > --- 2502,2509 ---- > > > gcc_assert (var->n_var_parts == 1); > > > ! if (var->onepart == ONEPART_VALUE > > ! && local_get_addr_cache != NULL) > > { > > rtx x = dv_as_value (dv); > > void **slot; > > But I think this one is wrong. You don't want to treat a one-part value > as if it wasn't one. If we have to discard locs and equivalences for a > one-part value that doesn't have any (because we don't even have a > local_get_addr_cache yet), you can *probably* just return right away, > because your job is already done. So I'd try: > > if (var->onepart == ONEPART_VALUE) > { > if (local_get_addr_cache == NULL) > return; But when local_get_addr_cache is non-NULL, no matter if we find a slot there or don't, we still fall thru into the 3 loops etc. Jakub