http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46878
Jeffrey A. Law <law at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |law at redhat dot com
--- Comment #6 from Jeffrey A. Law <law at redhat dot com> 2011-01-18 13:43:10
UTC ---
Why is the comparison marked with SCHED_GROUP_P? I think that's your
underlying problem as SCHED_GROUP_P indicates the current insn must be
scheduled with the previous insn. But there is no previous insn in the block.
(gdb) p debug_bb_n (4)
;; basic block 4, loop depth 0, count 0
;; prev block 3, next block 5
;; pred: 2 [50.0%]
;; succ: 7 [78.4%] 5 [21.6%] (fallthru)
;; bb 4 artificial_defs: { }
;; bb 4 artificial_uses: { u17(3){ }u18(29){ }u19(34){ }u20(35){ }}
;; lr in 3 [sp] 29 [r29] 34 [.fp] 35 [.ap] 43 47 48
;; lr use 3 [sp] 29 [r29] 34 [.fp] 35 [.ap] 43 47
;; lr def 42 44
;; live in 3 [sp] 29 [r29] 34 [.fp] 35 [.ap] 43 47 48
;; live gen 42 44
;; live kill
(code_label 20 62 21 4 2 "" [1 uses])
(note 21 20 22 4 [bb 4] NOTE_INSN_BASIC_BLOCK)
(note 22 21 23 4 NOTE_INSN_DELETED)
(insn/s 23 22 60 4 (set (reg/v:SI 44 [ c ])
(ne:SI (cc0)
(const_int 0 [0]))) j.c:10 40 {*setcc}
(nil))
(note 60 23 59 4 NOTE_INSN_DELETED)
(insn 59 60 30 4 (set (reg/v/f:SI 42 [ tmpp ])
(if_then_else:SI (ne (reg:SI 43 [ D.1959 ])
(const_int 1 [0x1]))
(reg/v/f:SI 47 [ op ])
(const_int 0 [0]))) j.c:15 46 {*movsicc_normal}
(expr_list:REG_DEAD (reg/v/f:SI 47 [ op ])
(expr_list:REG_DEAD (reg:SI 43 [ D.1959 ])
(nil))))
(insn 30 59 31 4 (set (cc0)
(compare (reg/v/f:SI 42 [ tmpp ])
(const_int 0 [0]))) j.c:16 16 {cmpsi_insn}
(expr_list:REG_DEAD (reg/v/f:SI 42 [ tmpp ])
(nil)))
(jump_insn 31 30 32 4 (set (pc)
(if_then_else (ne (cc0)
(const_int 0 [0]))
(label_ref:SI 50)
(pc))) j.c:16 53 {*branch_normal}
(expr_list:REG_BR_PROB (const_int 7837 [0x1e9d])
(nil))
-> 50)
;; lr out 3 [sp] 29 [r29] 34 [.fp] 35 [.ap] 44 48
;; live out 3 [sp] 29 [r29] 34 [.fp] 35 [.ap] 44 48
Note the /s on insn 23. That's SCHED_GROUP_P.