[ScopBuilder] Build invariant loads separately.
authorMichael Kruse <llvm@meinersbur.de>
Mon, 2 Oct 2017 11:41:27 +0000 (11:41 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Mon, 2 Oct 2017 11:41:27 +0000 (11:41 +0000)
commitf5745b4e7d7b5815f492e584e9fff1e51dd41c47
tree18187062c0873ed3ea312160adbcc968c8ea68de
parent89a6f3db020becb833fe1501358e172171ff2cbf
[ScopBuilder] Build invariant loads separately.

Create the MemoryAccesses of invariant loads separately and before
all other MemoryAccesses.

Invariant loads are classified as synthesizable and therefore are not
contained in any statement. When iterating over all instructions of all
statements, the invariant loads are consequently not processed and
iterating over them separately becomes necessary.

This patch can change the order in which MemoryAccesses are created, but
otherwise has no functional change.

Some temporary code is introduced to ensure correctness, but will be
removed in the next commit.

llvm-svn: 314664
polly/lib/Analysis/ScopBuilder.cpp
polly/test/ScopInfo/invariant_load_zext_parameter.ll
polly/test/ScopInfo/multidim_2d_with_modref_call.ll
polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll
polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll