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

            Bug ID: 118953
           Summary: Miscompile at -O3
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: yunboni at smail dot nju.edu.cn
  Target Milestone: ---

This code prints 45 at -O3 and 0 at -O0/1/2/s:

int printf(const char *, ...);
int a, d;
long b, c;
int e(int f, int g, unsigned long h, long j) {
  unsigned long i = 0;
  if (g)
    switch (f) {
    case 8:
      i = b;
      break;
    case 6:
      i = c;
    }
  else
    switch (f) {
    case 8:
      i = h;
      break;
    case 24:
    case 32:
      i = j;
    }
  return i;
}
int main() {
  int k = a * (409628 - 28);
  d = e(k - 1048524, 0, k - 1048487, (unsigned long)k - 1048531);
  printf("%d\n", d);
}

Compiler Explorer: https://godbolt.org/z/YTWjbWe3s

Bisected to
https://github.com/gcc-mirror/gcc/commit/602e824eec30a7c6792b8b27d61c40f1c1a2714c

Reply via email to