summaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-10-20 12:04:00 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-10-20 10:04:00 +0000
commitb932f770f70d60b1d6c89d6ef1fe8dc88bdecda1 (patch)
tree8b850e82487dad7507a2357d498b653cbeb1d71e /gcc/toplev.c
parent870628131ce6ff529817509e256c7ee035d37bfd (diff)
downloadgcc-b932f770f70d60b1d6c89d6ef1fe8dc88bdecda1.tar.gz
basic-block.h (find_sub_basic_blocks): Use sbitmap parameter.
* basic-block.h (find_sub_basic_blocks): Use sbitmap parameter. * cfgbuild.c (find_bb_boundaries, compute_outgoing_frequencies): Break out from ... (find_sub_basic_blocks): ... here; (find_many_sub_basic_blocks): New. * recog.c (split_all_insns): Update find_sub_basic_blocks call. * i386.h (ASM_PREFERRED_EH_DATA_FORMAT): Define sdata4. * i386.c (ix86_va_arg): Kill indirect_p handling; fix aliasing issues.: * i386.c (split_di, split_ti): Revamp to use simplify_subreg. * timevar.def (TV_LIFE, TV_LIFE_UPDATE, TV_MODE_SWITCH): new. * flow.c (update_life_info): Measure time. * c-decl.c: Include timevar.h (c_expand_body): Measure time. * toplev.c (rest_of_compilation): Measure time of mode switching separately. * Makefile.in (c-decl.o, cfgcleanup.o): Add dependancy. * toplev.c (flag_asynchronous_unwind_tables): New global variable. (lang_independent_options): Add asynchronous-unwind-tables (toplev_main): flag_asynchronous_unwind_tables implies flag_unwind_tables. * flags.h (flag_asynchronous_unwind_tables): Declare. * dwarf2out.c (dwarf2out_stack_adjust): Take into account flag_asynchronous_unwind_tables. (output_call_frame_info): Likewise. * invoke.texi (-fasynchronous-unwind-tables): Document. * i386.c (optimization_options): Enable flag_asynchronous_unwind_tables. * i386.c (ix86_expand_setcc): Always expect target to be QImode. * i386.md (s* expanders): Destination is QImode. * toplev.c (rest_of_compilation): Do not call clear_log_links. * rtl.h (clear_log_links): Kill. * flow.c (clear_log_links): Make static; accept blocks parameter; do no clear life info. (update_life_info): Call clear_log_links. * cfganal.c (forwarder_block_p): Avoid active_insn_p calls. From-SVN: r46374
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 2df15e7f18c..3bc9dac156b 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -737,6 +737,10 @@ int flag_exceptions;
int flag_unwind_tables = 0;
+/* Nonzero means generate frame unwind info table exact at each insn boundary */
+
+int flag_asynchronous_unwind_tables = 0;
+
/* Nonzero means don't place uninitialized global data in common storage
by default. */
@@ -1096,6 +1100,8 @@ lang_independent_options f_options[] =
N_("Enable exception handling") },
{"unwind-tables", &flag_unwind_tables, 1,
N_("Just generate unwind tables for exception handling") },
+ {"asynchronous-unwind-tables", &flag_asynchronous_unwind_tables, 1,
+ N_("Generate unwind tables exact at each instruction boundary") },
{"non-call-exceptions", &flag_non_call_exceptions, 1,
N_("Support synchronous non-call exceptions") },
{"profile-arcs", &profile_arc_flag, 1,
@@ -2933,10 +2939,6 @@ rest_of_compilation (decl)
convert_from_ssa ();
/* New registers have been created. Rescan their usage. */
reg_scan (insns, max_reg_num (), 1);
- /* Life analysis used in SSA adds log_links but these
- shouldn't be there until the flow stage, so clear
- them away. */
- clear_log_links (insns);
close_dump_file (DFI_ussa, print_rtl_with_bb, insns);
timevar_pop (TV_FROM_SSA);
@@ -3370,7 +3372,7 @@ rest_of_compilation (decl)
register_life_up_to_date = 0;
#ifdef OPTIMIZE_MODE_SWITCHING
- timevar_push (TV_GCSE);
+ timevar_push (TV_MODE_SWITCH);
no_new_pseudos = 0;
if (optimize_mode_switching (NULL))
@@ -3382,7 +3384,7 @@ rest_of_compilation (decl)
}
no_new_pseudos = 1;
- timevar_pop (TV_GCSE);
+ timevar_pop (TV_MODE_SWITCH);
#endif
timevar_push (TV_SCHED);
@@ -4911,6 +4913,11 @@ toplev_main (argc, argv)
flag_rerun_cse_after_loop = 1;
}
+ if (flag_non_call_exceptions)
+ flag_asynchronous_unwind_tables = 1;
+ if (flag_asynchronous_unwind_tables)
+ flag_unwind_tables = 1;
+
/* Warn about options that are not supported on this machine. */
#ifndef INSN_SCHEDULING
if (flag_schedule_insns || flag_schedule_insns_after_reload)