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

--- Comment #22 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok.  So the ICEs are because we now have PHIs in the SLP tree but those can
get re-allocated during early transform phase that does peeling by
copy_bbs which uses duplicate_block which duplicates successor edges (thereby
allocating new PHI args which eventually makes PHIs grow over capacity).
We're later throwing away the stale entry edges (and the PHI args) but only
from the re-allocated PHI which is not the one referenced.

It seems wasteful to do this PHI arg handling in copy_bbs.  A hack is possible
(luckily gimple_cfg_hooks and the like are not const...).

Doesn't work so nicely for the edges to out of bbs[] though :/

Eventually adding duplicate_block_raw and doing this more manually would work.

Bah.

Sanity checking of vinfo_for_stmt (stmt)->stmt == stmt would have uncovered
this earlier for PHIs.

Reply via email to