https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68117
--- Comment #28 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> --- (In reply to Richard Biener from comment #27) > Sth like > > Index: gcc/tree-ssa.c > =================================================================== > --- gcc/tree-ssa.c (revision 230404) > +++ gcc/tree-ssa.c (working copy) > @@ -125,6 +125,14 @@ redirect_edge_var_map_destroy (void) > edge_var_maps = NULL; > } > > +/* Verify the edge_var_map is empty. */ > + > +void > +check_redirect_edge_var_map_empty (void) > +{ > + gcc_assert (!edge_var_maps || edge_var_maps->elements () == 0); > +} > + > > /* Remove the corresponding arguments from the PHI nodes in E's > destination block and redirect it to DEST. Return redirected edge. > Index: gcc/tree-ssa.h > =================================================================== > --- gcc/tree-ssa.h (revision 230404) > +++ gcc/tree-ssa.h (working copy) > @@ -36,6 +36,7 @@ extern void redirect_edge_var_map_clear > extern void redirect_edge_var_map_dup (edge, edge); > extern vec<edge_var_map> *redirect_edge_var_map_vector (edge); > extern void redirect_edge_var_map_destroy (void); > +extern void check_redirect_edge_var_map_empty (void); > extern edge ssa_redirect_edge (edge, basic_block); > extern void flush_pending_stmts (edge); > extern void gimple_replace_ssa_lhs (gimple *, tree); > Index: gcc/passes.c > =================================================================== > --- gcc/passes.c (revision 230404) > +++ gcc/passes.c (working copy) > @@ -2211,7 +2214,10 @@ execute_one_ipa_transform_pass (struct c > > /* Signal this is a suitable GC collection point. */ > if (!(todo_after & TODO_do_not_ggc_collect)) > - ggc_collect (); > + { > + check_redirect_edge_var_map_empty (); > + ggc_collect (); > + } > } > > /* For the current function, execute all ipa transforms. */ > @@ -2380,7 +2386,10 @@ execute_one_pass (opt_pass *pass) > > /* Signal this is a suitable GC collection point. */ > if (!((todo_after | pass->todo_flags_finish) & TODO_do_not_ggc_collect)) > - ggc_collect (); > + { > + check_redirect_edge_var_map_empty (); > + ggc_collect (); > + } > > return true; > } > > after all edge_var_maps is _not_ GTY marked. triggers plenty of ICEs in my case: /data/vjoost/clean/cp2k/cp2k/src/grid/fast.F:59:0: END SUBROUTINE rankup internal compiler error: in check_redirect_edge_var_map_empty, at tree-ssa.c:133