diff options
author | Jan Hubicka <jh@suse.cz> | 2001-10-20 12:04:00 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2001-10-20 10:04:00 +0000 |
commit | b932f770f70d60b1d6c89d6ef1fe8dc88bdecda1 (patch) | |
tree | 8b850e82487dad7507a2357d498b653cbeb1d71e /gcc/toplev.c | |
parent | 870628131ce6ff529817509e256c7ee035d37bfd (diff) | |
download | gcc-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.c | 19 |
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) |