[Simplify] Improve scalability.
commitb6242b1c3139fedad49cfc7d0d60a79995f4366c
authorMichael Kruse <llvm@meinersbur.de>
Tue, 1 Aug 2017 19:39:11 +0000 (1 19:39 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Tue, 1 Aug 2017 19:39:11 +0000 (1 19:39 +0000)
tree5c8c9cd3e258c727ea166307b448ae1e6879eb1c
parent29f724321bf1c5fd3ac7cdeadc88b721db98d810
[Simplify] Improve scalability.

With a lot of reads and writes to the same array in a statement,
some isl sets that capture the state between access can become
complex such that isl takes more considerable time and memory
for operations on them.

The problems identified were:

- is_subset() takes considerable time with many disjoints in the
  arguments. We limit the number of disjoints to 4, any additional
  information is thrown away.

- subtract() can lead to many disjoints. We instead assume that any
  array element is possibly accessed, which removes all disjoints.

- subtract_domain() may lead to considerable processing, even if all
  elements are are to be removed. Instead, we remove determine and
  remove the affected spaces manually. No behaviour is changed.

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@309728 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transform/Simplify.cpp
test/Simplify/scalability1.ll [new file with mode: 0644]
test/Simplify/scalability2.ll [new file with mode: 0644]