From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11735 invoked by alias); 27 Oct 2010 02:51:43 -0000 Received: (qmail 11725 invoked by uid 22791); 27 Oct 2010 02:51:41 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,MISSING_MID X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 27 Oct 2010 02:51:37 +0000 From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/46171] [4.6 Regression] ICE: in gen_rtx_SUBREG, at emit-rtl.c:774 with -fno-tree-dce -g X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P1 X-Bugzilla-Assigned-To: jakub at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.6.0 X-Bugzilla-Changed-Fields: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Wed, 27 Oct 2010 02:51:00 -0000 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-10/txt/msg02271.txt.bz2 Message-ID: <20101027025100.P0fU3_VKLKgSaOn4RG9GFfMZDANM1fCPfM7SB-zheyE@z> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46171 --- Comment #3 from Jakub Jelinek 2010-10-27 02:51:32 UTC --- So we have RTL like: (insn 6 3 7 2 (set (reg:SF 21 xmm0) (reg/v:SF 61 [ f ])) pr46171.c:7 110 {*movsf_internal} (nil)) (call_insn 7 6 17 2 (set (reg:SF 21 xmm0) (call (mem:QI (symbol_ref:DI ("barf") [flags 0x41] ) [0 S1 A8]) (const_int 0 [0]))) pr46171.c:7 883 {*call_value_0_rex64} (nil) (expr_list:REG_DEP_TRUE (use (reg:SF 21 xmm0)) (nil))) (debug_insn 17 7 9 2 (var_location:SF D#2 (reg:SF 21 xmm0)) -1 (nil)) (debug_insn 9 17 10 2 (var_location:SF f (debug_expr:SF D#2)) pr46171.c:7 -1 (nil)) (insn 10 9 11 2 (set (reg:QI 0 ax) (const_int 0 [0])) pr46171.c:8 66 {*movqi_internal} (nil)) (call_insn 11 10 16 2 (set (reg:DF 21 xmm0) (call (mem:QI (symbol_ref:DI ("bard") [flags 0x41] ) [0 S1 A8]) (const_int 0 [0]))) pr46171.c:8 883 {*call_value_0_rex64} (expr_list:REG_UNUSED (reg:DF 21 xmm0) (nil)) (expr_list:REG_DEP_TRUE (use (reg:QI 0 ax)) (nil))) (debug_insn 16 11 13 2 (var_location:DF D#1 (reg:DF 21 xmm0)) -1 (nil)) (debug_insn 13 16 0 2 (var_location:DF d (debug_expr:DF D#1)) pr46171.c:8 -1 (nil)) debug insn 16 adds DFmode use of xmm0 via dead_debug_add. Then the call_insn before it isn't called for reg 21, as there are no uses of it, just sets. Then another dead_debug_add is called for register 21 on insn 17, this time in SFmode and then finally a dead_debug_insert_before is called on the first call insn because reg 21 is also used there, not just set. As we have both SFmode and DFmode in dead debug structures for reg 21, it tries to create a SFmode SUBREG of the DFmode DEBUG_EXPR and ICEs.