This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/57763] [4.9 Regression]: comp-goto-1.c: ICE verify_flow_info failed, error: EDGE_CROSSING missing across section boundary
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 30 Jun 2013 17:12:00 +0000
- Subject: [Bug rtl-optimization/57763] [4.9 Regression]: comp-goto-1.c: ICE verify_flow_info failed, error: EDGE_CROSSING missing across section boundary
- Auto-submitted: auto-generated
- References: <bug-57763-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57763
--- Comment #3 from UroÅ Bizjak <ubizjak at gmail dot com> ---
Looking at the BB 28, we have following in _.212r.gcse2:
;; basic block 28, loop depth 0, count 0, freq 0, probably never executed
;; Invalid sum of outgoing probabilities 0.0%
;; prev block 27, next block 29, flags: (NEW, REACHABLE, HOT_PARTITION, RTL,
MODIFIED)
;; pred: 3 [100.0%]
;; bb 28 artificial_defs: { }
;; bb 28 artificial_uses: { u-1(30){ }}
;; lr in 1 [$1] 2 [$2] 5 [$5] 26 [$26] 29 [$29] 30 [$30]
;; lr use 30 [$30]
;; lr def 3 [$3]
;; live in 1 [$1] 2 [$2] 5 [$5] 26 [$26] 30 [$30]
;; live gen 3 [$3]
;; live kill
(code_label 375 374 377 28 21 "" [1 uses])
(note 377 375 415 28 [bb 28] NOTE_INSN_BASIC_BLOCK)
(insn 415 377 416 28 (set (reg:DI 3 $3 [379])
(high:DI (label_ref:DI 253))) 226 {*movdi}
(expr_list:REG_EQUIV (high:DI (label_ref:DI 253))
(insn_list:REG_LABEL_OPERAND 253 (nil))))
(insn 416 415 417 28 (set (reg:DI 3 $3 [378])
(lo_sum:DI (reg:DI 3 $3 [379])
(label_ref:DI 253))) 224 {*movdi_er_low_l}
(expr_list:REG_EQUIV (label_ref:DI 253)
(insn_list:REG_LABEL_OPERAND 253 (nil))))
(jump_insn 417 416 378 28 (set (pc)
(reg:DI 3 $3 [378])) 214 {indirect_jump}
(expr_list:REG_CROSSING_JUMP (nil)
(nil)))
;; succ: 4 (CROSSING)
;; lr out 1 [$1] 2 [$2] 5 [$5] 26 [$26] 29 [$29] 30 [$30]
;; live out 1 [$1] 2 [$2] 5 [$5] 26 [$26] 30 [$30]
(insn 415) is split into (insn 483), and in _.213r.split2 dump, we get:
;; basic block 28, loop depth 0, count 0, freq 0, probably never executed
;; prev block 27, next block 29, flags: (NEW, REACHABLE, HOT_PARTITION, RTL,
MODIFIED)
;; pred: 3 [100.0%]
;; bb 28 artificial_defs: { }
;; bb 28 artificial_uses: { u-1(30){ }}
;; lr in 1 [$1] 2 [$2] 5 [$5] 26 [$26] 29 [$29] 30 [$30]
;; lr use 30 [$30]
;; lr def 3 [$3]
;; live in 1 [$1] 2 [$2] 5 [$5] 26 [$26] 30 [$30]
;; live gen 3 [$3]
;; live kill
(code_label 375 374 377 28 21 "" [1 uses])
(note 377 375 483 28 [bb 28] NOTE_INSN_BASIC_BLOCK)
(insn 483 377 416 28 (set (reg:DI 3 $3 [379])
(plus:DI (reg:DI 29 $29)
(high:DI (label_ref:DI 253)))) 6 {*adddi_er_high_l}
(expr_list:REG_EQUAL (high:DI (label_ref:DI 253))
(nil)))
(insn 416 483 417 28 (set (reg:DI 3 $3 [378])
(lo_sum:DI (reg:DI 3 $3 [379])
(label_ref:DI 253))) 224 {*movdi_er_low_l}
(expr_list:REG_EQUIV (label_ref:DI 253)
(insn_list:REG_LABEL_OPERAND 253 (nil))))
(jump_insn 417 416 378 28 (set (pc)
(reg:DI 3 $3 [378])) 214 {indirect_jump}
(expr_list:REG_CROSSING_JUMP (nil)
(nil)))
;; succ: 4 [25.0%] (CROSSING)
;; 22 [25.0%] (ABNORMAL)
;; 13 [25.0%] (ABNORMAL)
;; 11 [25.0%] (ABNORMAL)
;; lr out 1 [$1] 2 [$2] 5 [$5] 26 [$26] 29 [$29] 30 [$30]
;; live out 1 [$1] 2 [$2] 5 [$5] 26 [$26] 30 [$30]
Please note, that edges 22, 13 and 11 appeared out of the blue, apparently for
no reason.