From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19702 invoked by alias); 19 Jul 2010 12:47:40 -0000 Received: (qmail 19651 invoked by uid 48); 19 Jul 2010 12:47:28 -0000 Date: Mon, 19 Jul 2010 12:47:00 -0000 Message-ID: <20100719124728.19650.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/44972] [4.6 Regression] ICE: in load_assign_lhs_subreplacements, at tree-sra.c:2475 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rguenth 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: 2010-07/txt/msg01918.txt.bz2 ------- Comment #8 from rguenth at gcc dot gnu dot org 2010-07-19 12:47 ------- Well, the list of problems is endless it seems - we are not consistent in how we build accesses for declD.1.u1.a.align = 13; vs. decl$u1$a$align_5 = BIT_FIELD_REF *)&declD.2], 24, 0>; (the former is a COMPONENT_REF with DECL_BIT_FIELD while the latter is a BIT_FIELD_REF. The first access will be [0, 24] while the later [0, 32]. This causes us to scalarize declD.2 = declD.1; as declD.2 = declD.2; because we cannot find a matching access in load_assign_lhs_subreplacements and drop into the strange code for SRA_UDH_LEFT. So eventually we should not drop bit-field-ref kind outer accesses in favor of handling them as partial_ref or we should do the same for DECL_BIT_FIELD component-refs. I'm a bit lost and will attach the current WIP patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44972