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

            Bug ID: 98973
           Summary: [11 regression] Wrong code with gcse store motion pass
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: krebbel at gcc dot gnu.org
  Target Milestone: ---

This test aborts when compiled on IBM Z with:
gcc -O3 t.c -o t -fgcse-sm

it succeeds with -O2 or without -fgcse-sm

Tested with Commit ID: 072f20c5559
It works with GCC 10 branch: eb15f761bc7

long a;
int b, c;
short d;
int e[] = { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1 };

void
f ()
{
g:
  c = 9;
  for (; c >= 3; c--)
    {
      int h[5];
      for (; d; d--)
        ;
      for (; a;)
        if (e[c])
          b = h[4];
      if (e[c])
        continue;
      goto g;
    }
}

int
main ()
{
  f ();
  if (c != 2)
    __builtin_abort();
}

Reply via email to