hanchenye-llvm-project/polly/lib
Michael Kruse 07e315e780 [Simplify] Remove identical scalar writes.
After DeLICM, it is possible to have two writes of the same value to
the same location in the same statement when it determined that those
writes do not conflict (write the same value).

Teach -polly-simplify to remove one of the writes. It interferes with
the pattern matching of matrix-multiplication kernels and also seem
to not be optimized away by LLVM.

The algorthm is simple, has O(n^2) behaviour (n = max number of
MemoryAccesses in a statement) and only matches the most obvious cases,
but seem to be enough to pattern-match Boost ublas gemm.

Not handled cases include:
- StoreInst instructions (a.k.a. explicit writes), since the value might
  be loaded or overwritten between the two stores.
- PHINode, especially LCSSA, when the PHI value matches with on other's.
- Partial writes (in preparation)

llvm-svn: 302805
2017-05-11 15:07:38 +00:00
..
Analysis [Fix] [Fortran Support] Fix variable name & make testcase activate on release 2017-05-10 17:27:48 +00:00
CodeGen [Polly] Canonicalize arrays according to base-ptr equivalence class 2017-05-10 10:59:58 +00:00
Exchange Perform copying to created arrays according to the packing transformation 2016-09-14 06:26:09 +00:00
External Update to isl-0.18-592-gb50ad59 2017-04-28 06:11:17 +00:00
Support [Polly] Added OpenCL Runtime to GPURuntime Library for GPGPU CodeGen 2017-05-07 21:03:46 +00:00
Transform [Simplify] Remove identical scalar writes. 2017-05-11 15:07:38 +00:00
CMakeLists.txt [CMake] Introduce POLLY_BUNDLED_JSONCPP. 2017-05-06 13:42:15 +00:00
Polly.cpp Drop '@brief' from doxygen comments 2016-09-02 06:33:33 +00:00