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

            Bug ID: 117244
           Summary: [14/15 Regression] missed vectorization of (unsigned
                    int)(-(bool_var))
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: keowang at hotmail dot com
  Target Milestone: ---

Starting with GCC-14, GCC seems to have missed the vectorization of the
following code.

https://godbolt.org/z/xfdW1dcM7

unsigned int a[19];

void f(bool b[19]) {
    for (int i = 0; i < 19; i += 1) 
    {
        a[i] = -b[i];
    }
}

f(bool*):
        xor     eax, eax
.L2:
        movzx   edx, BYTE PTR [rdi+rax]
        neg     edx
        mov     DWORD PTR a[0+rax*4], edx
        add     rax, 1
        cmp     rax, 19
        jne     .L2
        ret

If bisect is correct:
e6bcf83989478348428c732c11e6c0f1719e9214 is the first bad commit
https://github.com/gcc-mirror/gcc/commit/e6bcf83989478348428c732c11e6c0f1719e9214

Reply via email to