summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Begin adding static dependence information to passes, which will allow us toOwen Anderson2010-10-121-1/+7
| | | | | | | | | perform initialization without static constructors AND without explicit initialization by the client. For the moment, passes are required to initialize both their (potential) dependencies and any passes they preserve. I hope to be able to relax the latter requirement in the future. llvm-svn: 116334
* Now with fewer extraneous semicolons!Owen Anderson2010-10-071-1/+1
| | | | llvm-svn: 115996
* Revert r114919, which caused some serious regressions on ARM.Owen Anderson2010-09-291-6/+1
| | | | llvm-svn: 115053
* Weight loop unrolling counts by nesting depth. Unrolling deeply nested loops ↵Owen Anderson2010-09-271-1/+6
| | | | | | | | | | | tends to cause high register pressure and thus excess spills, which we don't currently recover from well. This should be re-evaluated in the future if our ability to generate good spills/splits improves. Partial fix for <rdar://problem/7635585>. llvm-svn: 114919
* Lower the unrolling theshold to 150. Empirical tests indicate that this is ↵Owen Anderson2010-09-101-1/+1
| | | | | | | | a sweet spot in the performance per code size increase curve. llvm-svn: 113595
* What the loop unroller cares about, rather than just not unrolling loops ↵Owen Anderson2010-09-091-5/+5
| | | | | | | | | | | with calls, is not unrolling loops that contain calls that would be better off getting inlined. This mostly comes up when an interleaved devirtualization pass has devirtualized a call which the inliner will inline on a future pass. Thus, rather than blocking all loops containing calls, add a metric for "inline candidate calls" and block loops containing those instead. llvm-svn: 113535
* Revert r113439, which relaxed the requirement that loops containing calls ↵Owen Anderson2010-09-091-4/+2
| | | | | | | | cannot be unrolled. After some discussion, there seems to be a better way to achieve the same effect. llvm-svn: 113528
* r113526 introduced an unintended change to the loop unrolling threshold. ↵Owen Anderson2010-09-091-1/+1
| | | | | | Revert it. llvm-svn: 113527
* Fix typo in code to cap the loop code size reduction calculation.Owen Anderson2010-09-091-2/+2
| | | | llvm-svn: 113526
* Use code-size reduction metrics to estimate the amount of savings we'll get ↵Owen Anderson2010-09-091-1/+24
| | | | | | | | when we unroll a loop. Next step is to recalculate the threshold values given this new heuristic. llvm-svn: 113525
* Relax the "don't unroll loops containing calls" rule. Instead, when a loop ↵Owen Anderson2010-09-081-2/+4
| | | | | | | | | contains a call, lower the unrolling threshold to the optimize-for-size threshold. Basically, for loops containing calls, unrolling can still be profitable as long as the loop is REALLY small. llvm-svn: 113439
* Add a separate unrolling threshold when the current function is being ↵Owen Anderson2010-09-071-4/+20
| | | | | | | | | | optimized for size. The threshold value of 50 is arbitrary, and I chose it simply by analogy to the inlining thresholds, where the baseline unrolling threshold is slightly smaller than the baseline inlining threshold. This could undoubtedly use some tuning. llvm-svn: 113306
* now that loop passes don't use DomFrontier, there is no reasonChris Lattner2010-08-291-8/+2
| | | | | | | for the unroller to pretend it supports updating it. It still has a horrible hack for DomTree. llvm-svn: 112444
* Reapply r110396, with fixes to appease the Linux buildbot gods.Owen Anderson2010-08-061-1/+1
| | | | llvm-svn: 110460
* Revert r110396 to fix buildbots.Owen Anderson2010-08-061-1/+1
| | | | llvm-svn: 110410
* Don't use PassInfo* as a type identifier for passes. Instead, use the ↵Owen Anderson2010-08-051-1/+1
| | | | | | | | address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
* Experiments show that we can safely increase our unrolling threshold without ↵Owen Anderson2010-08-041-1/+1
| | | | | | | | unduly impacting code size, particularly since unrolling is not enabled at -Os. llvm-svn: 110233
* Remove LCSSA's bogus dependence on LoopSimplify and LoopSimplify's bogusDan Gohman2010-07-261-2/+5
| | | | | | | | | | | | | | dependence on DominanceFrontier. Instead, add an explicit DominanceFrontier pass in StandardPasses.h to ensure that it gets scheduled at the right time. Declare that loop unrolling preserves ScalarEvolution, and shuffle some getAnalysisUsages. This eliminates one LoopSimplify and one LCCSA run in the standard compile opts sequence. llvm-svn: 109413
* Fix batch of converting RegisterPass<> to INTIALIZE_PASS().Owen Anderson2010-07-211-1/+1
| | | | llvm-svn: 109045
* Add a DominatorTree argument to isLCSSA so that it doesn't have toDan Gohman2010-03-101-1/+0
| | | | | | | compute a set of reachable blocks for itself each time it is called, which is fairly frequently. llvm-svn: 98179
* Don't unroll loops containing function calls.Jakob Stoklund Olesen2010-02-051-2/+8
| | | | llvm-svn: 95454
* Change errs() to dbgs().David Greene2010-01-051-6/+6
| | | | llvm-svn: 92623
* Replace LoopUnrollPass.cpp's custom code-size estimation code usingDan Gohman2009-10-311-30/+5
| | | | | | the new common CodeMetrics code. llvm-svn: 85663
* Remove an unnecessary #include.Dan Gohman2009-10-311-1/+0
| | | | llvm-svn: 85661
* Rename UnrollLoop.cpp to LoopUnroll.cpp, and LoopUnroll.cpp toDan Gohman2009-10-311-0/+177
LoopUnrollPass.cpp, for consistency with other passes which are similarly split. llvm-svn: 85659
OpenPOWER on IntegriCloud