diff options
author | Jan Hubicka <jh@suse.cz> | 2002-03-22 16:32:00 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-03-22 15:32:00 +0000 |
commit | 96327cdcf6c9cba932a35da14b7fff8694da5182 (patch) | |
tree | 26895af1e0a165a0de77cc238bffae112c4d74e7 /gcc/toplev.c | |
parent | bc185257e74ed5e051e0e428ffd368a0f42b74e2 (diff) | |
download | gcc-96327cdcf6c9cba932a35da14b7fff8694da5182.zip gcc-96327cdcf6c9cba932a35da14b7fff8694da5182.tar.gz gcc-96327cdcf6c9cba932a35da14b7fff8694da5182.tar.bz2 |
toplev.c (flag_loop_optimize, [...]): New static variables.
* toplev.c (flag_loop_optimize, flag_crossjumping):
New static variables.
(rest_of_compilation): Conditionalize crossjumping and
loop optimizer.
(parse_options_and_default_flags): Default loop_optimize and
crossjumping.
(lang_independent_options): Add -fcrossjumping and -floop-optimize
* invoke.texi (crossjumping, loop-optimize): Document.
From-SVN: r51175
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index 121d3f7..ca26e7f 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -605,6 +605,14 @@ int flag_syntax_only = 0; static int flag_gcse; +/* Nonzero means perform loop optimizer. */ + +static int flag_loop_optimize; + +/* Nonzero means perform crossjumping. */ + +static int flag_crossjumping; + /* Nonzero means to use global dataflow analysis to eliminate useless null pointer tests. */ @@ -1017,6 +1025,10 @@ static const lang_independent_options f_options[] = N_("Perform enhanced load motion during global subexpression elimination") }, {"gcse-sm", &flag_gcse_sm, 1, N_("Perform store motion after global subexpression elimination") }, + {"loop-optimize", &flag_loop_optimize, 1, + N_("Perform the loop optimizations") }, + {"crossjumping", &flag_crossjumping, 1, + N_("Perform cross-jumping optimization") }, {"rerun-cse-after-loop", &flag_rerun_cse_after_loop, 1, N_("Run CSE pass after loop optimizations") }, {"rerun-loop-opt", &flag_rerun_loop_opt, 1, @@ -2846,7 +2858,7 @@ rest_of_compilation (decl) /* Move constant computations out of loops. */ - if (optimize > 0) + if (optimize > 0 && flag_loop_optimize) { timevar_push (TV_LOOP); delete_dead_jumptables (); @@ -3244,7 +3256,8 @@ rest_of_compilation (decl) if (optimize) { life_analysis (insns, rtl_dump_file, PROP_FINAL); - cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_CROSSJUMP | CLEANUP_UPDATE_LIFE); + cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE + | (flag_crossjumping ? CLEANUP_CROSSJUMP : 0)); /* This is kind of a heuristic. We need to run combine_stack_adjustments even for machines with possibly nonzero RETURN_POPS_ARGS @@ -3350,7 +3363,7 @@ rest_of_compilation (decl) and insn splitting possibly introduced more crossjumping oppurtuntities. */ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_POST_REGSTACK - | CLEANUP_CROSSJUMP); + | (flag_crossjumping ? CLEANUP_CROSSJUMP : 0)); if (flag_reorder_blocks) { reorder_basic_blocks (); @@ -4645,6 +4658,8 @@ parse_options_and_default_flags (argc, argv) #endif flag_guess_branch_prob = 1; flag_cprop_registers = 1; + flag_loop_optimize = 1; + flag_crossjumping = 1; } if (optimize >= 2) |