diff options
Diffstat (limited to 'gcc/tree-optimize.c')
-rw-r--r-- | gcc/tree-optimize.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index 820df4c..ba3d0fc 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -289,7 +289,7 @@ unsigned int execute_fixup_cfg (void) { basic_block bb; - block_stmt_iterator bsi; + gimple_stmt_iterator gsi; int todo = gimple_in_ssa_p (cfun) ? TODO_verify_ssa : 0; cfun->after_inlining = true; @@ -297,35 +297,36 @@ execute_fixup_cfg (void) if (cfun->eh) FOR_EACH_BB (bb) { - for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi)) + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) { - tree stmt = bsi_stmt (bsi); - tree call = get_call_expr_in (stmt); - tree decl = call ? get_callee_fndecl (call) : NULL; - - if (decl && call_expr_flags (call) & (ECF_CONST | ECF_PURE - | ECF_LOOPING_CONST_OR_PURE) - && TREE_SIDE_EFFECTS (call)) + gimple stmt = gsi_stmt (gsi); + tree decl = is_gimple_call (stmt) + ? gimple_call_fndecl (stmt) + : NULL; + + if (decl + && gimple_call_flags (stmt) & (ECF_CONST + | ECF_PURE + | ECF_LOOPING_CONST_OR_PURE)) { if (gimple_in_ssa_p (cfun)) { todo |= TODO_update_ssa | TODO_cleanup_cfg; update_stmt (stmt); } - TREE_SIDE_EFFECTS (call) = 0; } - if (decl && TREE_NOTHROW (decl)) - TREE_NOTHROW (call) = 1; - if (!tree_could_throw_p (stmt) && lookup_stmt_eh_region (stmt)) + + if (!stmt_could_throw_p (stmt) && lookup_stmt_eh_region (stmt)) remove_stmt_from_eh_region (stmt); } - if (tree_purge_dead_eh_edges (bb)) + + if (gimple_purge_dead_eh_edges (bb)) todo |= TODO_cleanup_cfg; } /* Dump a textual representation of the flowgraph. */ if (dump_file) - dump_tree_cfg (dump_file, dump_flags); + gimple_dump_cfg (dump_file, dump_flags); return todo; } @@ -367,7 +368,7 @@ tree_lowering_passes (tree fn) current_function_decl = fn; push_cfun (DECL_STRUCT_FUNCTION (fn)); - tree_register_cfg_hooks (); + gimple_register_cfg_hooks (); bitmap_obstack_initialize (NULL); execute_pass_list (all_lowering_passes); if (optimize && cgraph_global_info_ready) @@ -410,7 +411,7 @@ tree_rest_of_compilation (tree fndecl) not safe to try to expand expressions involving them. */ cfun->dont_save_pending_sizes_p = 1; - tree_register_cfg_hooks (); + gimple_register_cfg_hooks (); bitmap_obstack_initialize (®_obstack); /* FIXME, only at RTL generation*/ /* Perform all tree transforms and optimizations. */ @@ -421,7 +422,6 @@ tree_rest_of_compilation (tree fndecl) /* Release the default bitmap obstack. */ bitmap_obstack_release (NULL); - DECL_SAVED_TREE (fndecl) = NULL; set_cfun (NULL); /* If requested, warn about function definitions where the function will @@ -448,7 +448,7 @@ tree_rest_of_compilation (tree fndecl) } } - DECL_SAVED_TREE (fndecl) = NULL; + gimple_set_body (fndecl, NULL); if (DECL_STRUCT_FUNCTION (fndecl) == 0 && !cgraph_node (fndecl)->origin) { |