https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91270
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|ice during GIMPLE pass: dce |[10 Regression] ICE in
| |verify_use at
| |gcc/tree-ssa.c:883 since
| |r273791
--- Comment #5 from Martin Liška <marxin at gcc dot gnu.org> ---
I've got a patch candidate:
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index cf507fa0453..bdaad09ef35 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -1294,6 +1294,21 @@ eliminate_unnecessary_stmts (void)
&& !gimple_plf (def_stmt, STMT_NECESSARY))
gimple_set_plf (stmt, STMT_NECESSARY, false);
}
+
+ /* Delete operator has 2 arguments, where the second argument is
+ size of the deallocated memory. */
+ if (is_gimple_call (stmt)
+ && gimple_call_operator_delete_p (as_a <gcall *> (stmt)))
+ {
+ tree ptr = gimple_call_arg (stmt, 1);
+ if (TREE_CODE (ptr) == SSA_NAME)
+ {
+ gimple *def_stmt = SSA_NAME_DEF_STMT (ptr);
+ if (!gimple_nop_p (def_stmt)
+ && !gimple_plf (def_stmt, STMT_NECESSARY))
+ gimple_set_plf (stmt, STMT_NECESSARY, false);
+ }
+ }
}
/* If GSI is not necessary then remove it. */
I'll finish it tomorrow morning and send it to mailing list.