This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
maybe_infinite_loop?
- From: Mike Stump <mrs at apple dot com>
- To: GCC Development <gcc at gcc dot gnu dot org>
- Cc: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- Date: Sat, 21 Apr 2007 16:10:38 -0700
- Subject: 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