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-loop-interchange.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'gcc/gimple-loop-interchange.cc') diff --git a/gcc/gimple-loop-interchange.cc b/gcc/gimple-loop-interchange.cc index b3cb7700..2379848 100644 --- a/gcc/gimple-loop-interchange.cc +++ b/gcc/gimple-loop-interchange.cc @@ -879,6 +879,7 @@ loop_cand::undo_simple_reduction (reduction_p re, bitmap dce_seeds) if (re->producer != NULL) { gimple_set_vuse (re->producer, NULL_TREE); + update_stmt (re->producer); from = gsi_for_stmt (re->producer); gsi_remove (&from, false); gimple_seq_add_stmt_without_update (&stmts, re->producer); @@ -920,6 +921,7 @@ loop_cand::undo_simple_reduction (reduction_p re, bitmap dce_seeds) gimple_set_vdef (re->consumer, NULL_TREE); gimple_set_vuse (re->consumer, NULL_TREE); gimple_assign_set_rhs1 (re->consumer, re->next); + update_stmt (re->consumer); from = gsi_for_stmt (re->consumer); to = gsi_for_stmt (SSA_NAME_DEF_STMT (re->next)); gsi_move_after (&from, &to); @@ -1248,14 +1250,17 @@ tree_loop_interchange::move_code_to_inner_loop (class loop *outer, continue; } - if (gimple_vuse (stmt)) - gimple_set_vuse (stmt, NULL_TREE); if (gimple_vdef (stmt)) { unlink_stmt_vdef (stmt); release_ssa_name (gimple_vdef (stmt)); gimple_set_vdef (stmt, NULL_TREE); } + if (gimple_vuse (stmt)) + { + gimple_set_vuse (stmt, NULL_TREE); + update_stmt (stmt); + } reset_debug_uses (stmt); gsi_move_before (&gsi, &to); -- cgit v1.1