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

            Bug ID: 106417
           Summary: [13 Regression] Wrong code with -O0
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vsevolod.livinskiy at gmail dot com
  Target Milestone: ---

Reproducer:
#include <stdio.h>

signed char var_84 = (signed char)-125;

int a;
void test() __attribute__((noipa));
void test() { var_84 = ~((a < 4094) ^ int(!a)); }

int main() {
  test();
  printf("%d\n", var_84);
  if (var_84 != -1)
    __builtin_abort();
}

Error:
>$ /usr/bin/g++ -O0 driver.cpp && ./a.out 
-1
>$ g++ -O0 driver.cpp && ./a.out 
1
Aborted (core dumped)

gcc version 13.0.0 20220722 (3c4af0f0549a07799d76e9e48d3d3bd85197b92a)

Reply via email to