GIMPLE store merging pass
commit3d3e04acc6a8f7545d2c589319162967fb7f763a
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Oct 2016 14:18:50 +0000 (28 14:18 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Oct 2016 14:18:50 +0000 (28 14:18 +0000)
treec6b6f30f38de29c8fcc46fc859446438b55c447f
parentf82bce061abec9783f1a3cc9e3c39fcf7e327cc5
GIMPLE store merging pass

2016-10-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.
* 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.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.
* g++.dg/init/new17.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241649 138bc75d-0d04-0410-961f-82ee72b054a4
27 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/common.opt
gcc/doc/invoke.texi
gcc/fold-const.c
gcc/fold-const.h
gcc/gimple-ssa-store-merging.c [new file with mode: 0644]
gcc/opts.c
gcc/params.def
gcc/passes.def
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/init/new17.C
gcc/testsuite/gcc.c-torture/execute/pr22141-1.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/execute/pr22141-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/store_merging_1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/store_merging_2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/store_merging_3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/store_merging_4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/store_merging_5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/store_merging_6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/store_merging_7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/ldp_stp_1.c
gcc/testsuite/gcc.target/aarch64/ldp_stp_4.c
gcc/testsuite/gcc.target/i386/pr22141.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr34012.c
gcc/timevar.def
gcc/tree-pass.h