This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: DCE speedup
- From: "Richard Guenther" <richard dot guenther at gmail dot com>
- To: "Jan Hubicka" <jh at suse dot cz>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Mon, 15 Jan 2007 10:58:27 +0100
- Subject: Re: DCE speedup
- References: <20070115021533.GZ10318@kam.mff.cuni.cz>
On 1/15/07, Jan Hubicka <jh@suse.cz> wrote:
Hi,
with early inlining we are feeding SSA optimizers with very many small
functions that often don't have room for optimization.
It seem quite wasteful to follow each of pass by cleanup passes that walks
INSN chain multiple times, so I would like to update the passes run early
to return TODO flags conditionally.
This patch updates DCE, if it seems sane, I will continue.
The patch itself has little effect on compile time (it seems to be in between
1-3s on tramp3d), but it is still resonable thing to do IMO.
It is also possible that we now have hidden dependencies in between passes
so the noise introduced by earlier passes is cleaned up by DCE TODOs, but I
think we should gradually identify it and add TODOs where they belong.
The patch was bootstrapped/regtested i686-linux, OK?
:ADDPATCH tree-optimization:
Ok with the following correction:
2007-01-15 Jan Hubicka <jh@suse.cz>
* tree-ssa-dce.c (DCE_TODOs): New.
(propagate_necessity): Return if something changed.
(eliminate_unnecessary_stmts): Likewise.
(perform_tree_ssa_dce): Return TODO flags when needed.
(pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
+ /* What to do when we cleaned up some statements. */
+ #define DCE_TODOs (TODO_update_ssa | TODO_cleanup_cfg | TODO_ggc_collect \
+ | TODO_remove_unused_locals)
I don't like this - you only have one user here:
--- 831,863 ----
tree_dce_done (aggressive);
free_edge_list (el);
+ return something_changed ? DCE_TODOs : 0;
}
Just write it as
if (something_changed)
return ...;
return 0;
Thanks,
Richard.