diff options
author | David Edelsohn <edelsohn@gnu.org> | 2008-02-26 19:21:21 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2008-02-26 14:21:21 -0500 |
commit | 7d817ebc0d283639a4659b388c074aff1accc3b3 (patch) | |
tree | d3d1d41238e71fa67b722a736ee63be9e08201fe /gcc/gcse.c | |
parent | a19b7d465087d3105de11c32ed67fcae81bedfe7 (diff) | |
download | gcc-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.c | 33 |
1 files changed, 21 insertions, 12 deletions
@@ -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); } |