[Bug middle-end/20177] ICE in schedule-insns for -O2 -fmodulo-sched

steven at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Mar 16 01:24:00 GMT 2005


------- Additional Comments From steven at gcc dot gnu dot org  2005-03-16 01:24 -------
This is at the point where die.  Block 2 and block 7 both set reg 136.  
Block 2 uses it, and the predecessors of block 2 are block 2 and block 7.  
Reg 136 is in liveout(2).  But it is not in liveout(7) for some reason.  
That is just wrong, reg 136 is live on exit of block 7, too.  
  
(gdb) p debug_bb_n(7)  
;; basic block 7, loop depth 0, count 0  
;; prev block 1, next block 2  
;; pred:       1 [100.0%]  (fallthru)  
;; succ:       2 [100.0%]  (fallthru)  
;; Registers live at start:  1 [1] 31 [31] 67 [ap] 122 126 138 142  
(note 108 106 93 7 [bb 7] NOTE_INSN_BASIC_BLOCK)  
(insn 93 108 107 7 (set (reg:SF 135)  
        (mem/s:SF (reg/f:SI 122 [ ivtmp.11 ]) [4 S4 A8])) 224  
{*movsf_hardfloat} (nil)  
    (nil))  
(insn 107 93 97 7 (set (reg:SI 142 [ n.3 ])  
        (plus:SI (reg:SI 142 [ n.3 ])  
            (const_int -1 [0xffffffffffffffff]))) 31 {*addsi3_internal1} (nil)  
    (nil))  
(insn 97 107 95 7 (set (reg:SF 136)  
        (plus:SF (reg:SF 138)  
            (reg:SF 135))) 129 {*rs6000.md:4493} (insn_list:REG_DEP_TRUE 93  
(nil))  
    (nil))  
(insn 95 97 56 7 (set (reg/f:SI 122 [ ivtmp.11 ])  
        (plus:SI (reg/f:SI 122 [ ivtmp.11 ])  
            (const_int 4 [0x4]))) 31 {*addsi3_internal1}  
(insn_list:REG_DEP_ANTI 93 (nil))  
    (nil))  
;; Registers live at end:  1 [1] 31 [31] 67 [ap] 122 126 138 142  
$12 = (struct basic_block_def *) 0x400b2258  
(gdb) p debug_bb_n(2)  
;; basic block 2, loop depth 1, count 0  
;; prev block 7, next block 3  
;; pred:       7 [100.0%]  (fallthru) 2 [89.0%]  (dfs_back)  
;; succ:       2 [89.0%]  (dfs_back) 3 [11.0%]  (fallthru,loop_exit)  
;; Registers live at start:  1 [1] 31 [31] 67 [ap] 122 126 138 142  
(code_label:HI 33 56 34 2 4 "" [2 uses])  
(note:HI 34 33 37 2 [bb 2] NOTE_INSN_BASIC_BLOCK)  
(insn:HI 37 34 42 2 (set (reg:SF 135)  
        (mem/s:SF (reg/f:SI 122 [ ivtmp.11 ]) [4 S4 A8])) 224  
{*movsf_hardfloat} (nil)  
    (nil))  
(insn:HI 42 37 65 2 (set (reg/f:SI 122 [ ivtmp.11 ])  
        (plus:SI (reg/f:SI 122 [ ivtmp.11 ])  
            (const_int 4 [0x4]))) 31 {*addsi3_internal1}  
(insn_list:REG_DEP_ANTI 37 (nil))  
    (nil))  
(insn:HI 65 42 38 2 (set (reg:SF 138)  
        (reg:SF 136)) 224 {*movsf_hardfloat} (insn_list:REG_DEP_TRUE 38 (nil))  
    (expr_list:REG_DEAD (reg:SF 136)  
        (nil)))  
(insn:HI 38 65 74 2 (set (reg:SF 136)  
        (plus:SF (reg:SF 138)  
            (reg:SF 135))) 129 {*rs6000.md:4493} (insn_list:REG_DEP_TRUE 37  
(nil))  
    (expr_list:REG_DEAD (reg:SF 135)  
        (nil)))  
(jump_insn:HI 74 38 57 2 (parallel [  
            (set (pc)  
                (if_then_else (ne (reg:SI 142 [ n.3 ])  
                        (const_int 1 [0x1]))  
                    (label_ref 33)  
                    (pc)))  
            (set (reg:SI 142 [ n.3 ])  
                (plus:SI (reg:SI 142 [ n.3 ])  
                    (const_int -1 [0xffffffffffffffff])))  
            (clobber (scratch:CC))  
            (clobber (scratch:SI))  
        ]) 377 {*ctrsi_internal1} (nil)  
    (expr_list:REG_UNUSED (scratch:SI)  
        (expr_list:REG_UNUSED (scratch:CC)  
            (nil))))  
;; Registers live at end:  1 [1] 31 [31] 67 [ap] 122 126 136 138 142  
$13 = (struct basic_block_def *) 0x400a5a50  
 
The note comes from the flow update in rest_of_handle_sms. 

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20177



More information about the Gcc-bugs mailing list