summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/LCSSA.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* switch more statistics over to STATISTIC, eliminating static ctors. Also,Chris Lattner2006-12-191-4/+3
| | | | | | delete some dead ones. llvm-svn: 32694
* Detemplatize the Statistic class. The only type it is instantiated withChris Lattner2006-12-061-1/+1
| | | | | | is 'unsigned'. llvm-svn: 32279
* generalize the fix for PR977 to also fixChris Lattner2006-10-311-28/+26
| | | | | | Transforms/LCSSA/2006-10-31-UnreachableBlock-2.ll llvm-svn: 31317
* Fix PR977 and Transforms/LCSSA/2006-10-31-UnreachableBlock.llChris Lattner2006-10-311-1/+8
| | | | llvm-svn: 31315
* eliminate RegisterOpt. It does the same thing as RegisterPass.Chris Lattner2006-08-271-1/+1
| | | | llvm-svn: 29925
* Add special check to avoid isLoop call. Simple, but doesn't seem to speedChris Lattner2006-08-021-2/+2
| | | | | | up lcssa much in practice. llvm-svn: 29465
* Replace the SSA update code in LCSSA with a bottom-up approach instead of a topChris Lattner2006-08-021-125/+95
| | | | | | | | | | | | | | | | | down approach, inspired by discussions with Tanya. This approach is significantly faster, because it does not need dominator frontiers and it does not insert extraneous unused PHI nodes. For example, on 252.eon, in a release-asserts build, this speeds up LCSSA (which is the slowest pass in gccas) from 9.14s to 0.74s on my G5. This code is also slightly smaller and significantly simpler than the old code. Amusingly, in a normal Release build (which includes the "assert(L->isLCSSAForm());" assertion), asserting that the result of LCSSA is in LCSSA form is actually slower than the LCSSA transformation pass itself on 252.eon. I will see if Loop::isLCSSAForm can be sped up next. llvm-svn: 29463
* Fix typo in the comment.Owen Anderson2006-07-091-1/+1
| | | | llvm-svn: 29078
* Add a fix for an issue where LCSSA would fail to insert undef's in some cornerOwen Anderson2006-07-091-14/+21
| | | | | | | cases. Ideally, this issue will go away in the future as LCSSA gets smarter about which Phi nodes it inserts. llvm-svn: 29076
* Use the PotDoms map to memoize 'dominating value' lookup. With this patch,Chris Lattner2006-06-141-17/+14
| | | | | | | LCSSA is still the slowest pass when gccas'ing 252.eon, but now it only takes 39s instead of 289s. :) llvm-svn: 28776
* Fix another instance where PHI nodes need special treatment.Owen Anderson2006-06-131-0/+6
| | | | llvm-svn: 28774
* Fix a bug that was causing major slowdowns in povray. This was due to LCSSAOwen Anderson2006-06-131-2/+7
| | | | | | | | | not handling PHI nodes correctly when determining if a value was live-out. This patch reduces the number of detected live-out variables in the testcase from 6565 to 485. llvm-svn: 28771
* Fix for 2006-06-26-MultipleExitsSingleBlock.Owen Anderson2006-06-121-4/+7
| | | | | | | | If a single exit block has multiple predecessors within the loop, it will appear in the exit blocks list more than once. LCSSA needs to take that into account so that it doesn't double process that exit block. llvm-svn: 28750
* Re-commit the safe parts of my 6/9 patch. Still working on fixing the ↵Owen Anderson2006-06-111-0/+2
| | | | | | unsafe parts. llvm-svn: 28748
* Back out Owen's 6/9 changes. They broke ↵Evan Cheng2006-06-111-3/+1
| | | | | | MultiSource/Benchmarks/Prolangs-C/bison (and perhaps others). llvm-svn: 28747
* Make Loop able to verify that it is in LCSSA-form, and have the LCSSA pass ↵Owen Anderson2006-06-091-1/+3
| | | | | | | | assert on this. llvm-svn: 28738
* Update some comments, and expose LCSSAID in preparation for having other passesOwen Anderson2006-06-081-1/+8
| | | | | | require LCSSA. llvm-svn: 28734
* Fix some formatting, and use inLoop() when appropriate.Owen Anderson2006-06-061-3/+3
| | | | llvm-svn: 28694
* Stop a memory leak, and update some comments.Owen Anderson2006-06-061-10/+10
| | | | llvm-svn: 28693
* Some more clean-up, and squash an IDF-Phi related bug.Owen Anderson2006-06-041-16/+13
| | | | llvm-svn: 28680
* Various clean-ups suggested by Chris.Owen Anderson2006-06-041-30/+32
| | | | llvm-svn: 28678
* Fix a bug in Phi-noded insertion. Also, update some comments to reflect what'sOwen Anderson2006-06-031-12/+21
| | | | | | actually going on. llvm-svn: 28677
* Remove a FIXME that was fixed with my last patch.Owen Anderson2006-06-011-2/+0
| | | | llvm-svn: 28619
* More cleanups. Also, add a special case for updating PHI nodes, andOwen Anderson2006-06-011-21/+33
| | | | | | | reimplement getValueDominatingFunction to walk the DominanceTree rather than just searching blindly. llvm-svn: 28618
* Extract a huge loop into a helper method. Fix a few iterator-invalidation bugs.Owen Anderson2006-05-311-86/+113
| | | | llvm-svn: 28599
* Add Use replacement. Assuming there is nothing horribly wrong with this, LCSSAOwen Anderson2006-05-291-2/+35
| | | | | | | is now theoretically feature-complete. It has not, however, been thoroughly test, and is still considered experimental. llvm-svn: 28529
* Major think-o. Iterate over all live out-of-loop values, and perform theOwen Anderson2006-05-281-36/+36
| | | | | | | other calculations on each individually, rather than trying to delay it and do them all at the end. llvm-svn: 28527
* Make LCSSA insert proper Phi nodes throughout the rest of the CFG by computingOwen Anderson2006-05-271-8/+51
| | | | | | | | the iterated Dominance Frontier of the loop-closure Phi's. This is the second phase of the LCSSA pass. The third phase (coming soon) will be to update all uses of loop variables to use the loop-closure Phi's instead. llvm-svn: 28524
* A few small clean-ups, and the addition of an LCSSA statistic.Owen Anderson2006-05-271-2/+8
| | | | llvm-svn: 28512
* Fix a copy-and-paste-o that would break some compilers.Owen Anderson2006-05-261-1/+1
| | | | llvm-svn: 28507
* Clean up and refactor LCSSA a bunch. It should also run faster now, thoughOwen Anderson2006-05-261-66/+50
| | | | | | there's still a lot of work to be done on it. llvm-svn: 28506
* Skeletal LCSSA pass. This is currently non-functional. Expect functionalityOwen Anderson2006-05-261-0/+159
and documentation updates soo. llvm-svn: 28495
OpenPOWER on IntegriCloud