[Bug middle-end/22141] [5/6/7 Regression] Missing optimization when storing structures

ktkachov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Oct 28 14:40:00 GMT 2016


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.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.



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


More information about the Gcc-bugs mailing list