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]

Disable web, gcse-las, and gcse-sm by default


Hi,

Currently we have the webizer enabeld by default at -O2 or better
if vartracking is available, and GCSE Store Motion and Load after
Store elimination enabled unconditionally at -O2 or better.

None of these passes seem to be profitable anymore.  Not for speed,
and not for code size.

Store motion was never very effective, and the tree store motion out
of loops already catches all the ones that matter.  Load after Store
elimination was added late last year when we did not have tree-ssa,
by now it should be subsumed by the tree optimizers.  The webizer is
a pass that I would have expected to make a difference for the better,
but our register allocator doesn't like so many pseudos and spills a
lot more with the webizer pass enabled.  We had expected that for
targets running sched1, the webizer would break false dependencies
and help there, so we benchmarked -fno-web on PPC.  The scores with
and without the webizer were the same.

I have SPEC benchmarked on PPC (Power5), AMD64, and x86, with those
three passes disabled.  In all cases, the scores did not regress,
and for x86 the scores were better than with those passes enabled.
Of course the patch was also bootstrapped and tested on those targets,
all on $ARCH-suse-linux-gnu ;-)

The attached patch disables these passes.  I would actually prefer
to remove these passes completely, if there is no opposition to that.

There is a compile time speedup of course: between 3% and 8% for the
cases I have looked at (checking disabled).

I hope we can remove all memory reference handling from gcse.c when
tree load PRE is implemented for GVN-PRE (that's on my TODO list...)
and our alias analysis for trees has improved.  We're also trying to
investigate if other RTL passes can be fully or partially turned off.

Is this patch OK for mainline?

Gr.
Steven

        * common.opt (flag_gcse_sm): Disable by default.
        (flag_gcse_las): Likewise.
        (flag_web): Likewise.  Create from this file.
        (flags.h): Remove flag_web declaration.
        * toplev.c (flag_web): Likewise.
        (process_options): Never set flag_web.

Attachment: patch
Description: Binary data


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