From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20255 invoked by alias); 9 Jan 2008 16:43:58 -0000 Received: (qmail 20247 invoked by uid 22791); 9 Jan 2008 16:43:58 -0000 X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 09 Jan 2008 16:43:35 +0000 Received: from zps77.corp.google.com (zps77.corp.google.com [172.25.146.77]) by smtp-out.google.com with ESMTP id m09GhUAu021083; Wed, 9 Jan 2008 08:43:30 -0800 Received: from smtp.corp.google.com (spacemonkey2.corp.google.com [192.168.120.114]) by zps77.corp.google.com with ESMTP id m09GhTBs005190 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 9 Jan 2008 08:43:30 -0800 Received: from localhost.localdomain.google.com ([192.168.21.103]) (authenticated bits=0) by smtp.corp.google.com (8.13.8/8.13.8) with ESMTP id m09GhSxj029847 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 9 Jan 2008 08:43:29 -0800 To: DJ Delorie Cc: gcc@gcc.gnu.org Subject: Re: hard_regno_nregs == 0 ? References: <200801082013.m08KDLeU011644@greed.delorie.com> From: Ian Lance Taylor Date: Wed, 09 Jan 2008 16:43:00 -0000 In-Reply-To: <200801082013.m08KDLeU011644@greed.delorie.com> Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2008-01/txt/msg00087.txt.bz2 DJ Delorie writes: > In rtlanal.c we have these lines: > > nregs_ymode = hard_regno_nregs[xregno][ymode]; > ... > && (GET_MODE_SIZE (ymode) % nregs_ymode) == 0) > > The m32c cc1 crashes here because xregno is 1 and ymode is QI, and > register 1 cannot hold a QI value (there are no QImode ops that take > that register), so hard_regno_nregs[1][QI] is zero, which causes a > SIGFPE. > > Which assumption is wrong? That hard_regno_nregs can be zero (m32c), > or that hard_regno_nregs will never be zero (rtlanal)? I would first ask why subreg_get_info is being called with ymode == QImode for a hard register which can not hold QImode. That implies that there is a QImode value in the register, which you say is invalid. Ian