This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/57763] [4.9 Regression]: comp-goto-1.c: ICE verify_flow_info failed, error: EDGE_CROSSING missing across section boundary


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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]