From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8781 invoked by alias); 23 Nov 2006 00:16:34 -0000 Received: (qmail 8469 invoked by uid 48); 23 Nov 2006 00:16:19 -0000 Date: Thu, 23 Nov 2006 00:16:00 -0000 Message-ID: <20061123001619.8468.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/24036] [e500] ICE in subreg_offset_representable_p, at rtlanal.c:3143 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "jsm28 at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-11/txt/msg02004.txt.bz2 ------- Comment #6 from jsm28 at gcc dot gnu dot org 2006-11-23 00:16 ------- Patch was discussed at http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00451.html and had some objections from Geoff Keating. I've come across another problem case and am testing another possible patch to address both cases. If you take an SImode subreg of a DFmode register, offset 4, that is the low word of the register and so is representable and subreg_regno_offset should return 0. But the conversion to integer units means that it acts like taking an SImode subreg of a DImode value (and so returns 1, taking the wrong register). I think the conversion to integer units is simply wrong in these cases. -- jsm28 at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jsm28 at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24036