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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amacleod at redhat dot com,
                   |                            |jakub at gcc dot gnu.org
           Priority|P3                          |P1
           Keywords|needs-bisection             |
            Summary|[17 Regression] Wrong code  |[17 Regression] Wrong code
                   |at -O1/s on                 |at -O1/s on
                   |x86_64-pc-linux-gnu         |x86_64-pc-linux-gnu since
                   |                            |r17-3298

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r17-3298-g836cb4ed48c987a4a9027cb14e6b6e1edeebcaf3
Slightly cleaned up:
signed char a;
int b, c;
short d[1];

short
foo (short *f, short g)
{
  int i = 0, j, l;
  long n = 1;
  for (int m = 0; m < a; m++)
    for (; i <= m; i++)
      n = i;
  for (unsigned k = 0; k < g; k++)
    {
      l = 0;
      do
        if (f)
          j = l + a;
      while (++l <= k);
    }
  n ^= j;
  while (a)
    n ^= b;
  return n;
}

int
main ()
{
  if (foo (d, 2) != 0)
    __builtin_abort ();
}

Reply via email to