aboutsummaryrefslogtreecommitdiff
path: root/gcc/params.def
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-05-06 23:50:14 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-05-06 23:50:14 +0200
commit3afd514bca6ea572e614b5289c4429ace693311b (patch)
tree6cf0ff6dfc80988456a14b05c7a9b0581f0a685d /gcc/params.def
parent839c480a14f025bdcd73a53d14a19d4cc9a1aea5 (diff)
downloadgcc-3afd514bca6ea572e614b5289c4429ace693311b.zip
gcc-3afd514bca6ea572e614b5289c4429ace693311b.tar.gz
gcc-3afd514bca6ea572e614b5289c4429ace693311b.tar.bz2
re PR tree-optimization/88709 (Improve store-merging)
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. From-SVN: r270924
Diffstat (limited to 'gcc/params.def')
-rw-r--r--gcc/params.def5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/params.def b/gcc/params.def
index 3c9c5fc..904b3cb 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -1205,6 +1205,11 @@ DEFPARAM (PARAM_MAX_STORES_TO_MERGE,
"store merging pass.",
64, 2, 0)
+DEFPARAM (PARAM_STORE_MERGING_MAX_SIZE,
+ "store-merging-max-size",
+ "Maximum size of a single store merging region in bytes.",
+ 65536, 1, 1)
+
DEFPARAM (PARAM_MAX_TAIL_MERGE_ITERATIONS,
"max-tail-merge-iterations",
"Maximum amount of iterations of the pass over a function.",