/* Top level of GCC compilers (cc1, cc1plus, etc.)
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
}
-/* Run new register allocator. Return TRUE if we must exit
- rest_of_compilation upon return. */
-static bool
-rest_of_handle_new_regalloc (void)
-{
- int failure;
-
- timevar_push (TV_LOCAL_ALLOC);
- open_dump_file (DFI_lreg, current_function_decl);
-
- delete_trivially_dead_insns (get_insns (), max_reg_num ());
- reg_alloc ();
-
- timevar_pop (TV_LOCAL_ALLOC);
- close_dump_file (DFI_lreg, NULL, NULL);
-
- /* XXX clean up the whole mess to bring live info in shape again. */
- timevar_push (TV_GLOBAL_ALLOC);
- open_dump_file (DFI_greg, current_function_decl);
-
- build_insn_chain (get_insns ());
- failure = reload (get_insns (), 0);
-
- timevar_pop (TV_GLOBAL_ALLOC);
-
- ggc_collect ();
-
- if (dump_enabled_p (DFI_greg))
- {
- timevar_push (TV_DUMP);
- dump_global_regs (dump_file);
- timevar_pop (TV_DUMP);
- close_dump_file (DFI_greg, print_rtl_with_bb, get_insns ());
- }
-
- if (failure)
- return true;
-
- reload_completed = 1;
-
- return false;
-}
-
/* Run old register allocator. Return TRUE if we must exit
rest_of_compilation upon return. */
static bool
dump_flow_info (dump_file);
tracer (0);
cleanup_cfg (CLEANUP_EXPENSIVE);
- reg_scan (get_insns (), max_reg_num (), 0);
+ reg_scan (get_insns (), max_reg_num ());
close_dump_file (DFI_tracer, print_rtl_with_bb, get_insns ());
}
if (dump_file)
dump_flow_info (dump_file);
cleanup_cfg (CLEANUP_EXPENSIVE);
- reg_scan (get_insns (), max_reg_num (), 0);
+ reg_scan (get_insns (), max_reg_num ());
if_convert (0);
}
timevar_push (TV_JUMP);
cleanup_cfg (CLEANUP_EXPENSIVE);
- reg_scan (get_insns (), max_reg_num (), 0);
+ reg_scan (get_insns (), max_reg_num ());
timevar_pop (TV_JUMP);
close_dump_file (DFI_ce1, print_rtl_with_bb, get_insns ());
timevar_pop (TV_WEB);
close_dump_file (DFI_web, print_rtl_with_bb, get_insns ());
- reg_scan (get_insns (), max_reg_num (), 0);
+ reg_scan (get_insns (), max_reg_num ());
}
/* Do branch profiling and static profile estimation passes. */
{
/* Alias analysis depends on this information and mark_constant_function
depends on alias analysis. */
- reg_scan (get_insns (), max_reg_num (), 1);
+ reg_scan (get_insns (), max_reg_num ());
mark_constant_function ();
}
open_dump_file (DFI_bypass, current_function_decl);
cleanup_cfg (CLEANUP_EXPENSIVE);
- reg_scan (get_insns (), max_reg_num (), 1);
+ reg_scan (get_insns (), max_reg_num ());
if (bypass_jumps (dump_file))
{
#endif
life_analysis (dump_file, PROP_FINAL);
if (optimize)
- cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | CLEANUP_UPDATE_LIFE
- | CLEANUP_LOG_LINKS
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE | CLEANUP_LOG_LINKS
| (flag_thread_jumps ? CLEANUP_THREADING : 0));
if (extra_warnings)
if (optimize)
{
- if (!flag_new_regalloc && initialize_uninitialized_subregs ())
+ if (initialize_uninitialized_subregs ())
{
/* Insns were inserted, and possibly pseudos created, so
things might look a bit different. */
dump_flow_info (dump_file);
timevar_push (TV_CSE);
- reg_scan (get_insns (), max_reg_num (), 1);
+ reg_scan (get_insns (), max_reg_num ());
tem = cse_main (get_insns (), max_reg_num (), dump_file);
if (tem)
cleanup_cfg (CLEANUP_EXPENSIVE);
timevar_pop (TV_JUMP);
}
- reg_scan (get_insns (), max_reg_num (), 0);
+ reg_scan (get_insns (), max_reg_num ());
close_dump_file (DFI_cse2, print_rtl_with_bb, get_insns ());
timevar_pop (TV_CSE2);
if (flag_expensive_optimizations)
{
timevar_push (TV_CSE);
- reg_scan (get_insns (), max_reg_num (), 1);
+ reg_scan (get_insns (), max_reg_num ());
tem2 = cse_main (get_insns (), max_reg_num (), dump_file);
purge_all_dead_edges (0);
delete_trivially_dead_insns (get_insns (), max_reg_num ());
if (flag_expensive_optimizations)
{
timevar_push (TV_CSE);
- reg_scan (get_insns (), max_reg_num (), 1);
+ reg_scan (get_insns (), max_reg_num ());
tem2 = cse_main (get_insns (), max_reg_num (), dump_file);
purge_all_dead_edges (0);
delete_trivially_dead_insns (get_insns (), max_reg_num ());
/* The regscan pass is currently necessary as the alias
analysis code depends on this information. */
- reg_scan (get_insns (), max_reg_num (), 1);
+ reg_scan (get_insns (), max_reg_num ());
}
cleanup_barriers ();
loop_optimize (get_insns (), dump_file, do_prefetch);
cleanup_cfg (CLEANUP_EXPENSIVE);
delete_trivially_dead_insns (get_insns (), max_reg_num ());
- reg_scan (get_insns (), max_reg_num (), 0);
+ reg_scan (get_insns (), max_reg_num ());
if (dump_file)
dump_flow_info (dump_file);
close_dump_file (DFI_loop2, print_rtl_with_bb, get_insns ());
split_all_insns (0);
if (flag_branch_target_load_optimize)
- rest_of_handle_branch_target_load_optimize ();
+ {
+ close_dump_file (DFI_flow2, print_rtl_with_bb, get_insns ());
+ rest_of_handle_branch_target_load_optimize ();
+ open_dump_file (DFI_flow2, current_function_decl);
+ }
if (optimize)
cleanup_cfg (CLEANUP_EXPENSIVE);
expected_value_to_br_prob ();
delete_trivially_dead_insns (get_insns (), max_reg_num ());
- reg_scan (get_insns (), max_reg_num (), 0);
+ reg_scan (get_insns (), max_reg_num ());
if (dump_file)
dump_flow_info (dump_file);
cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | CLEANUP_PRE_LOOP
if (targetm.binds_local_p (current_function_decl))
{
int pref = cfun->preferred_stack_boundary;
- if (cfun->recursive_call_emit
- && cfun->stack_alignment_needed > cfun->preferred_stack_boundary)
+ if (cfun->stack_alignment_needed > cfun->preferred_stack_boundary)
pref = cfun->stack_alignment_needed;
cgraph_rtl_info (current_function_decl)->preferred_incoming_stack_boundary
= pref;
&& !user_defined_section_attribute)
rest_of_handle_partition_blocks ();
- if (optimize > 0 && (flag_regmove || flag_expensive_optimizations))
+ if (optimize > 0 && flag_regmove)
rest_of_handle_regmove ();
/* Do unconditional splitting before register allocation to allow machine
epilogue thus changing register elimination offsets. */
current_function_is_leaf = leaf_function_p ();
- if (flag_new_regalloc)
- {
- if (rest_of_handle_new_regalloc ())
- goto exit_rest_of_compilation;
- }
- else
- {
- if (rest_of_handle_old_regalloc ())
- goto exit_rest_of_compilation;
- }
+ if (rest_of_handle_old_regalloc ())
+ goto exit_rest_of_compilation;
if (optimize > 0)
rest_of_handle_postreload ();