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

            Bug ID: 121460
           Summary: `switch (v + 20) case` should optimize away the
                    addition
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Take:
```
void foo (int, int);

__attribute__((noinline, noclone)) void
f1 (unsigned char v, int w)
{
  unsigned char i, j;
  switch (v + 20)
    {
    case 170:
      j = 7;
      i = w;
      break;
    case 171:
      i = 8;
      j = v;
      break;
    case 172:
      i = 21;
      j = -19;
      break;
    case 173:
      i = 18;
      j = -w;
      break;
    case 174:
      i = 33;
      j = 55;
      break;
    case 175:
      i = 33;
      j = w;
      break;
    case 176:
      i = 33;
      j = 55;
      break;
    case 177:
      i = w;
      j = 55;
      break;
    default:
      __builtin_abort ();
    }

 lab:
  foo (i, j);
}
```

GCC should optimize away the addition.

Reply via email to