From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14363 invoked by alias); 1 Oct 2002 16:46:22 -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 14356 invoked from network); 1 Oct 2002 16:46:19 -0000 Received: from unknown (HELO dublin.ACT-Europe.FR) (212.157.227.154) by sources.redhat.com with SMTP; 1 Oct 2002 16:46:19 -0000 Received: from berlin.int.act-europe.fr (berlin.act-europe.fr [212.157.227.169]) by dublin.ACT-Europe.FR (Postfix) with ESMTP id AAEF3229E39; Tue, 1 Oct 2002 18:46:18 +0200 (MET DST) Received: (from hainque@localhost) by berlin.int.act-europe.fr (8.11.6/8.9.3) id g91GkKI16411; Tue, 1 Oct 2002 18:46:20 +0200 Date: Tue, 01 Oct 2002 09:46:00 -0000 From: Olivier Hainque To: Jan Hubicka Cc: Michael Matz , gcc@gcc.gnu.org, hainque@ACT-Europe.FR Subject: Re: Question on fixup_abnormal_edges Message-ID: <20021001184620.B16300@berlin.int.act-europe.fr> References: <20021001124034.A15939@berlin.int.act-europe.fr> <20021001112308.GQ29411@kam.mff.cuni.cz> <20021001154929.D16040@berlin.int.act-europe.fr> <20021001140254.GY29411@kam.mff.cuni.cz> <20021001160854.A16255@berlin.int.act-europe.fr> <20021001141208.GZ29411@kam.mff.cuni.cz> <20021001174435.A16300@berlin.int.act-europe.fr> <20021001160812.GK29411@kam.mff.cuni.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20021001160812.GK29411@kam.mff.cuni.cz>; from jh@suse.cz on Tue, Oct 01, 2002 at 06:08:12PM +0200 X-SW-Source: 2002-10/txt/msg00027.txt.bz2 First, I confirm the insn is indeed emitted after the call by way of save_call_clobbered_regs. A great hint you gave :) Jan Hubicka wrote: > There is another problem when I think about that - there should not be > live register accross REG_NORETURN note and thus no caller save need. > Do you have any idea why the register is alive? Not quite sure yet, but maybe the following will ring a bell to you: The .life dump reads several times like below (call_insn 1707 1706 1708 (parallel[ (call (mem:DI (symbol_ref:DI ("_Unwind_Resume")) [0 S8 A64]) (const_int 1 [0x1])) (use (const_int 0 [0x0])) (use (reg:DI 25 $25)) (use (reg:DI 26 $26)) (clobber (reg:DI 27 $27)) ] ) 211 {*call_vms_1} [..] (expr_list:REG_DEAD (reg:DI 16 $16) (expr_list:REG_DEAD (reg:DI 26 $26) (expr_list:REG_DEAD (reg:DI 25 $25) (expr_list:REG_UNUSED (reg:DI 27 $27) (expr_list:REG_NORETURN (const_int 0 [0x0]) <===== (nil)))))) (expr_list (use (reg:DI 16 $16)) (nil))) ;; End of basic block 175, registers live: 29 [$29] 30 [$30] 31 [AP] 63 [FP] The set of registers live after NORETURN calls is always the same, and alpha.h reads: $29 (global pointer) $30, $31, $f31 (stack pointer and always zero/ap & fp) */