https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84659
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-03-06 CC| |abel at gcc dot gnu.org, | |amonakov at gcc dot gnu.org, | |jakub at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So, we have bb 5: (code_label 29 65 30 5 4 (nil) [1 uses]) (note 30 29 32 5 [bb 5] NOTE_INSN_BASIC_BLOCK) (insn 32 30 33 5 (set (mem:SI (reg/f:SI 125 [ _5 ]) [1 *_20+0 S4 A32]) (reg:SI 143)) "pr84659.c":7 503 {*movsi_internal1} (expr_list:REG_DEAD (reg:SI 143) (expr_list:REG_DEAD (reg/f:SI 125 [ _5 ]) (nil)))) (insn 33 32 34 5 (set (reg/f:SI 125 [ _5 ]) (mem/f:SI (reg/v/f:SI 129 [ x ]) [2 *x_10(D)+0 S4 A32])) "pr84659.c":4 503 {*movsi_internal1} (nil)) (insn 34 33 36 5 (set (reg:SI 126 [ _6 ]) (mem:SI (reg/f:SI 125 [ _5 ]) [1 *_5+0 S4 A32])) "pr84659.c":4 503 {*movsi_internal1} (nil)) (insn 36 34 64 5 (set (reg:CC 144) (compare:CC (reg:SI 126 [ _6 ]) (const_int 0 [0]))) "pr84659.c":4 774 {*cmpsi_signed} (nil)) (insn 64 36 37 5 (const_int -1 [0xffffffffffffffff]) "pr84659.c":7 -1 (nil)) (jump_insn 37 64 38 5 (set (pc) (if_then_else (le (reg:CC 144) (const_int 0 [0])) (label_ref:SI 29) (pc))) "pr84659.c":4 849 {*rs6000.md:12271} (expr_list:REG_DEAD (reg:CC 144) (int_list:REG_BR_PROB 955630228 (nil))) -> 29) with succs edges 5->5 and 5->6, and call compute_live_after_bb on that bb. This in turn does: 3073 IOR_REG_SET (lv, compute_live (sel_bb_head (e->dest))); where sel_bb_head is insn 32 above, but src is NULL there, BB_LV_SET_VALID_P (bb) is false and so is INSN_LIVE_VALID_P in all the insns (32, 34, 36, 64 and 37). This means we: 3124 temp = NEXT_INSN (insn); 3125 final = NEXT_INSN (BB_END (bb)); 3126 while (temp != final && ! INSN_LIVE_VALID_P (temp)) 3127 temp = NEXT_INSN (temp); 3128 if (temp == final) 3129 { 3130 lv = compute_live_after_bb (bb); 3131 temp = PREV_INSN (temp); 3132 } temp == final == first insn of the following bb, and we recurse again into compute_live_after_bb.