aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2002-06-01 23:31:42 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2002-06-01 21:31:42 +0000
commit5c856b23687ca60610fb67b80f1e1e663c2db691 (patch)
treee841b1f75587810fd318b1bbb37216cd8835c623 /gcc/toplev.c
parente2405951a6550c5f6901988d8afc641baa971325 (diff)
downloadgcc-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.c21
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)
{