0 /* todo_flags_finish */
};
+
+/* Do the actions required to initialize internal data structures used
+ in tree-ssa optimization passes. */
+
+static void
+execute_init_datastructures (void)
+{
+ /* Allocate hash tables, arrays and other structures. */
+ init_tree_ssa ();
+}
+
+static struct tree_opt_pass pass_init_datastructures =
+{
+ NULL, /* name */
+ NULL, /* gate */
+ execute_init_datastructures, /* execute */
+ NULL, /* sub */
+ NULL, /* next */
+ 0, /* static_pass_number */
+ 0, /* tv_id */
+ PROP_cfg, /* properties_required */
+ 0, /* properties_provided */
+ 0, /* properties_destroyed */
+ 0, /* todo_flags_start */
+ 0 /* todo_flags_finish */
+};
+
/* Iterate over the pass tree allocating dump file numbers. We want
to do this depth first, and independent of whether the pass is
enabled or not. */
NEXT_PASS (pass_lower_eh);
NEXT_PASS (pass_build_cfg);
NEXT_PASS (pass_tree_profile);
+ NEXT_PASS (pass_init_datastructures);
NEXT_PASS (pass_all_optimizations);
NEXT_PASS (pass_mudflap_2);
NEXT_PASS (pass_free_datastructures);
NEXT_PASS (pass_fold_builtins);
NEXT_PASS (pass_split_crit_edges);
NEXT_PASS (pass_pre);
+ NEXT_PASS (pass_loop);
NEXT_PASS (DUP_PASS (pass_dominator));
NEXT_PASS (DUP_PASS (pass_redundant_phi));
NEXT_PASS (pass_cd_dce);
NEXT_PASS (pass_remove_useless_vars);
*p = NULL;
+ p = &pass_loop.sub;
+ NEXT_PASS (pass_loop_init);
+ NEXT_PASS (pass_loop_done);
+ *p = NULL;
+
#undef NEXT_PASS
#undef DUP_PASS
{
if (flags & TODO_rename_vars)
{
- if (bitmap_first_set_bit (vars_to_rename) >= 0)
- rewrite_into_ssa ();
- BITMAP_XFREE (vars_to_rename);
+ rewrite_into_ssa (false);
+ bitmap_clear (vars_to_rename);
}
if ((flags & TODO_dump_func) && dump_file)
if (pass->tv_id)
timevar_push (pass->tv_id);
- /* If the pass is requesting ssa variable renaming, allocate the bitmap. */
- if (pass->todo_flags_finish & TODO_rename_vars)
- vars_to_rename = BITMAP_XMALLOC ();
-
/* Do it! */
if (pass->execute)
pass->execute ();
input_location = DECL_SOURCE_LOCATION (fndecl);
init_function_start (fndecl);
- /* This function is being processed in whole-function mode. */
- cfun->x_whole_function_mode_p = 1;
-
/* Even though we're inside a function body, we still don't want to
call expand_expr to calculate the size of a variable-sized array.
We haven't necessarily assigned RTL to all variables yet, so it's
not safe to try to expand expressions involving them. */
- immediate_size_expand = 0;
cfun->x_dont_save_pending_sizes_p = 1;
node = cgraph_node (fndecl);
}
}
+ if (!vars_to_rename)
+ vars_to_rename = BITMAP_XMALLOC ();
+
/* If this is a nested function, protect the local variables in the stack
above us from being collected while we're compiling this function. */
if (nested_p)