https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95272
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- static void vect_slp_rearrange_stmts (slp_tree node, unsigned int group_size, vec<unsigned> permutation, hash_set<slp_tree> &visited) { ... /* ??? Computation nodes are isomorphic and need no rearrangement. This is a quick hack to cover those where rearrangement breaks semantics because only the first stmt is guaranteed to have the correct operation code due to others being swapped or inverted. */ stmt_vec_info first = SLP_TREE_SCALAR_STMTS (node)[0]; if (is_gimple_assign (first->stmt) && gimple_assign_rhs_code (first->stmt) == COND_EXPR) return; bites back. This leaves us with an inconsistent SLP tree (harmless before the change exposing the ICE).