From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28286 invoked by alias); 2 Sep 2012 15:15:15 -0000 Received: (qmail 28271 invoked by uid 22791); 2 Sep 2012 15:15:13 -0000 X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,KHOP_THREADED 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; Sun, 02 Sep 2012 15:15:00 +0000 From: "steven at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/54455] [4.7/4.8 Regression] ICE: RTL check: expected elt 3 type 'B', have '0' (rtx barrier) in compute_bb_for_insn, at cfgrtl.c:418 Date: Sun, 02 Sep 2012 15:15:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: steven at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.7.2 X-Bugzilla-Changed-Fields: CC Message-ID: 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 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: 2012-09/txt/msg00093.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54455 Steven Bosscher changed: What |Removed |Added ---------------------------------------------------------------------------- CC|steven at gcc dot gnu.org |abel at gcc dot gnu.org --- Comment #8 from Steven Bosscher 2012-09-02 15:14:58 UTC --- (In reply to comment #7) But actually the problem is only visible if you print non-slim rtl. Before sched1: (jump_insn 13 12 15 3 (parallel [ (asm_operands/v ("") ("") 0 [ (reg:SI 62) (reg:SI 63) ] [ (asm_input:SI ("r") (null):0) (asm_input:SI ("r") (null):0) ] [ (label_ref:DI 17) ] t.c:11) (clobber (reg:QI 18 fpsr)) (clobber (reg:QI 17 flags)) (clobber (mem:BLK (scratch) [0 A8])) ]) t.c:3 -1 (nil) -> 17) (note 15 13 17 ("lab") NOTE_INSN_DELETED_LABEL 3) (code_label 17 15 18 4 1 "" [1 uses]) (note 18 17 0 4 [bb 4] NOTE_INSN_BASIC_BLOCK) After sched1: (jump_insn 13 12 15 3 (parallel [ (asm_operands/v ("") ("") 0 [ (reg:SI 62) (reg:SI 63) ] [ (asm_input:SI ("r") (null):0) (asm_input:SI ("r") (null):0) ] [ (label_ref:DI 17) <--- ref to code_label 17 ] t.c:11) (clobber (reg:QI 18 fpsr)) (clobber (reg:QI 17 flags)) (clobber (mem:BLK (scratch) [0 A8])) ]) t.c:3 -1 (expr_list:REG_DEAD (reg:SI 63) (expr_list:REG_DEAD (reg:SI 62) (expr_list:REG_UNUSED (reg:QI 18 fpsr) (expr_list:REG_UNUSED (reg:QI 17 flags) (nil))))) -> 17) (note 15 13 21 ("lab") NOTE_INSN_DELETED_LABEL 3) ...but code_label 17 has disappeared... (note 21 15 0 NOTE_INSN_DELETED) Note that the jump_insn now jumps to a non-existing label. There are two problems here: 1. verify_flow_info should detect that a jump references a non-existing label, and abort if that happens 2. The code_label 17 shouldn't be removed by the selective scheduler because it's still referenced.