On Sep 28, 2016, at 10:54 AM, Kyrill Tkachov <kyrylo.tkac...@foss.arm.com> wrote: > > 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.
Hi Kyrill, Thanks for the heads-up! I will have someone on my team look at this as soon as possible. Much obliged, Bill > > Thanks, > Kyrill > > 2016-09-28 Kyrylo Tkachov <kyrylo.tkac...@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.tkac...@arm.com> > Jakub Jelinek <ja...@redhat.com> > Andrew Pinski <pins...@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. > <store-merging.patch>