]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-cfg.c (bsi_replace): Rename final argument from PRESERVE_EH_INFO to UPDATE_EH_INFO.
authorJeff Law <law@redhat.com>
Fri, 6 Jan 2006 17:50:26 +0000 (10:50 -0700)
committerJeff Law <law@gcc.gnu.org>
Fri, 6 Jan 2006 17:50:26 +0000 (10:50 -0700)
* tree-cfg.c (bsi_replace): Rename final argument from
PRESERVE_EH_INFO to UPDATE_EH_INFO.  Fix typo in last
change (stmt -> orig_stmt).
* tree-eh.c (verify_eh_throw_stmt_node): New function.
(bsi_remove): Add new argument.  Remove EH information
if requested.
(verify_eh_throw_table_statements): New function.
(bsi_remove): Add new argument REMOVE_EH_INFO.  All callers
updated.
* tree-optimize.c (execute_free_cfg_annotations): Verify
the EH throw statement table after removing annotations.
* except.h (verify_eh_throw_table_statements): Prototype.
* tree-flow.h (bsi_remove): Update prototype.
* tree-vrp.c (remove_range_assertions): Add new argument to
bsi_remove call.
* tree-ssa-loop-im.c (move_computations_stmt): Likewise.
* tree-complex.c (expand_complex_div_wide): Likewise.
* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Likewise
* tree-tailcall.c (eliminate_tailcall): Likewise.
* tree-ssa-dse.c (dse_optimize_stmt): Likewise.
* tree-ssa-loop-ivopts.c (remove_statement): Likewise.
* tree-nrv.c (tree_nrv): Likewise.
* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Likewise.
* tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
(combine_blocks): Likewise.
* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Likewise.
* tree-cfgcleanup.c (cleanup_ctrl_expr_graph): Likewise.
(cleanup_control_flow): Likewise.
(remove_forwarder_block): Likewise.
* tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
* tree-sra.c (sra_replace): Likewise.
* tree-ssa-forwprop.c (forward_propagate_into_cond): Likewise.
(forward_propagate_single_use_vars): Likewise.
* tree-ssa-dce.c (remove_dead_stmt): Likewise.
* tree-inline.c (expand_call_inline): Likewise.
* tree-vect-transform.c (vect_transform_loop): Likewise.
* tree-outof-ssa.c (rewrite_trees): Likewise.
* tree-cfg.c (make_goto_expr_edges): Likewise.
(cleanup_dead_labels): Likewise.
(tree_merge_blocks, remove_bb, disband_implicit_edges): Likewise.
(bsi_move_before, bsi_move_after): Likewise.
(bsi_move_to_bb_end, try_redirect_by_replacing_jump): Likewise
(tree_redirect_edge_and_branch, tree_split_block): Likewise.

From-SVN: r109421

25 files changed:
gcc/ChangeLog
gcc/except.h
gcc/tree-cfg.c
gcc/tree-cfgcleanup.c
gcc/tree-complex.c
gcc/tree-eh.c
gcc/tree-flow.h
gcc/tree-if-conv.c
gcc/tree-inline.c
gcc/tree-nrv.c
gcc/tree-optimize.c
gcc/tree-outof-ssa.c
gcc/tree-sra.c
gcc/tree-ssa-dce.c
gcc/tree-ssa-dse.c
gcc/tree-ssa-forwprop.c
gcc/tree-ssa-loop-im.c
gcc/tree-ssa-loop-ivopts.c
gcc/tree-ssa-phiopt.c
gcc/tree-ssa-pre.c
gcc/tree-ssa-threadupdate.c
gcc/tree-tailcall.c
gcc/tree-vect-transform.c
gcc/tree-vectorizer.c
gcc/tree-vrp.c

index 65aba5c8428704d4f87396fa79fb1595d07a7c26..c8b616af0c2989bdc14a99bcea705165a19e15fc 100644 (file)
@@ -1,3 +1,50 @@
+2005-01-06  Jeff Law  <law@redhat.com>
+
+       PR ada/24994
+       * tree-cfg.c (bsi_replace): Rename final argument from
+       PRESERVE_EH_INFO to UPDATE_EH_INFO.  Fix typo in last
+       change (stmt -> orig_stmt).
+       * tree-eh.c (verify_eh_throw_stmt_node): New function.
+       (bsi_remove): Add new argument.  Remove EH information
+       if requested.
+       (verify_eh_throw_table_statements): New function.
+       (bsi_remove): Add new argument REMOVE_EH_INFO.  All callers
+       updated.
+       * tree-optimize.c (execute_free_cfg_annotations): Verify
+       the EH throw statement table after removing annotations.
+       * except.h (verify_eh_throw_table_statements): Prototype.
+       * tree-flow.h (bsi_remove): Update prototype.
+       * tree-vrp.c (remove_range_assertions): Add new argument to
+       bsi_remove call.
+       * tree-ssa-loop-im.c (move_computations_stmt): Likewise.
+       * tree-complex.c (expand_complex_div_wide): Likewise.
+       * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Likewise
+       * tree-tailcall.c (eliminate_tailcall): Likewise.
+       * tree-ssa-dse.c (dse_optimize_stmt): Likewise.
+       * tree-ssa-loop-ivopts.c (remove_statement): Likewise.
+       * tree-nrv.c (tree_nrv): Likewise.
+       * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Likewise.
+       * tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
+       (combine_blocks): Likewise.
+       * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Likewise.
+       * tree-cfgcleanup.c (cleanup_ctrl_expr_graph): Likewise.
+       (cleanup_control_flow): Likewise.
+       (remove_forwarder_block): Likewise.
+       * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
+       * tree-sra.c (sra_replace): Likewise.
+       * tree-ssa-forwprop.c (forward_propagate_into_cond): Likewise.
+       (forward_propagate_single_use_vars): Likewise.
+       * tree-ssa-dce.c (remove_dead_stmt): Likewise.
+       * tree-inline.c (expand_call_inline): Likewise.
+       * tree-vect-transform.c (vect_transform_loop): Likewise.
+       * tree-outof-ssa.c (rewrite_trees): Likewise.
+       * tree-cfg.c (make_goto_expr_edges): Likewise.
+       (cleanup_dead_labels): Likewise.
+       (tree_merge_blocks, remove_bb, disband_implicit_edges): Likewise.
+       (bsi_move_before, bsi_move_after): Likewise.
+       (bsi_move_to_bb_end, try_redirect_by_replacing_jump): Likewise
+       (tree_redirect_edge_and_branch, tree_split_block): Likewise.
+
 2006-01-06  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR tree-opt/25528
index d5e391d9c77bbad3de31aa95681b6899160280d4..2b2115a09da20bcb91c24b471381ba7a0ecba0f6 100644 (file)
@@ -173,3 +173,7 @@ struct throw_stmt_node GTY(())
 
 extern struct htab *get_eh_throw_stmt_table (struct function *);
 extern void set_eh_throw_stmt_table (struct function *, struct htab *);
+
+#ifdef ENABLE_CHECKING
+extern void verify_eh_throw_table_statements (void);
+#endif
index 2f4583600f799c3a3ab773e42db6fbb0f665de95..342b9d2fdb1fce02e9ca77f50f4d5377714ca729 100644 (file)
@@ -843,7 +843,7 @@ make_goto_expr_edges (basic_block bb)
 #else
          e->goto_locus = EXPR_LOCUS (goto_t);
 #endif
-         bsi_remove (&last);
+         bsi_remove (&last, true);
          return;
        }
 
@@ -1064,7 +1064,7 @@ cleanup_dead_labels (void)
              || DECL_NONLOCAL (label))
            bsi_next (&i);
          else
-           bsi_remove (&i);
+           bsi_remove (&i, true);
        }
     }
 
@@ -1362,7 +1362,7 @@ tree_merge_blocks (basic_block a, basic_block b)
        {
          tree label = bsi_stmt (bsi);
 
-         bsi_remove (&bsi);
+         bsi_remove (&bsi, false);
          /* Now that we can thread computed gotos, we might have
             a situation where we have a forced label in block B
             However, the label at the start of block B might still be
@@ -2024,7 +2024,7 @@ remove_bb (basic_block bb)
                  
          new_bb = bb->prev_bb;
          new_bsi = bsi_start (new_bb);
-         bsi_remove (&i);
+         bsi_remove (&i, false);
          bsi_insert_before (&new_bsi, stmt, BSI_NEW_STMT);
        }
       else
@@ -2036,7 +2036,7 @@ remove_bb (basic_block bb)
          if (in_ssa_p)
            release_defs (stmt);
 
-         bsi_remove (&i);
+         bsi_remove (&i, true);
        }
 
       /* Don't warn for removed gotos.  Gotos are often removed due to
@@ -2584,7 +2584,7 @@ disband_implicit_edges (void)
          if (bb->next_bb == EXIT_BLOCK_PTR
              && !TREE_OPERAND (stmt, 0))
            {
-             bsi_remove (&last);
+             bsi_remove (&last, true);
              single_succ_edge (bb)->flags |= EDGE_FALLTHRU;
            }
          continue;
@@ -2800,16 +2800,25 @@ bsi_insert_after (block_stmt_iterator *i, tree t, enum bsi_iterator_update m)
 
 
 /* Remove the statement pointed to by iterator I.  The iterator is updated
-   to the next statement.  */
+   to the next statement. 
+
+   When REMOVE_EH_INFO is true we remove the statement pointed to by
+   iterator I from the EH tables.  Otherwise we do not modify the EH
+   tables.
+
+   Generally, REMOVE_EH_INFO should be true when the statement is going to
+   be removed from the IL and not reinserted elsewhere.  */
 
 void
-bsi_remove (block_stmt_iterator *i)
+bsi_remove (block_stmt_iterator *i, bool remove_eh_info)
 {
   tree t = bsi_stmt (*i);
   set_bb_for_stmt (t, NULL);
   delink_stmt_imm_use (t);
   tsi_delink (&i->tsi);
   mark_stmt_modified (t);
+  if (remove_eh_info)
+    remove_stmt_from_eh_region (t);
 }
 
 
@@ -2819,7 +2828,7 @@ void
 bsi_move_after (block_stmt_iterator *from, block_stmt_iterator *to)
 {
   tree stmt = bsi_stmt (*from);
-  bsi_remove (from);
+  bsi_remove (from, false);
   bsi_insert_after (to, stmt, BSI_SAME_STMT);
 } 
 
@@ -2830,7 +2839,7 @@ void
 bsi_move_before (block_stmt_iterator *from, block_stmt_iterator *to)
 {
   tree stmt = bsi_stmt (*from);
-  bsi_remove (from);
+  bsi_remove (from, false);
   bsi_insert_before (to, stmt, BSI_SAME_STMT);
 }
 
@@ -2851,11 +2860,12 @@ bsi_move_to_bb_end (block_stmt_iterator *from, basic_block bb)
 
 
 /* Replace the contents of the statement pointed to by iterator BSI
-   with STMT.  If PRESERVE_EH_INFO is true, the exception handling
-   information of the original statement is preserved.  */
+   with STMT.  If UPDATE_EH_INFO is true, the exception handling
+   information of the original statement is moved to the new statement.  */
+  
 
 void
-bsi_replace (const block_stmt_iterator *bsi, tree stmt, bool preserve_eh_info)
+bsi_replace (const block_stmt_iterator *bsi, tree stmt, bool update_eh_info)
 {
   int eh_region;
   tree orig_stmt = bsi_stmt (*bsi);
@@ -2865,12 +2875,12 @@ bsi_replace (const block_stmt_iterator *bsi, tree stmt, bool preserve_eh_info)
 
   /* Preserve EH region information from the original statement, if
      requested by the caller.  */
-  if (preserve_eh_info)
+  if (update_eh_info)
     {
       eh_region = lookup_stmt_eh_region (orig_stmt);
       if (eh_region >= 0)
        {
-         remove_stmt_from_eh_region (stmt);
+         remove_stmt_from_eh_region (orig_stmt);
          add_stmt_to_eh_region (stmt, eh_region);
        }
     }
@@ -3969,7 +3979,7 @@ tree_try_redirect_by_replacing_jump (edge e, basic_block target)
   if (TREE_CODE (stmt) == COND_EXPR
       || TREE_CODE (stmt) == SWITCH_EXPR)
     {
-      bsi_remove (&b);
+      bsi_remove (&b, true);
       e = ssa_redirect_edge (e, target);
       e->flags = EDGE_FALLTHRU;
       return e;
@@ -4066,7 +4076,7 @@ tree_redirect_edge_and_branch (edge e, basic_block dest)
       }
 
     case RETURN_EXPR:
-      bsi_remove (&bsi);
+      bsi_remove (&bsi, true);
       e->flags |= EDGE_FALLTHRU;
       break;
 
@@ -4142,7 +4152,7 @@ tree_split_block (basic_block bb, void *stmt)
   while (!bsi_end_p (bsi))
     {
       act = bsi_stmt (bsi);
-      bsi_remove (&bsi);
+      bsi_remove (&bsi, false);
       bsi_insert_after (&bsi_tgt, act, BSI_NEW_STMT);
     }
 
index 836a14d7772fb90179c5b1bfaca470a8fd389286..96b95f18ed9d57848c6e257c687481411721f085 100644 (file)
@@ -117,7 +117,7 @@ cleanup_control_expr_graph (basic_block bb, block_stmt_iterator bsi)
   else
     taken_edge = single_succ_edge (bb);
 
-  bsi_remove (&bsi);
+  bsi_remove (&bsi, true);
   taken_edge->flags = EDGE_FALLTHRU;
 
   /* We removed some paths from the cfg.  */
@@ -207,7 +207,7 @@ cleanup_control_flow (void)
 
          /* Remove the GOTO_EXPR as it is not needed.  The CFG has all the
             relevant information we need.  */
-         bsi_remove (&bsi);
+         bsi_remove (&bsi, true);
          retval = true;
        }
 
@@ -433,7 +433,7 @@ remove_forwarder_block (basic_block bb, basic_block **worklist)
        {
          label = bsi_stmt (bsi);
          gcc_assert (TREE_CODE (label) == LABEL_EXPR);
-         bsi_remove (&bsi);
+         bsi_remove (&bsi, false);
          bsi_insert_before (&bsi_to, label, BSI_CONTINUE_LINKING);
        }
     }
index d85674257f45dbe9813977b5c67173a26607e2fa..35a85fca16cab779a8beb99056f0844a879c7df3 100644 (file)
@@ -1124,7 +1124,7 @@ expand_complex_div_wide (block_stmt_iterator *bsi, tree inner_type,
         bsi_insert_before (bsi, t1, BSI_SAME_STMT);
         t1 = build2 (MODIFY_EXPR, inner_type, ri, ti);
         bsi_insert_before (bsi, t1, BSI_SAME_STMT);
-        bsi_remove (bsi);
+        bsi_remove (bsi, true);
        }
     }
 
@@ -1163,7 +1163,7 @@ expand_complex_div_wide (block_stmt_iterator *bsi, tree inner_type,
         bsi_insert_before (bsi, t1, BSI_SAME_STMT);
         t1 = build2 (MODIFY_EXPR, inner_type, ri, ti);
         bsi_insert_before (bsi, t1, BSI_SAME_STMT);
-        bsi_remove (bsi);
+        bsi_remove (bsi, true);
        }
     }
 
index a0469933b1c440ad53da79b1d4f19498670df502..dfb3a278895f4fd79f7a61d63fede42d9b5664a4 100644 (file)
@@ -2075,3 +2075,25 @@ maybe_clean_or_replace_eh_stmt (tree old_stmt, tree new_stmt)
 
   return false;
 }
+
+#ifdef ENABLE_CHECKING
+static int
+verify_eh_throw_stmt_node (void **slot, void *data ATTRIBUTE_UNUSED)
+{
+  struct throw_stmt_node *node = (struct throw_stmt_node *)*slot;
+
+  gcc_assert (node->stmt->common.ann == NULL);
+  return 1;
+}
+
+void
+verify_eh_throw_table_statements (void)
+{
+  if (!get_eh_throw_stmt_table (cfun))
+    return;
+  htab_traverse (get_eh_throw_stmt_table (cfun),
+                verify_eh_throw_stmt_node,
+                NULL);
+}
+
+#endif
index 60d7f2ac09a9a68c1ec24ee148d0470e869baf65..afdd14379135b9c1730aabf4fabf826aaec64f4c 100644 (file)
@@ -449,7 +449,7 @@ static inline void bsi_prev (block_stmt_iterator *);
 static inline tree bsi_stmt (block_stmt_iterator);
 static inline tree * bsi_stmt_ptr (block_stmt_iterator);
 
-extern void bsi_remove (block_stmt_iterator *);
+extern void bsi_remove (block_stmt_iterator *, bool);
 extern void bsi_move_before (block_stmt_iterator *, block_stmt_iterator *);
 extern void bsi_move_after (block_stmt_iterator *, block_stmt_iterator *);
 extern void bsi_move_to_bb_end (block_stmt_iterator *, basic_block);
index f87d64d680dbda598fe21ea9b16046358ec856da..2356f912b0595275cc91b26ad4e853d8d7e32793 100644 (file)
@@ -287,7 +287,7 @@ tree_if_convert_cond_expr (struct loop *loop, tree stmt, tree cond,
      using new condition.  */
   if (!bb_with_exit_edge_p (loop, bb_for_stmt (stmt)))
     {
-      bsi_remove (bsi);
+      bsi_remove (bsi, true);
       cond = NULL_TREE;
     }
   return;
@@ -934,7 +934,7 @@ combine_blocks (struct loop *loop)
       for (bsi = bsi_start (bb); !bsi_end_p (bsi); )
        {
          if (TREE_CODE (bsi_stmt (bsi)) == LABEL_EXPR)
-           bsi_remove (&bsi);
+           bsi_remove (&bsi, true);
          else
            {
              set_bb_for_stmt (bsi_stmt (bsi), merge_target_bb);
index d3265253b20e1485c92eda3bfb6fd8c277616718..0dafbc244c9ef23781832816ccb04292c8c02f84 100644 (file)
@@ -2067,7 +2067,7 @@ expand_call_inline (basic_block bb, tree stmt, tree *tp, void *data)
   else
     {
       tree stmt = bsi_stmt (stmt_bsi);
-      bsi_remove (&stmt_bsi);
+      bsi_remove (&stmt_bsi, false);
       bsi_insert_after (&bsi, stmt, BSI_NEW_STMT);
     }
   stmt_bsi = bsi_start (return_block);
@@ -2182,7 +2182,7 @@ expand_call_inline (basic_block bb, tree stmt, tree *tp, void *data)
   else
     /* We're modifying a TSI owned by gimple_expand_calls_inline();
        tsi_delink() will leave the iterator in a sane state.  */
-    bsi_remove (&stmt_bsi);
+    bsi_remove (&stmt_bsi, true);
 
   bsi_next (&bsi);
   if (bsi_end_p (bsi))
index e0b59eb1d91f920bea6367ac3417e53579bd3c56..761e6a0ab46cf5f3cb065a96d2dc3a9e3e1b8fa8 100644 (file)
@@ -200,7 +200,7 @@ tree_nrv (void)
          if (TREE_CODE (*tp) == MODIFY_EXPR
              && TREE_OPERAND (*tp, 0) == result
              && TREE_OPERAND (*tp, 1) == found)
-           bsi_remove (&bsi);
+           bsi_remove (&bsi, true);
          else
            {
              walk_tree (tp, finalize_nrv_r, &data, 0);
index 0678889c7722cbf8a9bb6a6046b65fd78e48cf32..8bed9154d9045f24657533296a840c0265102a3f 100644 (file)
@@ -209,6 +209,12 @@ execute_free_cfg_annotations (void)
 
   /* And get rid of annotations we no longer need.  */
   delete_tree_cfg_annotations ();
+
+#ifdef ENABLE_CHECKING
+  /* Once the statement annotations have been removed, we can verify
+     the integrity of statements in the EH throw table.  */
+  verify_eh_throw_table_statements ();
+#endif
 }
 
 struct tree_opt_pass pass_free_cfg_annotations =
index c3bf1d0a54c3a68b221c3841bf38c0dcf7938385..553f7a1f1fcbf5c9aab561a68123ce8bd53e5f63 100644 (file)
@@ -1940,7 +1940,7 @@ rewrite_trees (var_map map, tree *values)
 
          /* Remove any stmts marked for removal.  */
          if (remove)
-           bsi_remove (&si);
+           bsi_remove (&si, true);
          else
            bsi_next (&si);
        }
index bae96f0c2209bf66951082c33752c225d8e0e575..6b7e991333f11c6821d3e4b6c53cad441b27a893 100644 (file)
@@ -1825,7 +1825,7 @@ static void
 sra_replace (block_stmt_iterator *bsi, tree list)
 {
   sra_insert_before (bsi, list);
-  bsi_remove (bsi);
+  bsi_remove (bsi, false);
   if (bsi_end_p (*bsi))
     *bsi = bsi_last (bsi->bb);
   else
index b5e82c236f82ab9038eb308c55ab091d788663b8..7a463676da731340f8e2ad772c13a8eb8608b236 100644 (file)
@@ -799,7 +799,7 @@ remove_dead_stmt (block_stmt_iterator *i, basic_block bb)
       tree def = DEF_FROM_PTR (def_p);
       mark_sym_for_renaming (SSA_NAME_VAR (def));
     }
-  bsi_remove (i);  
+  bsi_remove (i, true);  
   release_defs (t); 
 }
 \f
index f1cc22ae310224fc42c777e6a0bd8095a00db288..9bfce5a359938d0bd91b2452f4aa6336ee6604cb 100644 (file)
@@ -351,7 +351,7 @@ dse_optimize_stmt (struct dom_walk_data *walk_data,
              SET_USE (use_p, USE_FROM_PTR (var2));
            }
          /* Remove the dead store.  */
-         bsi_remove (&bsi);
+         bsi_remove (&bsi, true);
 
          /* And release any SSA_NAMEs set in this statement back to the
             SSA_NAME manager.  */
index 55d9c75aaeab36b46bce5aa74e82d932fe125a0f..979f2b44c4add9397c45acafa8c00e962e22b430 100644 (file)
@@ -433,7 +433,7 @@ forward_propagate_into_cond (tree cond_expr)
        {
          tree def = SSA_NAME_DEF_STMT (test_var);
          block_stmt_iterator bsi = bsi_for_stmt (def);
-         bsi_remove (&bsi);
+         bsi_remove (&bsi, true);
        }
     }
 }
@@ -827,7 +827,7 @@ tree_ssa_forward_propagate_single_use_vars (void)
              if (TREE_CODE (rhs) == ADDR_EXPR)
                {
                  if (forward_propagate_addr_expr (stmt))
-                   bsi_remove (&bsi);
+                   bsi_remove (&bsi, true);
                  else
                    bsi_next (&bsi);
                }
index 8da06ef85773a15afba85da4584de1a018b7af55..ab73671af1174d10b1495b631823c0181ca7ffd6 100644 (file)
@@ -759,7 +759,7 @@ move_computations_stmt (struct dom_walk_data *dw_data ATTRIBUTE_UNUSED,
                   cost, level->num);
        }
       bsi_insert_on_edge (loop_preheader_edge (level), stmt);
-      bsi_remove (&bsi);
+      bsi_remove (&bsi, false);
     }
 }
 
index 4c7d64560c9e0c90e4892de9f806c4f18401d68b..1e6d17ed6a0d98d4fb678d577420c08b477fdd11 100644 (file)
@@ -5326,7 +5326,7 @@ remove_statement (tree stmt, bool including_defined_name)
     {
       block_stmt_iterator bsi = bsi_for_stmt (stmt);
 
-      bsi_remove (&bsi);
+      bsi_remove (&bsi, true);
     }
 }
 
index 5aba683bf065e4b35105dac8efd57eed262c35a3..2b772db6873653476777b400ed56cab7a974e983 100644 (file)
@@ -351,7 +351,7 @@ replace_phi_edge_with_variable (basic_block cond_block,
 
   /* Eliminate the COND_EXPR at the end of COND_BLOCK.  */
   bsi = bsi_last (cond_block);
-  bsi_remove (&bsi);
+  bsi_remove (&bsi, true);
 
   if (dump_file && (dump_flags & TDF_DETAILS))
     fprintf (dump_file,
index cb4e51f8c952c26d9468345684acda77c19d5220..bf3e5249b77bbe354940b0dad0a68a42bedcf079 100644 (file)
@@ -3407,7 +3407,7 @@ remove_dead_inserted_code (void)
          else
            {
              bsi = bsi_for_stmt (t);
-             bsi_remove (&bsi);
+             bsi_remove (&bsi, true);
              release_defs (t);
            }
        }
index 1b7733b0c9b878f3d26711c8f5a2f18568dcc2c0..8c21ac2aa16c6c818477b6d1799b0795095d9e90 100644 (file)
@@ -180,7 +180,7 @@ remove_ctrl_stmt_and_useless_edges (basic_block bb, basic_block dest_bb)
       && (TREE_CODE (bsi_stmt (bsi)) == COND_EXPR
          || TREE_CODE (bsi_stmt (bsi)) == GOTO_EXPR
          || TREE_CODE (bsi_stmt (bsi)) == SWITCH_EXPR))
-    bsi_remove (&bsi);
+    bsi_remove (&bsi, true);
 
   for (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); )
     {
index 6778c9a816104ddd3dfa86ad7a87589f9566b29b..1a3116effad6f4668528eeec02eedb034dcb9fd3 100644 (file)
@@ -735,7 +735,7 @@ eliminate_tail_call (struct tailcall *t)
       if (TREE_CODE (t) == RETURN_EXPR)
        break;
 
-      bsi_remove (&bsi);
+      bsi_remove (&bsi, true);
       release_defs (t);
     }
 
@@ -825,7 +825,7 @@ eliminate_tail_call (struct tailcall *t)
       SSA_NAME_DEF_STMT (rslt) = build_empty_stmt ();
     }
 
-  bsi_remove (&t->call_bsi);
+  bsi_remove (&t->call_bsi, true);
   release_defs (call);
 }
 
index 13bca53da43963bf16163caa0fe39a03a8df8a07..42090f7a20ef77fbfa57f2fb5e5eb4a6d9e87125 100644 (file)
@@ -2944,7 +2944,7 @@ vect_transform_loop (loop_vec_info loop_vinfo,
              stmt_ann_t ann = stmt_ann (stmt);
              free (stmt_info);
              set_stmt_info ((tree_ann_t)ann, NULL);
-             bsi_remove (&si);
+             bsi_remove (&si, true);
              continue;
            }
 
index d096788fd207b29f5de7faf19d7497cbb5fe759c..d4c6989fdc384032ba2a2981f9cf20ade31436d1 100644 (file)
@@ -805,7 +805,7 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters)
   bsi_insert_before (&loop_cond_bsi, cond_stmt, BSI_SAME_STMT);
 
   /* Remove old loop exit test:  */
-  bsi_remove (&loop_cond_bsi);
+  bsi_remove (&loop_cond_bsi, true);
 
   loop_loc = find_loop_location (loop);
   if (dump_file && (dump_flags & TDF_DETAILS))
index 9254fbc18908b34f5d59ea894d5c92986869b5fa..daa459f1f2bb4a6fe044b44e26602b7f328a6818 100644 (file)
@@ -3026,7 +3026,7 @@ remove_range_assertions (void)
              }
 
            /* And finally, remove the copy, it is not needed.  */
-           bsi_remove (&si);
+           bsi_remove (&si, true);
          }
        else
          bsi_next (&si);