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

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Isn't what happens in i386.cc more like:
void foo (long);
int data[128];
static int bar (int i, long j)
{
  if (j >= -64 && j <= 64)
    return data[j+64];
  foo (j);
}

int baz (unsigned int j)
{
  int k = j / 8;
  return bar (0, -k);
}
?  Because we know in the caller it is [-0x1fffffff, 0] ...

Reply via email to