From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20114 invoked by alias); 29 Oct 2004 16:44:13 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 20071 invoked by uid 48); 29 Oct 2004 16:44:10 -0000 Date: Fri, 29 Oct 2004 16:44:00 -0000 Message-ID: <20041029164410.20070.qmail@sourceware.org> From: "rearnsha at gcc dot gnu dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040508184142.15342.pb@gcc.gnu.org> References: <20040508184142.15342.pb@gcc.gnu.org> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug rtl-optimization/15342] [arm-linux] internal compiler error: in verify_local_live_at_start X-Bugzilla-Reason: CC X-SW-Source: 2004-10/txt/msg03713.txt.bz2 List-Id: ------- Additional Comments From rearnsha at gcc dot gnu dot org 2004-10-29 16:43 ------- I think the key to what has failed here is that the reg-rename pass has missed the equivalence between start->index and a member of the copied structure. In pseudo code, the output from the previous pass has the following instructions r2 := [ip+8]/4 cc := cmp r2, #0 ne(cc): r0, r1, r2 := [r0]/12 ne(cc): [ip]/12 := r0, r1, r2 // Note [ip+8]/4 set to new r2 ... cc := cmp r2, #1 // ...so no need to reload it here gt(cc): r3 := #0 gt(cc): [ip+8]/4 := r3 return Note that r2 is updated by the first conditional instruction (a conditional ldm on ARM). The conditional move code on ARM uses hard registers, but CSE has clearly noticed this equivalence at some point and merged the two uses to avoid a redundant re-load of start->index. Unfortunately, rename_registers has missed this and split the two uses up again. This creates a use of r2 when it isn't correctly initialized. r1 := [ip+8]/4 cc := cmp r1, #0 ne(cc): r0, r1, r2 := [r0]/12 ne(cc): [ip]/12 := r0, r1, r2 cc := cmp r2, #1 // r2 incorrect if previous insn not exec gt(cc): r3 := #0 gt(cc): [ip+8]/4 := r3 return -- What |Removed |Added ---------------------------------------------------------------------------- Component|target |rtl-optimization http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15342