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

            Bug ID: 114386
           Summary: [10/11/12 Regression] Miscompile at -O1
           Product: gcc
           Version: 12.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: patrick at rivosinc dot com
  Target Milestone: ---

Testcase:
int printf(const char *, ...);
_Bool a, c = 1;
int b, d;
int main() {
  _Bool g = c;
  d = !a ? ({ c > a ? c : a; }) : 0;
  printf("%x\n", d);
}

Commands:
> gcc -O0 red.c -o red.o
> ./red.o
0

> gcc -O1 red.c -o red.o
> ./red.o
1

> gcc -O2 red.c -o red.o
> ./red.o
0

> gcc -O3 red.c -o red.o
> ./red.o
1

Tested/discovered on x86 - gcc v11.4.0.
Issue is not present when targeting risc-v.

Godbolt shows it's a regression starting at 10.1 (with -O1) and resolved as of
13.1.

Godbolt: https://godbolt.org/z/q4P9xs5dx

Reply via email to