Use SCEV information for the second level aliasing
authorRoman Gareev <gareevroman@gmail.com>
Tue, 8 Aug 2017 16:50:28 +0000 (16:50 +0000)
committerRoman Gareev <gareevroman@gmail.com>
Tue, 8 Aug 2017 16:50:28 +0000 (16:50 +0000)
commit1563f039f5049c0641732a2f00ee499e6c43f678
tree48f8e1d78916d161293f99c6c5f605cc85d6b733
parent4aa19052f301a21b0f1f4a416e86bbadd2a1b578
Use SCEV information for the second level aliasing

We introduce another level of alias metadata to distinguish the individual
non-aliasing accesses that have inter iteration alias-free base pointers
marked with "Inter iteration alias-free" mark nodes. To distinguish two
accesses, the comparison of raw pointers representing base pointers is used.

In case of, for example, ublas's prod function that implements GEMM, and
DeLiCM we can get accesses to same location represented by different raw
pointers. Consequently, we create different alias sets that can prevent
accesses from, for example, being sinked or hoisted.

To avoid the issue, we compare the corresponding SCEV information instead
of the corresponding raw pointers.

Reviewed-by: Tobias Grosser <tobias@grosser.es>
Differential Revision: https://reviews.llvm.org/D35761

llvm-svn: 310380
polly/include/polly/CodeGen/IRBuilder.h
polly/lib/CodeGen/IRBuilder.cpp
polly/test/ScheduleOptimizer/kernel_gemm___%for.body---%for.end24.jscop [new file with mode: 0644]
polly/test/ScheduleOptimizer/kernel_gemm___%for.body---%for.end24.jscop.transformed [new file with mode: 0644]
polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll [new file with mode: 0644]