From f74c4b2c4427a4309d48bfc45bc140422a75aa6f Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 8 Jan 2020 12:49:14 +0000 Subject: re PR tree-optimization/93199 (Compile time hog in sink_clobbers) 2019-01-08 Richard Biener PR middle-end/93199 c/ * gimple-parser.c (c_parser_parse_gimple_body): Remove __PHI IFN permanently. * gimple-fold.c (rewrite_to_defined_overflow): Mark stmt modified. * tree-ssa-loop-im.c (move_computations_worker): Properly adjust virtual operand, also updating SSA use. * gimple-loop-interchange.cc (loop_cand::undo_simple_reduction): Update stmt after resetting virtual operand. (tree_loop_interchange::move_code_to_inner_loop): Likewise. * gimple-iterator.c (gsi_remove): When not removing the stmt permanently do not delink immediate uses or mark the stmt modified. From-SVN: r280000 --- gcc/gimple-iterator.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'gcc/gimple-iterator.c') diff --git a/gcc/gimple-iterator.c b/gcc/gimple-iterator.c index 0ccca23..d401c69 100644 --- a/gcc/gimple-iterator.c +++ b/gcc/gimple-iterator.c @@ -558,16 +558,18 @@ gsi_remove (gimple_stmt_iterator *i, bool remove_permanently) gimple *stmt = gsi_stmt (*i); bool require_eh_edge_purge = false; + /* ??? Do we want to do this for non-permanent operation? */ if (gimple_code (stmt) != GIMPLE_PHI) insert_debug_temps_for_defs (i); - /* Free all the data flow information for STMT. */ gimple_set_bb (stmt, NULL); - delink_stmt_imm_use (stmt); - gimple_set_modified (stmt, true); if (remove_permanently) { + /* Free all the data flow information for STMT. */ + delink_stmt_imm_use (stmt); + gimple_set_modified (stmt, true); + if (gimple_debug_nonbind_marker_p (stmt)) /* We don't need this to be exact, but try to keep it at least close. */ -- cgit v1.1