[Bug middle-end/68117] [6 Regression] error: invalid PHI argument <<< Unknown tree: <invalid tree code> >>>
Joost.VandeVondele at mat dot ethz.ch
gcc-bugzilla@gcc.gnu.org
Mon Nov 16 09:21:00 GMT 2015
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
More information about the Gcc-bugs
mailing list