https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90271

--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Mon May  6 21:50:14 2019
New Revision: 270924

URL: https://gcc.gnu.org/viewcvs?rev=270924&root=gcc&view=rev
Log:
        PR tree-optimization/88709
        PR tree-optimization/90271
        * params.def (PARAM_STORE_MERGING_MAX_SIZE): New parameter.
        * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Handle
        non-clobber CONSTRUCTORs with no elts.  Remove useless tmp_int
        variable.
        (imm_store_chain_info::coalesce_immediate_stores): Punt if the size
        of the store merging group is larger than
        PARAM_STORE_MERGING_MAX_SIZE parameter.
        (split_group): Add bzero_first argument.  If set, always emit first
        the first store which must be = {} of the whole area and then for the
        rest of the stores consider all zero bytes as paddings.
        (imm_store_chain_info::output_merged_store): Check if first store
        is = {} of the whole area and if yes, determine which setting of
        bzero_first for split_group gives smaller number of stores.  Adjust
        split_group callers.
        (lhs_valid_for_store_merging_p): Allow decls.
        (rhs_valid_for_store_merging_p): Allow non-clobber CONTRUCTORs with
        no elts.
        (pass_store_merging::process_store): Likewise.

        * gcc.dg/store_merging_26.c: New test.
        * gcc.dg/store_merging_27.c: New test.
        * gcc.dg/store_merging_28.c: New test.
        * gcc.dg/store_merging_29.c: New test.

Added:
    trunk/gcc/testsuite/gcc.dg/store_merging_26.c
    trunk/gcc/testsuite/gcc.dg/store_merging_27.c
    trunk/gcc/testsuite/gcc.dg/store_merging_28.c
    trunk/gcc/testsuite/gcc.dg/store_merging_29.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/gimple-ssa-store-merging.c
    trunk/gcc/params.def
    trunk/gcc/testsuite/ChangeLog

Reply via email to