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.