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

--- Comment #15 from linzj <manjian2006 at gmail dot com> ---
      dir = merge_dir (dir, old_insns_match_p (0, i1, i2));
      if (dir == dir_none || (!dir_p && dir != dir_both))
    break;
    {
      print_rtl_single (stdout, i1);
      print_rtl_single (stdout, i2);
      printf ("dir = %d\n",dir);
    }
outputs:
(insn 14 13 53 3 (parallel [
            (set (reg/f:SI 7 sp)
                (plus:SI (reg/f:SI 7 sp)
                    (const_int 16 [0x10])))
            (clobber (reg:CC 17 flags))
        ]) 1.cpp:14 241 {*addsi_1}
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (expr_list:REG_ARGS_SIZE (const_int 0 [0])
            (nil))))
(insn 38 55 39 4 (parallel [
            (set (reg/f:SI 7 sp)
                (plus:SI (reg/f:SI 7 sp)
                    (const_int 16 [0x10])))
            (clobber (reg:CC 17 flags))
        ]) 241 {*addsi_1}
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (expr_list:REG_ARGS_SIZE (const_int 0 [0])
            (nil))))
dir = 1

That's exactly what should not be merged.

Reply via email to