https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22141
--- Comment #37 from ktkachov at gcc dot gnu.org --- Author: ktkachov Date: Fri Oct 28 14:18:50 2016 New Revision: 241649 URL: https://gcc.gnu.org/viewcvs?rev=241649&root=gcc&view=rev Log: GIMPLE store merging pass 2016-10-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. * fold-const.h (can_native_encode_type_p): Declare prototype. * fold-const.c (can_native_encode_type_p): Define. * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Define. (PARAM_MAX_STORES_TO_MERGE): Likewise. * timevar.def (TV_GIMPLE_STORE_MERGING): New timevar. * 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. (--param documentation): Document store-merging-allow-unaligned and max-stores-to-merge. 2016-10-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. * g++.dg/init/new17.C: Likewise. Added: trunk/gcc/gimple-ssa-store-merging.c trunk/gcc/testsuite/gcc.c-torture/execute/pr22141-1.c trunk/gcc/testsuite/gcc.c-torture/execute/pr22141-2.c trunk/gcc/testsuite/gcc.dg/store_merging_1.c trunk/gcc/testsuite/gcc.dg/store_merging_2.c trunk/gcc/testsuite/gcc.dg/store_merging_3.c trunk/gcc/testsuite/gcc.dg/store_merging_4.c trunk/gcc/testsuite/gcc.dg/store_merging_5.c trunk/gcc/testsuite/gcc.dg/store_merging_6.c trunk/gcc/testsuite/gcc.dg/store_merging_7.c trunk/gcc/testsuite/gcc.target/i386/pr22141.c Modified: trunk/gcc/ChangeLog trunk/gcc/Makefile.in trunk/gcc/common.opt trunk/gcc/doc/invoke.texi trunk/gcc/fold-const.c trunk/gcc/fold-const.h trunk/gcc/opts.c trunk/gcc/params.def trunk/gcc/passes.def trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/init/new17.C trunk/gcc/testsuite/gcc.target/aarch64/ldp_stp_1.c trunk/gcc/testsuite/gcc.target/aarch64/ldp_stp_4.c trunk/gcc/testsuite/gcc.target/i386/pr34012.c trunk/gcc/timevar.def trunk/gcc/tree-pass.h