summaryrefslogtreecommitdiffstats
path: root/polly/test/DeadCodeElimination
Commit message (Collapse)AuthorAgeFilesLines
* [Polly] Remove unwanted --check-prefix=CHECK from unit tests. NFC.Mandeep Singh Grang2016-04-151-1/+1
| | | | | | | | | | | | | | | | | Summary: Removed unwanted --check-prefix=CHECK from the following unit tests: DeadCodeElimination/dead_iteration_elimination.ll Isl/CodeGen/simple_vec_cast.ll Patch by: Mandeep Singh Grang (mgrang) Reviewers: jdoerfert, zinob, spop, grosser Projects: #polly Differential Revision: http://reviews.llvm.org/D19143 llvm-svn: 266411
* tests: Drop -polly-detect-unprofitable and -polly-no-early-exitTobias Grosser2015-10-067-10/+10
| | | | | | | | These flags are now always passed to all tests and need to be disabled if not needed. Disabling these flags, rather than passing them to almost all tests, significantly simplfies our RUN: lines. llvm-svn: 249422
* Use schedule trees to represent execution order of statementsTobias Grosser2015-07-146-41/+41
| | | | | | | | | | | | | | | | | | Instead of flat schedules, we now use so-called schedule trees to represent the execution order of the statements in a SCoP. Schedule trees make it a lot easier to analyze, understand and modify properties of a schedule, as specific nodes in the tree can be choosen and possibly replaced. This patch does not yet fully move our DependenceInfo pass to schedule trees, as some additional performance analysis is needed here. (In general schedule trees should be faster in compile-time, as the more structured representation is generally easier to analyze and work with). We also can not yet perform the reduction analysis on schedule trees. For more information regarding schedule trees, please see Section 6 of https://lirias.kuleuven.be/handle/123456789/497238 llvm-svn: 242130
* Replace srem by function call in nonaffine test casesTobias Grosser2015-06-232-6/+13
| | | | | | | | | | This makes the test cases nonaffine even if Polly some days gains support for the srem instruction, an instruction which is currently not modeled but which can clearly be modeled statically. A call to a function without definition will always remain non-affine, as there is just insufficient static information for it to be modeled more precisely. llvm-svn: 240458
* Remove target triples from test casesTobias Grosser2015-04-215-5/+0
| | | | | | | | I just learned that target triples prevent test cases to be run on other architectures. Polly test cases are until now sufficiently target independent to not require any target triples. Hence, we drop them. llvm-svn: 235384
* Update Polly tests to handle explicitly typed load changes in LLVM.David Blaikie2015-02-273-4/+4
| | | | llvm-svn: 230796
* Update Polly tests to handle explicitly typed gep changes in LLVMDavid Blaikie2015-02-277-23/+23
| | | | llvm-svn: 230784
* ScopDetection: Only detect scops that have at least one read and one writeTobias Grosser2015-02-197-10/+10
| | | | | | | | | | Scops that only read seem generally uninteresting and scops that only write are most likely initializations where there is also little to optimize. To not waste compile time we bail early. Differential Revision: http://reviews.llvm.org/D7735 llvm-svn: 229820
* Add early exits for SCoPs we did not optimizeJohannes Doerfert2015-02-117-10/+10
| | | | | | | | | | | | | This allows us to skip ast and code generation if we did not optimize a SCoP and will not generate parallel or alias annotations. The initial heuristic to exit is simple but allows improvements later on. All failing test cases have been modified to disable early exit, thus to keep their coverage. Differential Revision: http://reviews.llvm.org/D7254 llvm-svn: 228851
* Drop all constant scheduling dimensionsTobias Grosser2015-01-011-1/+1
| | | | | | | | | Schedule dimensions that have the same constant value accross all statements do not carry any information, but due to the increased dimensionality of the schedule cost compile time. To not pay this cost, we remove constant dimensions if possible. llvm-svn: 225067
* Revert "Added support for modulo expressions"Tobias Grosser2014-08-162-86/+25
| | | | | | | | | | | | This reverts commit 215684. The intention of the commit is great, but unfortunately it seems to be the cause of 14 LNT test suite failures: http://lab.llvm.org:8011/builders/perf-x86_64-penryn-O3-polly/builds/116 To make our buildbots and performance testers green until this issue is solved, we temporarily revert this commit. llvm-svn: 215816
* Added support for modulo expressionsJohannes Doerfert2014-08-152-25/+86
| | | | | | | | | | | The support is limited to signed modulo access and condition expressions with a constant right hand side, e.g., A[i % 2] or A[i % 9]. Test cases are modified according to this new feature and new test cases are added. Differential Revision: http://reviews.llvm.org/D4843 llvm-svn: 215684
* DeadCodeElimination: Fix liveout computationTobias Grosser2014-07-141-3/+10
| | | | | | | | | | | | | | | We move back to a simple approach where the liveout is the last must-write statement for a data-location plus all may-write statements. The previous approach did not work out. We would have to consider per-data-access dependences, instead of per-statement dependences to correct it. As this adds complexity and it seems we would not gain anything over the simpler approach that we implement in this commit, I moved us back to the old approach of computing the liveout, but enhanced it to also add may-write accesses. We also fix the test case and explain why we can not perform dead code elimination in this case. llvm-svn: 212925
* DeadCodeElim: Compute correct liveout for non-affine accessesTobias Grosser2014-07-112-0/+87
| | | | | | | Thanks to Johannes Doerfert for narrowing down the bug. Reported-by: Chris Jenneisch <chrisj@codeaurora.org> llvm-svn: 212796
* Dead code elimination: Schedule another approximative step before actual DCETobias Grosser2014-02-241-1/+1
| | | | | | | | | | | | | | | | | In 'obsequi' we have a scop in which the current dead code elimination works, but the generated code is way too complex. To avoid this trouble (and to not disable the DCE entirely) we add an additional approximative step before the actual dead code elimination. This should fix one of the two current nightly-test issues. Polly could be improved to handle 'obsequi' by teaching it to introduce only a single parameter for (%1 and zext %1) which halves the number of parameters and allows polly to derive a simpler representation for the set of live iterations. However, this needs some time to investigate. I will commit a test case as soon as we have a reduced one. llvm-svn: 202010
* Do not fail in case we do not have valid dependencesTobias Grosser2014-02-231-0/+64
| | | | | | | | In case we do not have valid dependences, we do not run dead code elimination or the schedule optimizer. This fixes an infinite loop in the dead code elimination (PR12110). llvm-svn: 201982
* DCE: Switch to hybrid precise-unprecise analysisTobias Grosser2014-02-211-15/+4
| | | | | | | | | | | | Instead of giving a choice between a precise (but possibly very complex) analysis and an approximative analysis we now use a hybrid approach which uses N precise steps followed by one approximating step. The precision of the analysis can be changed by increasing N. With a default of 'N' = 2, we get fully precise results for our current test cases and should not run into performance problems for more complex test cases. We can adjust this value when we got more experience with this dead code elimination. llvm-svn: 201888
* Add polyhedral dead code elimination.Tobias Grosser2014-02-204-0/+275
This pass eliminates loop iterations that compute results that are not used later on. This can help e.g. in D, where the default zero-initialization is often unnecessary if right after new values are assigned to an array. Contributed-by: Peter Conn <conn.peter@gmail.com> llvm-svn: 201817
OpenPOWER on IntegriCloud