[Bug rtl-optimization/93264] [10 Regression] ICE in cfg_layout_redirect_edge_and_branch_force, at cfgrtl.c:4522

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Apr 2 11:44:12 GMT 2020


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

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
So let's try to address this in cfgloop.c - we're likely facing the situation
of

 header:
...
  if (...) goto latch1;

 latch2:
   goto header;

 latch1: // in cold section
   goto header;

where latch disambiguation via merge_latch_egdes tries to build

  header:
...
  if (...) goto latch1;

 latch2:
   goto latch3;

 latch1: // in cold section
   goto latch3;

 latch3: // somewhere
   goto header;

but somehow we end up redirecting a jump that was formerly crossing
to non-crossing.  Looking at the backtrace it must be entry edges
that are being redirected but the whole setup should be so that
the crossing state of a branch is never changed.

Unfortunately I can't reproduce on todays trunk, will try rewiding backwards
to the reporting time to have a closer look.


More information about the Gcc-bugs mailing list