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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[14 Regression] ICE: in     |[14 Regression] ICE: in
                   |get_loop_exit_edges, at     |get_loop_exit_edges, at
                   |cfgloop.cc:1204 with -O3    |cfgloop.cc:1204 with -O3
                   |-fgraphite-identity         |-fgraphite-identity
                   |-fsave-optimization-record  |-fsave-optimization-record/
                   |                            |-fdump-tree-graphite

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
If we wrap the whole function inside a loop, there is no crash.
That is:
```
int long_c2i_ltmp;
int *long_c2i_cont;

void
long_c2i (long utmp, int i)
{
  for(int j = 0; j < 100; j++)
         {
  int neg = 1;
  switch (long_c2i_cont[0])
    case 0:
    neg = 0;

  for (; i; i++)
    if (neg)
      utmp |= long_c2i_cont[i] ^ 5;
    else
      utmp |= long_c2i_cont[i];
  long_c2i_ltmp = utmp;
         }
}
```

That is because the loop that is being chosen here for the `->loop_father` is
the outer most loop (that was just added).

Reply via email to