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

            Bug ID: 118145
           Summary: Regression of code generation due to an overly eager
                    vectorization attempt
           Product: gcc
           Version: 14.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: arseny.kapoulkine at gmail dot com
  Target Milestone: ---

For the following code snippet:

bool canEncodeZero(const unsigned char* buffer)
{
        uint64_t x, y;
        memcpy(&x, buffer + 0, 8);
        memcpy(&y, buffer + 8, 8);
        return (x | y) == 0;
}


https://gcc.godbolt.org/z/eeWKsn4Y7

gcc 13.x used to generate optimal code (mov/or/sete); however, since gcc 14.x
on -O2 and -O3 the generated code is less optimal due to extra vector
instructions that don't end up being worthwhile.

The issue persists on gcc trunk.

Reply via email to