http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56605
Steven Bosscher <steven at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |steven at gcc dot gnu.org --- Comment #2 from Steven Bosscher <steven at gcc dot gnu.org> 2013-03-12 23:00:07 UTC --- The first assumption is recorded at loop-iv.c:2472: Breakpoint 7, iv_number_of_iterations (loop=0x3fffb5dc0ee0, insn=0x3fffb5db6fa8, condition=0x3fffb5fd13c8, desc=0x3fffffffdf98) at ../../trunk/gcc/loop-iv.c:2472 2472 alloc_EXPR_LIST (0, assumption, desc->noloop_assumptions); (gdb) p assumption $1 = (rtx) 0x3fffb5fd1410 (gdb) p debug_rtx(assumption) (eq:SI (subreg:SI (reg:DI 153 [ bnd.10D.2035+-4 ]) 4) (const_int 0 [0])) $2 = void (gdb) cont Continuing. The second comes from loop-iv.c:2623: Breakpoint 8, iv_number_of_iterations (loop=0x3fffb5dc0ee0, insn=0x3fffb5db6fa8, condition=0x3fffb5fd13c8, desc=0x3fffffffdf98) at ../../trunk/gcc/loop-iv.c:2623 2623 alloc_EXPR_LIST (0, assumption, desc->noloop_assumptions); (gdb) p debug_rtx(assumption) (gtu:SI (plus:SI (subreg:SI (reg:DI 163 [ ivtmp.33D.2058+-4 ]) 4) (const_int 1 [0x1])) (subreg:SI (reg:DI 153 [ bnd.10D.2035+-4 ]) 4)) The second one is simplified using initial values at loop-iv.c:2777: 2777 simplify_using_initial_values (loop, IOR, &desc->noloop_assumptions); (gdb) p debug_rtx(desc->noloop_assumptions) (expr_list:REG_DEP_TRUE (gtu:SI (plus:SI (subreg:SI (reg:DI 163 [ ivtmp.33D.2058+-4 ]) 4) (const_int 1 [0x1])) (subreg:SI (reg:DI 153 [ bnd.10D.2035+-4 ]) 4)) (expr_list:REG_DEP_TRUE (eq:SI (subreg:SI (reg:DI 153 [ bnd.10D.2035+-4 ]) 4) (const_int 0 [0])) (nil))) $15 = void (gdb) next 2778 simplify_using_initial_values (loop, IOR, &desc->infinite); (gdb) p debug_rtx(desc->noloop_assumptions) (expr_list:REG_DEP_TRUE (eq:SI (subreg:SI (reg:DI 153 [ bnd.10D.2035+-4 ]) 4) (const_int 0 [0])) (expr_list:REG_DEP_TRUE (eq:SI (subreg:SI (reg:DI 153 [ bnd.10D.2035+-4 ]) 4) (const_int 0 [0])) (nil))) $16 = void (gdb) Insofar I can claim to understand loop-iv.c, this is supposed to be cleaned up by eliminate_implied_conditions.