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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
On x86_64 the initialization loop is miscompiled.

int
main ()
{
  unsigned int i = 0;
  signed char a[155 * 2];
  unsigned short b[155 * 2];
  for (i = 0; i < 155; i++)
    {
      a[i * 2] = i * 2 + i % 3;
      a[i * 2 + 1] = i * 3 + i % 4;
      b[i * 2] = i * 7 + i / 5;
      b[i * 2 + 1] = i * 8 + i / 6;
    }
  for (i = 0; i < 155; ++i)
    if (a[i*2] != (signed char)(i*2 + i%3)
        || a[i*2+1] != (signed char)(i*3 + i%4)
        || b[i*2] != (unsigned short)(i*7 + i/5)
        || b[i*2+1] != (unsigned short)(i*8 + i/6))
      abort ();
  return 0;
}

Reply via email to