From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 102956 invoked by alias); 14 Mar 2016 08:56:35 -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 101605 invoked by uid 89); 14 Mar 2016 08:56:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.0 required=5.0 tests=BAYES_40,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=regreg, PR70171, reg-reg, pr70171 X-HELO: mx2.suse.de Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (CAMELLIA256-SHA encrypted) ESMTPS; Mon, 14 Mar 2016 08:56:33 +0000 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 9BB91AC2C; Mon, 14 Mar 2016 08:56:29 +0000 (UTC) Date: Mon, 14 Mar 2016 08:56:00 -0000 From: Richard Biener To: Eric Botcazou cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH][GCC 7] Fix PR70171 In-Reply-To: <5786847.OenCvMFoMo@polaris> Message-ID: References: <5786847.OenCvMFoMo@polaris> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2016-03/txt/msg00757.txt.bz2 On Fri, 11 Mar 2016, Eric Botcazou wrote: > > The following teaches phiprop to handle the case of aggregate copies > > where the aggregate has non-BLKmode which means it is very likely > > expanded as reg-reg moves (any better test for that apart from > > checking for non-BLKmode?). > > !aggregate_value_p comes to mind, but non-BLKmode is the definitive test to > distinguish the register from the non-register case at the RTL level. It looks like it might catch a few extra cases where the address of the decl is required. But it also looks like it's somewhat overly broad like /* Function types that are TREE_ADDRESSABLE force return in memory. */ if (fntype && TREE_ADDRESSABLE (fntype)) return 1; without actually testing 'exp' is the return slot. In fact most of the function cares about function return values and some about parameters. I guess the predicate should be split up (a quick grep shows most callers care about the return value case). Richard.