[Bug debug/95431] inconsistent behaviors at -O2

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Mar 7 07:21:57 GMT 2021


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

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Looks correct at the gimple level:
  [t.c:6:3] # DEBUG BEGIN_STMT
  [t.c:6:16] one.0_1 ={v} one;
  [t.c:6:16] _2 = (char) one.0_1;
  [t.c:6:8] a1[0] = _2;
  [t.c:6:8] MEM <unsigned short> [(char *)&a1 + 1B] = 770;
  [t.c:6:8] a1[3] = 4;

  [t.c:7:3] # DEBUG BEGIN_STMT
  [t.c:7:8] a2[0] = 1;
  [t.c:7:19] one.1_3 ={v} one;
  [t.c:7:19] _4 = (unsigned char) one.1_3;
  [t.c:7:19] _5 = _4 * 2;
  [t.c:7:19] _6 = (char) _5;
  [t.c:7:8] a2[1] = _6;
  [t.c:7:8] MEM <unsigned short> [(char *)&a2 + 2B] = 1027;

  [t.c:8:3] # DEBUG BEGIN_STMT
  [t.c:8:31] one.2_7 ={v} one;
  [t.c:8:31] _8 = one.2_7 + 5;
  [t.c:8:13] _9 = (long unsigned int) _8;
  [t.c:8:13] res_19 = memcmp ([t.c:8:21] &a1, [t.c:8:25] &a2, _9);
  [t.c:8:13] # DEBUG res => res_19
  [t.c:9:3] # DEBUG BEGIN_STMT

Assembly:
        .loc 1 6 3 view .LVU1
        .loc 1 5 12 is_stmt 0 view .LVU2
        subq    $24, %rsp
        .cfi_def_cfa_offset 32
        .loc 1 6 16 view .LVU3
        movl    one(%rip), %eax
        .loc 1 7 8 view .LVU4
        movl    $1027, %edx
        movw    %dx, 14(%rsp)
        .loc 1 8 13 view .LVU5
        leaq    12(%rsp), %rsi
        leaq    8(%rsp), %rdi
        .loc 1 6 16 view .LVU6
        movb    %al, 8(%rsp)
        .loc 1 6 8 view .LVU7
        movl    $770, %eax
        movw    %ax, 9(%rsp)
        .loc 1 7 19 view .LVU8
        movl    one(%rip), %eax
        .loc 1 8 31 view .LVU9
        movl    one(%rip), %edx
        .loc 1 6 8 view .LVU10
        movb    $4, 11(%rsp)
        .loc 1 7 3 is_stmt 1 view .LVU11
        .loc 1 8 3 view .LVU12
        .loc 1 7 19 is_stmt 0 view .LVU13
        addl    %eax, %eax
        .loc 1 7 8 view .LVU14
        movb    $1, 12(%rsp)
        .loc 1 8 31 view .LVU15
        addl    $5, %edx
        .loc 1 7 19 view .LVU16
        movb    %al, 13(%rsp)
        .loc 1 8 13 view .LVU17
        movslq  %edx, %rdx


This could be a gdb issue because what GCC produces look correct.


More information about the Gcc-bugs mailing list