From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6636 invoked by alias); 6 Dec 2004 21:59:56 -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 6594 invoked from network); 6 Dec 2004 21:59:52 -0000 Received: from unknown (HELO mail.cs.umass.edu) (128.119.243.168) by sourceware.org with SMTP; 6 Dec 2004 21:59:52 -0000 Received: from localhost (IDENT:F7ejTznEeu96xLb1lRL7JLQ+EW4bVLN7@loki.cs.umass.edu [128.119.243.168]) by mail.cs.umass.edu (8.12.11/8.12.5) with ESMTP id iB6Lxl2U032742; Mon, 6 Dec 2004 16:59:48 -0500 Date: Mon, 06 Dec 2004 21:59:00 -0000 Message-Id: <20041206.165932.23013187.kazu@cs.umass.edu> To: e9925248@stud4.tuwien.ac.at Cc: gcc@gcc.gnu.org Subject: Re: Unreachable code in reload.c From: Kazu Hirata In-Reply-To: <20041206213801.GA29867@zuhause> References: <20041206213801.GA29867@zuhause> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2004-12/txt/msg00272.txt.bz2 Hi Matrin, > reload.c, function decompose, line 2355 (CVS HEAD version): > > val.start = true_regnum (x); > if (val.start < 0) > { > /* A pseudo with no hard reg. */ > val.start = REGNO (x); > val.end = val.start + 1; > } > else > /* A hard reg. */ > val.end = val.start + hard_regno_nregs[val.start][GET_MODE (x)]; > > > The then-part of the if statement can never be reached Neither is a part of the SUBREG case pointed to with an arrow. case SUBREG: if (!REG_P (SUBREG_REG (x))) /* This could be more precise, but it's good enough. */ return decompose (SUBREG_REG (x)); val.reg_flag = 1; val.start = true_regnum (x); if (val.start < 0) return decompose (SUBREG_REG (x)); <--- else /* A hard reg. */ val.end = val.start + hard_regno_nregs[val.start][GET_MODE (x)]; break; because true_regnum returns a non-negative number for a SUBREG with REG in it. Perhaps you can convert these "if"s to gcc_assert like so? gcc_assert (val.start >= 0); Kazu Hirata