[PATCH][v4] GIMPLE store merging pass

Kyrill Tkachov kyrylo.tkachov@foss.arm.com
Wed Sep 28 16:00:00 GMT 2016


Hi all,

This is v4 of the pass. It addresses feedback by Bernhard, including typo fixes and
skipping of debug statements.
Also, I've extended it to handle the case from PR 23684 and included that testcase
in the patch.  Merging now triggers more often.
I've also added purging of dead EH edges that was missing from the previous versions.

Bootstrapped and tested on aarch64-none-linux-gnu, x86_64-unknown-linux-gnu, arm-none-linux-gnueabihf.
Also tested on aarch64 big-endian.

I saw no regressions on my x86_64 machine on SPEC2006. I think the changes in individual benchmarks were
in the noise though I think the x86_64 expanders could be improved to split expensive movabsq instructions
into two movl ones (I think).

Bill, could you or someone else with access to Power benchmarking try this patch out on some benchmarks
that you usually use? The new pass in this patch is on by default and can be turned off by -fno-store-merging
if needed.  Jakub indicated that his last attempt at this work caused regressions on powerpc so I'd like to
see if this patch is okay in that regard.

Thanks,
Kyrill

2016-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

     PR middle-end/22141
     * Makefile.in (OBJS): Add gimple-ssa-store-merging.o.
     * common.opt (fstore-merging): New Optimization option.
     * opts.c (default_options_table): Add entry for
     OPT_ftree_store_merging.
     * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Define.
     * passes.def: Insert pass_tree_store_merging.
     * tree-pass.h (make_pass_store_merging): Declare extern
     prototype.
     * gimple-ssa-store-merging.c: New file.
     * doc/invoke.texi (Optimization Options): Document
     -fstore-merging.

2016-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
             Jakub Jelinek  <jakub@redhat.com>
             Andrew Pinski  <pinskia@gmail.com>

     PR middle-end/22141
     PR rtl-optimization/23684
     * gcc.c-torture/execute/pr22141-1.c: New test.
     * gcc.c-torture/execute/pr22141-2.c: Likewise.
     * gcc.target/aarch64/ldp_stp_1.c: Adjust for -fstore-merging.
     * gcc.target/aarch64/ldp_stp_4.c: Likewise.
     * gcc.dg/store_merging_1.c: New test.
     * gcc.dg/store_merging_2.c: Likewise.
     * gcc.dg/store_merging_3.c: Likewise.
     * gcc.dg/store_merging_4.c: Likewise.
     * gcc.dg/store_merging_5.c: Likewise.
     * gcc.dg/store_merging_6.c: Likewise.
     * gcc.dg/store_merging_7.c: Likewise.
     * gcc.target/i386/pr22141.c: Likewise.
     * gcc.target/i386/pr34012.c: Add -fno-store-merging to dg-options.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: store-merging.patch
Type: text/x-patch
Size: 55357 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20160928/8d635103/attachment.bin>


More information about the Gcc-patches mailing list