[Simplify] Implement write accesses coalescing.
commitbcb1b6e359bb871f603247e5a18de3ba2f998d11
authorMichael Kruse <llvm@meinersbur.de>
Sat, 29 Jul 2017 16:21:16 +0000 (29 16:21 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Sat, 29 Jul 2017 16:21:16 +0000 (29 16:21 +0000)
tree1a6aab4e548f533df13cae5e20c62ac4fdd6de97
parent23533c7a646a4bccbc2eb0b2a55b6dece416f457
[Simplify] Implement write accesses coalescing.

Write coalescing combines write accesses that

- Write the same llvm::Value.
- Write to the same array.
- Unless they do not write anything in a statement instance (partial
  writes), write to the same element.
- There is no other access between them that accesses the same element.

This is particularly useful after DeLICM, which leaves partial writes to
disjoint domains.

Differential Revision: https://reviews.llvm.org/D36010

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@309489 91177308-0d34-0410-b5e6-96231b3b80d8
26 files changed:
lib/Transform/Simplify.cpp
test/Simplify/coalesce_3partials.ll [new file with mode: 0644]
test/Simplify/coalesce_3partials___%for---%return.jscop [new file with mode: 0644]
test/Simplify/coalesce_3partials___%for---%return.jscop.transformed [new file with mode: 0644]
test/Simplify/coalesce_disjointelements.ll [new file with mode: 0644]
test/Simplify/coalesce_disjointelements___%for---%return.jscop [new file with mode: 0644]
test/Simplify/coalesce_disjointelements___%for---%return.jscop.transformed [new file with mode: 0644]
test/Simplify/coalesce_overlapping.ll [new file with mode: 0644]
test/Simplify/coalesce_overlapping___%for---%return.jscop [new file with mode: 0644]
test/Simplify/coalesce_overlapping___%for---%return.jscop.transformed [new file with mode: 0644]
test/Simplify/coalesce_partial.ll [new file with mode: 0644]
test/Simplify/coalesce_partial___%for---%return.jscop [new file with mode: 0644]
test/Simplify/coalesce_partial___%for---%return.jscop.transformed [new file with mode: 0644]
test/Simplify/gemm.ll
test/Simplify/nocoalesce_differentvalues.ll [new file with mode: 0644]
test/Simplify/nocoalesce_differentvalues___%for---%return.jscop [new file with mode: 0644]
test/Simplify/nocoalesce_differentvalues___%for---%return.jscop.transformed [new file with mode: 0644]
test/Simplify/nocoalesce_elementmismatch.ll [new file with mode: 0644]
test/Simplify/nocoalesce_elementmismatch___%for---%return.jscop [new file with mode: 0644]
test/Simplify/nocoalesce_elementmismatch___%for---%return.jscop.transformed [new file with mode: 0644]
test/Simplify/nocoalesce_readbetween.ll [new file with mode: 0644]
test/Simplify/nocoalesce_readbetween___%for---%return.jscop [new file with mode: 0644]
test/Simplify/nocoalesce_readbetween___%for---%return.jscop.transformed [new file with mode: 0644]
test/Simplify/nocoalesce_writebetween.ll [new file with mode: 0644]
test/Simplify/nocoalesce_writebetween___%for---%return.jscop [new file with mode: 0644]
test/Simplify/nocoalesce_writebetween___%for---%return.jscop.transformed [new file with mode: 0644]