diff options
author | Jan Hubicka <jh@suse.cz> | 2002-06-01 23:31:42 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-06-01 21:31:42 +0000 |
commit | 5c856b23687ca60610fb67b80f1e1e663c2db691 (patch) | |
tree | e841b1f75587810fd318b1bbb37216cd8835c623 /gcc/toplev.c | |
parent | e2405951a6550c5f6901988d8afc641baa971325 (diff) | |
download | gcc-5c856b23687ca60610fb67b80f1e1e663c2db691.zip gcc-5c856b23687ca60610fb67b80f1e1e663c2db691.tar.gz gcc-5c856b23687ca60610fb67b80f1e1e663c2db691.tar.bz2 |
Makefile.in (tracer.o): New.
* Makefile.in (tracer.o): New.
* params.def (TRACER_*): New options.
* rtl.h (tracer): Declare.
* timevar.def (TV_TRACER): New.
* toplev.c (dump_file_index): Add DFI_tracer.
(dump_file_info): Add tracer.
(flag_tracer): New.
(lang_indepdenent_options): Add tracer.
(rest_of_compilation): Call tracer.
* tracer.c: New file.
* invoke.texi (-ftracer): Document.
(--param tracer-*): Document.
From-SVN: r54154
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index a3d0dfd..b9432f4 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -224,6 +224,7 @@ enum dump_file_index DFI_loop, DFI_cfg, DFI_bp, + DFI_tracer, DFI_cse2, DFI_life, DFI_combine, @@ -271,6 +272,7 @@ static struct dump_file_info dump_file[DFI_MAX] = { "loop", 'L', 1, 0, 0 }, { "cfg", 'f', 1, 0, 0 }, { "bp", 'b', 1, 0, 0 }, + { "tracer", 'T', 1, 0, 0 }, { "cse2", 't', 1, 0, 0 }, { "life", 'f', 1, 0, 0 }, /* Yes, duplicate enable switch. */ { "combine", 'c', 1, 0, 0 }, @@ -866,6 +868,10 @@ int flag_merge_constants = 1; one, unconditionally renumber instruction UIDs. */ int flag_renumber_insns = 1; +/* Nonzero if we perform superblock formation. */ + +int flag_tracer = 0; + /* Values of the -falign-* flags: how much to align labels in code. 0 means `use default', 1 means `don't align'. For each variable, there is an _log variant which is the power @@ -977,6 +983,8 @@ static const lang_independent_options f_options[] = N_("When possible do not generate stack frames") }, {"optimize-sibling-calls", &flag_optimize_sibling_calls, 1, N_("Optimize sibling and tail recursive calls") }, + {"tracer", &flag_tracer, 1, + N_("Perform superblock formation via tail duplication") }, {"cse-follow-jumps", &flag_cse_follow_jumps, 1, N_("When running CSE, follow jumps to their targets") }, {"cse-skip-blocks", &flag_cse_skip_blocks, 1, @@ -2958,6 +2966,19 @@ rest_of_compilation (decl) close_dump_file (DFI_bp, print_rtl_with_bb, insns); timevar_pop (TV_BRANCH_PROB); } + if (flag_tracer) + { + timevar_push (TV_TRACER); + open_dump_file (DFI_tracer, decl); + if (rtl_dump_file) + dump_flow_info (rtl_dump_file); + cleanup_cfg (CLEANUP_EXPENSIVE); + tracer (); + cleanup_cfg (CLEANUP_EXPENSIVE); + close_dump_file (DFI_tracer, print_rtl_with_bb, get_insns ()); + timevar_pop (TV_TRACER); + reg_scan (get_insns (), max_reg_num (), 0); + } if (optimize > 0) { |