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)

Reply via email to