http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55838
--- Comment #6 from Steven Bosscher <steven at gcc dot gnu.org> 2013-01-01 19:51:12 UTC --- The nonsense set comes from force_operand: Breakpoint 7, unroll_loop_runtime_iterations (loop=0x7ffff6b46f68) at ../../trunk/gcc/loop-unroll.c:1041 1041 start_sequence (); (gdb) next 1042 old_niter = niter = gen_reg_rtx (desc->mode); (gdb) 1043 tmp = force_operand (copy_rtx (desc->niter_expr), niter); (gdb) p debug_rtx(niter) (reg:QI 124) $31 = void (gdb) next 1044 if (tmp != niter) (gdb) p debug_rtx_list (get_last_insn(), -99) (insn 91 0 92 (set (reg:QI 126) (const_int -126 [0xffffffffffffff82])) -1 (nil)) (insn 92 91 93 (parallel [ (set (reg:QI 125) (minus:QI (reg:QI 126) (subreg:QI (reg:SI 113 [ ivtmp.14 ]) 0))) (clobber (reg:CC 17 flags)) ]) -1 (nil)) (insn 93 92 94 (set (reg:QI 127) (const_int 129 [0x81])) -1 (nil)) (insn 94 93 95 (set (reg:CC 17 flags) (compare:CC (reg:QI 125) (reg:QI 127))) -1 (nil)) (insn 95 94 0 (set (reg:QI 128) (geu:QI (reg:CC 17 flags) (const_int 0 [0]))) -1 (expr_list:REG_EQUAL (udiv:QI (reg:QI 125) (const_int 129 [0x81])) (nil))) $32 = void (gdb)