https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87859
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Author: jakub Date: Mon Nov 5 10:28:19 2018 New Revision: 265794 URL: https://gcc.gnu.org/viewcvs?rev=265794&root=gcc&view=rev Log: PR tree-optimization/87859 * gimple-ssa-store-merging.c (struct merged_store_group): Add only_constants and first_nonmergeable_order members. (merged_store_group::merged_store_group): Initialize them. (merged_store_group::do_merge): Clear only_constants member if adding something other than INTEGER_CST store. (imm_store_chain_info::coalesce_immediate_stores): Don't merge stores with order >= first_nonmergeable_order. Use merged_store->only_constants instead of always recomputing it. Set merged_store->first_nonmergeable_order if we've skipped any stores. Attempt to merge overlapping INTEGER_CST stores that we would otherwise skip. * gcc.dg/store_merging_24.c: New test. * gcc.dg/store_merging_25.c: New test. Added: trunk/gcc/testsuite/gcc.dg/store_merging_24.c trunk/gcc/testsuite/gcc.dg/store_merging_25.c Modified: trunk/gcc/ChangeLog trunk/gcc/gimple-ssa-store-merging.c trunk/gcc/testsuite/ChangeLog