[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