[ForwardOpTree] Introduce the -polly-optree pass.
commita9fc1edc9ee66e65590a7df04669bf8e8a91d11e
authorMichael Kruse <llvm@meinersbur.de>
Sat, 22 Jul 2017 14:02:47 +0000 (22 14:02 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Sat, 22 Jul 2017 14:02:47 +0000 (22 14:02 +0000)
tree11a38e4591e7b900271b0211fe8cdc89c071e8e4
parentc93887de990dc3d03d0584eb35e0a3f87b2eec17
[ForwardOpTree] Introduce the -polly-optree pass.

This pass 'forwards' operand trees into statements that use them in
order to avoid scalar dependencies.

This minimal implementation handles only the case of speculatable
instructions. We will successively add support for:
- Hoisted loads
- Read-only values
- Synthesizable values
- Loads
- PHIs
- Forwarding only parts of the tree

Differential Revision: https://reviews.llvm.org/D35754

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@308825 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed:
include/polly/ForwardOpTree.h [new file with mode: 0644]
include/polly/ScopInfo.h
lib/CMakeLists.txt
lib/Support/RegisterPasses.cpp
lib/Transform/ForwardOpTree.cpp [new file with mode: 0644]
test/ForwardOpTree/forward_instruction.ll [new file with mode: 0644]
test/ForwardOpTree/forward_transitive.ll [new file with mode: 0644]
test/ForwardOpTree/noforward_partial.ll [new file with mode: 0644]
test/ForwardOpTree/noforward_phi.ll [new file with mode: 0644]
test/ForwardOpTree/noforward_region.ll [new file with mode: 0644]
test/ForwardOpTree/noforward_sideffects.ll [new file with mode: 0644]
test/ForwardOpTree/noforward_synthesizable.ll [new file with mode: 0644]