summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/target_parallel_reduction_messages.cpp
diff options
context:
space:
mode:
authorMichael Kruse <llvm@meinersbur.de>2017-07-20 16:21:55 +0000
committerMichael Kruse <llvm@meinersbur.de>2017-07-20 16:21:55 +0000
commit22058c3fbb6b0a0f04fdc2ba13a56022447109d0 (patch)
treeefa4b0671466fde2b061f39070ac84685777d59f /clang/test/OpenMP/target_parallel_reduction_messages.cpp
parent9e3db2b75636e38700dff2fbfd9347394011d239 (diff)
downloadbcm5719-llvm-22058c3fbb6b0a0f04fdc2ba13a56022447109d0.tar.gz
bcm5719-llvm-22058c3fbb6b0a0f04fdc2ba13a56022447109d0.zip
[Simplify] Remove unused instructions and accesses.
Use a mark-and-sweep algorithm to find and remove unused instructions and MemoryAccesses. This is useful in particular to remove scalar writes that are never used anywhere. A scalar write in a loop induces a write-after-write dependency that stops the loop iterations to be rescheduled. Such writes can be a result of previous transformations such as DeLICM and operand tree forwarding. It adds a new class VirtualInstruction that represents an instruction in a particular statement. At the moment an instruction can only belong to the statement that represents a BasicBlock. In the future, instructions can be in one of multiple statements representing a BasicBlock (Nandini's work), in different statements than its BasicBlock would indicate, and even multiple statements at once (by forwarding operand trees). It also integrates nicely with the VirtualUse class. ScopStmt::contains(Instruction*) currently uses the instruction's parent BasicBlock to check whether it contains the instruction. It will need to check the actual statement list when one of the aforementioned features become possible. Differential Revision: https://reviews.llvm.org/D35656 llvm-svn: 308626
Diffstat (limited to 'clang/test/OpenMP/target_parallel_reduction_messages.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud