https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81464
--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> --- (In reply to Tom de Vries from comment #3) > Tentative patch: > ... > diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c > index 929c530..089bffc 100644 > --- a/gcc/omp-expand.c > +++ b/gcc/omp-expand.c > @@ -4206,6 +4206,10 @@ expand_omp_for_static_chunk (struct omp_region > *region, > source_location locus; > > phi = psi.phi (); > + if (operand_equal_p (gimple_phi_arg_def (phi, 0), > + gimple_phi_arg_def (phi, 1), 0)) > + continue; > + > t = gimple_phi_result (phi); > gcc_assert (t == redirect_edge_var_map_result (vm)); > > ... As it turns out, at the point of the operand_equal_p test, we already lost the second argument of the phi. I thought that this would trigger an assert, but apparently we don't have this: ... @@ -4379,6 +4379,7 @@ phi_nodes_ptr (basic_block bb) static inline tree gimple_phi_arg_def (gimple *gs, size_t index) { + gcc_gimple_checking_assert (index < gimple_phi_num_args(gs)); return gimple_phi_arg (gs, index)->def; } ... Using redirect_edge_var_map_def instead fixes this.