PR tree-optimization/87859
commite580254af7510b7fd03017b42d1cc9b903597eae
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Nov 2018 10:28:19 +0000 (5 10:28 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Nov 2018 10:28:19 +0000 (5 10:28 +0000)
treed44029bd0f91d888f3a5188839bab890b970e2c4
parent3ff1e878a4dbfbd39678527d001ac54050d83853
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265794 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/gimple-ssa-store-merging.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/store_merging_24.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/store_merging_25.c [new file with mode: 0644]