From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13622 invoked by alias); 26 Dec 2001 02:06:01 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 13593 invoked from network); 26 Dec 2001 02:05:58 -0000 Received: from unknown (HELO igw3.watson.ibm.com) (198.81.209.18) by sources.redhat.com with SMTP; 26 Dec 2001 02:05:58 -0000 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [9.2.112.57]) by igw3.watson.ibm.com (8.11.4/8.11.4) with ESMTP id fBQ23in18888; Tue, 25 Dec 2001 21:04:04 -0500 Received: from makai.watson.ibm.com (makai.watson.ibm.com [9.2.216.144]) by sp1n293en1.watson.ibm.com (8.11.4/8.11.4) with ESMTP id fBQ23An30750; Tue, 25 Dec 2001 21:03:15 -0500 Received: from watson.ibm.com (localhost [127.0.0.1]) by makai.watson.ibm.com (AIX4.3/8.9.3/8.9.3/01-10-2000) with ESMTP id VAA29248; Tue, 25 Dec 2001 21:02:42 -0500 Message-Id: <200112260202.VAA29248@makai.watson.ibm.com> To: Bernd Schmidt , Jan Hubicka , Richard Henderson cc: gcc@gcc.gnu.org, degger@fhm.edu Subject: cant_combine_insn_p hard_reg->reg moves In-Reply-To: Message from degger@fhm.edu of "Tue, 18 Dec 2001 12:49:49 +0100." <20011218125633.C322E6E18@Nicole.fhm.edu> Date: Tue, 25 Dec 2001 23:13:00 -0000 From: David Edelsohn X-SW-Source: 2001-12/txt/msg01284.txt.bz2 At Daniel's prompting, I finally tracked down the cause of the code pessimization with respect to function arguments and return values. Daniel tracked it down to somewhere in combine. The problem is cant_combine_insn_p disallowing hard registers. Arguments and return values are specified as hard regs. So this change from December 2000 now often inserts a move between the hard reg allocated to the pseudo of a computation and the hard regs of arguments and return values. This is rather pessimistic for some architecture, especially for ABIs with register-based calling conventions. How can this improved? Could cant_combine_insn_p test for hard regs with either REG_EQUIV involving computations of ARG_POINTER_REGNUM or FUNCTION_VALUE_REGNO_P? Thanks, David