This is the mail archive of the gcc@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]

maybe_infinite_loop?


We still have some lno bits in our tree. We tried to remove them and found:

gzip +0.5%
vpr -0.4%
gcc -3.2%
mcf -0.3%
crafty +0.2%
parser +0.2%
perlbmk -2.2%
gap +0.2%
vortex -0.1%
bzip2 +1.9%
twolf -0.7%

on x86 (probably a core2 duo) in our 4.2 tree (with the rest of our local patches). -3.2% means a 3.2% better codegen (roughly) with the lno bits. I didn't rerun the numbers for mainline to see if they are still applicable.

Of all the LNO bits, the last major bits seems to be the below bit. I don't even know if it is responsible for the benefit we see. I thought I'd mention it, as a 2-3% win on two of the spec tests seems worthwhile.

I'd be interested in finding someone that might be interested in tracking down where the benefit comes from in the patch and pushing into mainline what goodness there is to be had from the patch. Any takers? If I can find someone, I'd be happy to send out the version of the patch for mainline. [ hum just 567 lines] On second though, I'll just include at the end for reference. Note, there is one soft conflict resolution to resolve in going from the 4.2 context to mainline, which I've not yet resolved.

2004-07-13 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>

* Makefile.in (tree-ssa-loop.o, tree-ssa-dce.o): Add function.h
dependency.
* builtins.c (expand_builtin): Handle BUILT_IN_MAYBE_INFINITE_LOOP.
* builtins.def (BUILT_IN_MAYBE_INFINITE_LOOP): New builtin.
* function.h (struct function): Add marked_maybe_inf_loops field.
* timevar.def (TV_MARK_MILOOPS): New timevar.
* tree-flow.h (mark_maybe_infinite_loops): Declare.
* tree-optimize.c (init_tree_optimization_passes): Add
pass_mark_maybe_inf_loops.
* tree-pass.h (pass_mark_maybe_inf_loops): Declare.
* tree-ssa-dce.c: Include function.h.
(find_obviously_necessary_stmts): Mark back edges only if they were
not marked already.
(perform_tree_ssa_dce): Do not call mark_dfs_back_edges here.
* tree-ssa-loop-niter.c (unmark_surely_finite_loop,
mark_maybe_infinite_loops): New functions.
* tree-ssa-loop.c: Include function.h.
(tree_mark_maybe_inf_loops, gate_tree_mark_maybe_inf_loops,
pass_mark_maybe_inf_loops): New pass.
* tree-ssa-operands.c (function_ignores_memory_p): Add
BUILT_IN_MAYBE_INFINITE_LOOP.


Attachment: add-lno.diffs.txt
Description: Text document


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