re PR tree-optimization/87859 (store-merging miscompilation of mesa)
authorJakub Jelinek <jakub@redhat.com>
Mon, 5 Nov 2018 10:28:19 +0000 (11:28 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 5 Nov 2018 10:28:19 +0000 (11:28 +0100)
commit18e0c3d1718157761e3f23ddc33ae22393bef15f
treed44029bd0f91d888f3a5188839bab890b970e2c4
parentcbd429001f3a6c2338c695cc71a28cd8320e3bd2
re PR tree-optimization/87859 (store-merging miscompilation of mesa)

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.

From-SVN: r265794
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]