forked from OSchip/llvm-project
22058c3fbb
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 |
||
---|---|---|
.. | ||
CodeGen | ||
DeLICM | ||
DeadCodeElimination | ||
DependenceInfo | ||
FlattenSchedule | ||
GPGPU | ||
Isl | ||
JSONExporter | ||
PruneUnprofitable | ||
ScheduleOptimizer | ||
ScopDetect | ||
ScopDetectionDiagnostics | ||
ScopInfo | ||
Simplify | ||
Unit | ||
UnitIsl | ||
CMakeLists.txt | ||
README | ||
create_ll.sh | ||
lit.cfg | ||
lit.site.cfg.in | ||
polly.ll | ||
update_check.py |
README
place tests here