timevar_push (TV_DUMP);
- if (dump_file != NULL || dump_file_name != NULL)
- abort ();
+ gcc_assert (!dump_file && !dump_file_name);
dump_file_name = get_dump_file_name (index);
initializing_dump = !dump_initialized_p (index);
(see gcc.c-torture/compile/920624-1.c) */
if ((at_end
|| !DECL_DEFER_OUTPUT (decl)
- || (flag_unit_at_a_time && DECL_INITIAL (decl)))
+ || DECL_INITIAL (decl))
&& !DECL_EXTERNAL (decl))
{
if (flag_unit_at_a_time && !cgraph_global_info_ready
timevar_pop (TV_SYMOUT);
}
- /* Let cgraph know about the existance of variables. */
+ /* Let cgraph know about the existence of variables. */
if (TREE_CODE (decl) == VAR_DECL && !DECL_EXTERNAL (decl))
cgraph_varpool_node (decl);
}
different from the DECL_NAME name used in the source file. */
x = DECL_RTL (current_function_decl);
- if (!MEM_P (x))
- abort ();
+ gcc_assert (MEM_P (x));
x = XEXP (x, 0);
- if (GET_CODE (x) != SYMBOL_REF)
- abort ();
+ gcc_assert (GET_CODE (x) == SYMBOL_REF);
fnname = XSTR (x, 0);
assemble_start_function (current_function_decl, fnname);
final_start_function (get_insns (), asm_out_file, optimize);
- final (get_insns (), asm_out_file, optimize, 0);
+ final (get_insns (), asm_out_file, optimize);
final_end_function ();
#ifdef TARGET_UNWIND_INFO
timevar_push (TV_SYMOUT);
(*debug_hooks->function_decl) (current_function_decl);
+ if (unlikely_text_section_name)
+ {
+ free (unlikely_text_section_name);
+ unlikely_text_section_name = NULL;
+ }
timevar_pop (TV_SYMOUT);
ggc_collect ();
static void
rest_of_handle_sms (void)
{
+ basic_block bb;
+ sbitmap blocks;
+
timevar_push (TV_SMS);
open_dump_file (DFI_sms, current_function_decl);
/* We want to be able to create new pseudos. */
no_new_pseudos = 0;
+ /* Collect loop information to be used in SMS. */
+ cfg_layout_initialize (CLEANUP_UPDATE_LIFE);
sms_schedule (dump_file);
close_dump_file (DFI_sms, print_rtl, get_insns ());
-
/* Update the life information, because we add pseudos. */
max_regno = max_reg_num ();
allocate_reg_info (max_regno, FALSE, FALSE);
- update_life_info_in_dirty_blocks (UPDATE_LIFE_GLOBAL_RM_NOTES,
- (PROP_DEATH_NOTES
- | PROP_KILL_DEAD_CODE
- | PROP_SCAN_DEAD_CODE));
+ blocks = sbitmap_alloc (last_basic_block);
+ sbitmap_ones (blocks);
+ update_life_info (blocks, UPDATE_LIFE_GLOBAL_RM_NOTES,
+ (PROP_DEATH_NOTES
+ | PROP_REG_INFO
+ | PROP_KILL_DEAD_CODE
+ | PROP_SCAN_DEAD_CODE));
+
no_new_pseudos = 1;
+ /* Finalize layout changes. */
+ FOR_EACH_BB (bb)
+ if (bb->next_bb != EXIT_BLOCK_PTR)
+ bb->rbi->next = bb->next_bb;
+ cfg_layout_finalize ();
+ free_dominance_info (CDI_DOMINATORS);
ggc_collect ();
timevar_pop (TV_SMS);
}