https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103808

            Bug ID: 103808
           Summary: [12 Regression] '-fcompare-debug' failure (length) w/
                    -O2 -ftrapv
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---
            Target: x86_64-unknown-linux-gnu

gcc 12.0.0 20211219 snapshot (g:fcbf94a5be9e0c1ecad92da773a6632b86b7f70a) fails
-fcompare-debug check when compiling the following testcase w/ -O2 -ftrapv:

void
foo (__int128 x, int y)
{
  for (;;)
    {
      __int128 a, b;

      x |= !!y;
      a = x + 1;
      b = y ? ++y : ++x;
      y = a < b;
      if (x >> 2)
        y *= 2;

      if (y == b)
        __builtin_unreachable ();
    }
}

% x86_64-unknown-linux-gnu-gcc-12.0.0 -O2 -fcompare-debug -ftrapv -c ddz9adk2.c
x86_64-unknown-linux-gnu-gcc-12.0.0: error: ddz9adk2.c: '-fcompare-debug'
failure (length)

--- ddz9adk2.c.gkd      2021-12-23 00:04:28.297518259 +0700
+++ ddz9adk2.gk.c.gkd   2021-12-23 00:04:28.387512439 +0700
@@ -6,11 +6,11 @@
 (note # 0 0 [bb 2] NOTE_INSN_BASIC_BLOCK)
 (note # 0 0 NOTE_INSN_DELETED)
 (note # 0 0 NOTE_INSN_DELETED)
-(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [  S8 A8])
+(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp [ x+8 ])) [  S8
A8])
         (reg:DI 42 r14)) "ddz9adk2.c":3:1# {*pushdi2_rex64}
      (expr_list:REG_DEAD (reg:DI 42 r14)
         (nil)))
-(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [  S8 A8])
+(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp [ x+8 ])) [  S8
A8])
         (reg:DI 41 r13)) "ddz9adk2.c":3:1# {*pushdi2_rex64}
      (expr_list:REG_DEAD (reg:DI 41 r13)
         (nil)))
@@ -18,7 +18,7 @@
         (reg:DI 4 si [123])) "ddz9adk2.c":3:1# {*movdi_internal}
      (expr_list:REG_DEAD (reg:DI 4 si [123])
         (nil)))
-(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [  S8 A8])
+(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp [ x+8 ])) [  S8
A8])
         (reg:DI 40 r12)) "ddz9adk2.c":3:1# {*pushdi2_rex64}
      (expr_list:REG_DEAD (reg:DI 40 r12)
         (nil)))
@@ -26,11 +26,11 @@
         (reg:DI 5 di [122])) "ddz9adk2.c":3:1# {*movdi_internal}
      (expr_list:REG_DEAD (reg:DI 5 di [122])
         (nil)))
-(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [  S8 A8])
+(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp [ x+8 ])) [  S8
A8])
         (reg:DI 6 bp)) "ddz9adk2.c":3:1# {*pushdi2_rex64}
      (expr_list:REG_DEAD (reg:DI 6 bp)
         (nil)))
-(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [  S8 A8])
+(insn/f:TI # 0 0 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp [ x+8 ])) [  S8
A8])
         (reg:DI 3 bx)) "ddz9adk2.c":3:1# {*pushdi2_rex64}
      (expr_list:REG_DEAD (reg:DI 3 bx)
         (nil)))

Reply via email to