aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcse.c
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2008-02-26 19:21:21 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2008-02-26 14:21:21 -0500
commit7d817ebc0d283639a4659b388c074aff1accc3b3 (patch)
treed3d1d41238e71fa67b722a736ee63be9e08201fe /gcc/gcse.c
parenta19b7d465087d3105de11c32ed67fcae81bedfe7 (diff)
downloadgcc-7d817ebc0d283639a4659b388c074aff1accc3b3.zip
gcc-7d817ebc0d283639a4659b388c074aff1accc3b3.tar.gz
gcc-7d817ebc0d283639a4659b388c074aff1accc3b3.tar.bz2
dbgcnt.def (cfg_cleanup, [...]): New counters.
* dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1, dse2, gcse, if_conversion, if_after_combine, if_after_reload, jump_bypass): New counters. * cfgcleanup.c (cleanup_cfg): Add dbg_cnt. * dce.c (gate_ud_dce): Same. (gate_fast_dce): Same. * dse.c (gate_dse1): New function. (gate_dse2): New function. (gate_dse): Merge results of new gate functions. * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt. (gate_handle_jump_bypass): Add dbg_cnt. (gate_handle_gcse): Add dbg_cnt. * ifcvt.c (gate_handle_if_conversion): Same. (gate_handle_if_after_combine): Same. (gate_handle_if_after_reload): Same. * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o. From-SVN: r132684
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r--gcc/gcse.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 8cb5d38..c9c8b4c 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -718,9 +718,12 @@ gcse_main (rtx f ATTRIBUTE_UNUSED)
/* Don't allow constant propagation to modify jumps
during this pass. */
- timevar_push (TV_CPROP1);
- changed = one_cprop_pass (pass + 1, false, false);
- timevar_pop (TV_CPROP1);
+ if (dbg_cnt (cprop1))
+ {
+ timevar_push (TV_CPROP1);
+ changed = one_cprop_pass (pass + 1, false, false);
+ timevar_pop (TV_CPROP1);
+ }
if (optimize_size)
/* Do nothing. */ ;
@@ -783,13 +786,17 @@ gcse_main (rtx f ATTRIBUTE_UNUSED)
/* Do one last pass of copy propagation, including cprop into
conditional jumps. */
- max_gcse_regno = max_reg_num ();
- alloc_gcse_mem ();
- /* This time, go ahead and allow cprop to alter jumps. */
- timevar_push (TV_CPROP2);
- one_cprop_pass (pass + 1, true, true);
- timevar_pop (TV_CPROP2);
- free_gcse_mem ();
+ if (dbg_cnt (cprop2))
+ {
+ max_gcse_regno = max_reg_num ();
+ alloc_gcse_mem ();
+
+ /* This time, go ahead and allow cprop to alter jumps. */
+ timevar_push (TV_CPROP2);
+ one_cprop_pass (pass + 1, true, true);
+ timevar_pop (TV_CPROP2);
+ free_gcse_mem ();
+ }
if (dump_file)
{
@@ -6666,7 +6673,8 @@ is_too_expensive (const char *pass)
static bool
gate_handle_jump_bypass (void)
{
- return optimize > 0 && flag_gcse;
+ return optimize > 0 && flag_gcse
+ && dbg_cnt (jump_bypass);
}
/* Perform jump bypassing and control flow optimizations. */
@@ -6705,7 +6713,8 @@ struct tree_opt_pass pass_jump_bypass =
static bool
gate_handle_gcse (void)
{
- return optimize > 0 && flag_gcse;
+ return optimize > 0 && flag_gcse
+ && dbg_cnt (gcse);
}