https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62070
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-checking Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Summary|[4.10 Regression] ICE: |ICE: verify_ssa failed |verify_ssa failed | Known to fail| |4.10.0, 4.6.4, 4.7.4, | |4.8.3, 4.9.1 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Fails since 4.6 at least. Predictive commoning gets confused. Not sure if really a regression. Note that you need checking enabled. We end up here static void execute_pred_commoning_chain (struct loop *loop, chain_p chain, bitmap tmp_vars) { unsigned i; dref a; tree var; if (chain->combined) { /* For combined chains, just remove the statements that are used to compute the values of the expression (except for the root one). */ for (i = 1; chain->refs.iterate (i, &a); i++) remove_stmt (a->stmt); failing to realize that unrolling may end up creating new PHIs. Note that predcom does just fine in the end - it just is "broken" by the intermittent verification in gimple_duplicate_loop_to_header_edge. That is already skipped in some cases so just remove it completely now.