This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: DCE speedup


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]