From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4130 invoked by alias); 24 Nov 2009 12:27:29 -0000 Received: (qmail 4120 invoked by uid 22791); 24 Nov 2009 12:27:28 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from mel.act-europe.fr (HELO mel.act-europe.fr) (212.99.106.210) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 24 Nov 2009 12:27:22 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id 0BD4E290002; Tue, 24 Nov 2009 13:27:17 +0100 (CET) Received: from mel.act-europe.fr ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NlVeT4JMgWpY; Tue, 24 Nov 2009 13:27:11 +0100 (CET) Received: from [192.168.1.2] (88-122-73-90.rev.libertysurf.net [88.122.73.90]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mel.act-europe.fr (Postfix) with ESMTP id 6E781290003; Tue, 24 Nov 2009 13:27:11 +0100 (CET) From: Eric Botcazou To: Bernd Schmidt Subject: Re: regrename speedup Date: Tue, 24 Nov 2009 12:30:00 -0000 User-Agent: KMail/1.9.6 (enterprise 20070904.708012) Cc: gcc-patches@gcc.gnu.org References: <4AD9CEF2.50908@t-online.de> <200911222319.05965.ebotcazou@adacore.com> <4B0BBDA6.5030309@t-online.de> In-Reply-To: <4B0BBDA6.5030309@t-online.de> MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200911241328.26843.ebotcazou@adacore.com> Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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 X-SW-Source: 2009-11/txt/msg01344.txt.bz2 > Ah. That looks a little buggy actually in the old version. Nevermind, > here's a new set of patches. Thanks. rr-cleanup2.diff is OK for mainline modulo the following nits: +/* Undoes the substitution performed by hide_operands. INSN is the insn we + are processing; the arguments are the same as in hide_operands. */ "Undo the" +/* For each output operands of INSN, call scan_rtx to create a new + open chain. */ "operand of" + struct du_head *prev_open = open_chains; + + if (recog_data.operand_type[opn] == OP_OUT) + scan_rtx (insn, loc, cl, mark_write, OP_OUT); + + /* ??? Many targets have output constraints on the SET_DEST + of a call insn, which is stupid, since these are certainly + ABI defined hard registers. For these, and for asm operands + that originally referenced hard registers, we must record that + the chain cannot be renamed. */ + if (CALL_P (insn) + || (asm_noperands (PATTERN (insn)) > 0 + && REG_P (op) + && REGNO (op) == ORIGINAL_REGNO (op))) + { + if (prev_open != open_chains) + open_chains->first->cl = NO_REGS; + } I'd rewrite it as struct du_head *prev_open; if (recog_data.operand_type[opn] != OP_OUT) continue; prev_open = open_chains; scan_rtx (insn, loc, cl, mark_write, OP_OUT); to make things clearer. I'll look into rr-full2.diff later today. -- Eric Botcazou