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

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I would clean it even more:
int a, b, c, d, e;
int f[8];
int g() {
  while (a)
    a >>= 4;
  return 0;
}
int h(int i) {
  if (i >= '0')
    return i - '0';
  //__builtin_unreachable ();
}
void j(int i) {
  for (b = 2; g() <= 7; b++)
    if (i) {
      for (; e <= 7; e++)
        for (c = 1; c <= 7; c++) {
          d = h(b + '0');
          f[-d + 4] ^= 3;
        }
      return;
    }
}
int main() {
  j(1);
  if (f[2] != 0)
    __builtin_abort ();
}
so that a) it isn't ASCII specific and misbehaves for EBCDIC etc., and b)
undoes what creduce/cvise likes to do, moving expressions from for init
expression before the loop

Reply via email to