llvm-project/polly/test/Simplify
Michael Kruse 22058c3fbb [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
2017-07-20 16:21:55 +00:00
..
dead_access_load.ll [Simplify] Remove unused instructions and accesses. 2017-07-20 16:21:55 +00:00
dead_access_phi.ll [Simplify] Remove unused instructions and accesses. 2017-07-20 16:21:55 +00:00
dead_access_value.ll [Simplify] Remove unused instructions and accesses. 2017-07-20 16:21:55 +00:00
dead_instruction.ll [Simplify] Remove unused instructions and accesses. 2017-07-20 16:21:55 +00:00
gemm.ll [Simplify] Also remove redundant writes which originally came from PHI nodes 2017-07-11 14:29:39 +00:00
gemm___%bb3---%bb28.jscop [Simplify] Add test case which we currently miss 2017-07-11 10:30:45 +00:00
gemm___%bb3---%bb28.jscop.transformed [Simplify] Add test case which we currently miss 2017-07-11 10:30:45 +00:00
overwritten.ll [Simplify] Remove writes that are overwritten. 2017-05-13 11:49:34 +00:00
overwritten_3phi.ll [tests] Set -polly-import-jscop-dir=%S always 2017-07-11 10:39:01 +00:00
overwritten_3phi___%for---%return.jscop [Simplify] Remove identical write removal. NFC. 2017-05-13 12:20:57 +00:00
overwritten_3phi___%for---%return.jscop.transformed [Simplify] Remove identical write removal. NFC. 2017-05-13 12:20:57 +00:00
overwritten_3store.ll [Simplify] Remove writes that are overwritten. 2017-05-13 11:49:34 +00:00
overwritten_implicit_and_explicit.ll [tests] Set -polly-import-jscop-dir=%S always 2017-07-11 10:39:01 +00:00
overwritten_implicit_and_explicit___%for---%return.jscop [Simplify] Remove writes that are overwritten. 2017-05-13 11:49:34 +00:00
overwritten_implicit_and_explicit___%for---%return.jscop.transformed [Simplify] Remove writes that are overwritten. 2017-05-13 11:49:34 +00:00
overwritten_loadbetween.ll [Simplify] Remove writes that are overwritten. 2017-05-13 11:49:34 +00:00
overwritten_scalar.ll [tests] Set -polly-import-jscop-dir=%S always 2017-07-11 10:39:01 +00:00
overwritten_scalar___%for---%return.jscop [Simplify] Remove identical write removal. NFC. 2017-05-13 12:20:57 +00:00
overwritten_scalar___%for---%return.jscop.transformed [Simplify] Remove identical write removal. NFC. 2017-05-13 12:20:57 +00:00
pass_existence.ll
pr33323.ll [tests] Set -polly-import-jscop-dir=%S always 2017-07-11 10:39:01 +00:00
pr33323___%for.body98---%for.cond87.loopexit.jscop [Simplify] Use execution order of memory accesses. 2017-06-06 17:46:42 +00:00
pr33323___%for.body98---%for.cond87.loopexit.jscop.transformed [Simplify] Use execution order of memory accesses. 2017-06-06 17:46:42 +00:00
redundant.ll
redundant_differentindex.ll
redundant_storebetween.ll