summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/GVNPRE.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add a type field to expressions in preparation for performing GVNPRE on casts.Owen Anderson2007-06-291-0/+12
| | | | llvm-svn: 37788
* Add support for performing GVNPRE on select instructions. This fixes ↵Owen Anderson2007-06-281-13/+57
| | | | | | test/Transforms/GVNPRE/select.ll. llvm-svn: 37783
* Make many sets a much more reasonable size. This decreases the time to optimizeOwen Anderson2007-06-281-65/+65
| | | | | | Anton's testcase from 35.5s to 34.7s. llvm-svn: 37769
* Use cached information that has already been computed to make clean() ↵Owen Anderson2007-06-271-52/+31
| | | | | | simpler and faster. This is a small speedup on most cases. llvm-svn: 37761
* Fold a lot of code into two cases: binary instructions and ternary instructions.Owen Anderson2007-06-271-269/+62
| | | | | | This saves many lines of code duplication. No functionality change. llvm-svn: 37759
* Add support for performing GVNPRE on the three vector-specific operations.Owen Anderson2007-06-271-20/+436
| | | | llvm-svn: 37745
* 1. Correct some comments and clean up some dead code.Owen Anderson2007-06-261-21/+26
| | | | | | | 2. When calculating ANTIC_IN, only iterate the changed blocks. For most average inputs this is a small speedup, but for cases with unusual CFGs, this can be a significant win. llvm-svn: 37742
* Use the built-in postorder iterators rather than computing a postorder walk ↵Owen Anderson2007-06-251-35/+3
| | | | | | by hand. llvm-svn: 37721
* 1) Fix an issue with non-deterministic iteration order in phi_translateOwen Anderson2007-06-251-111/+86
| | | | | | | | | | | 2) Remove some maximal-set computing code that is no longer used. 3) Use a post-order CFG traversal to compute ANTIC_IN instead of a postdom traversal. This causes the ANTIC_IN calculation to converge much faster. Thanks to Daniel Berlin for suggesting this. With this patch, the time to optimize 403.gcc decreased from 17.5s to 7.5s, and Anton's huge testcase decreased from 62 minutes to 38 seconds. llvm-svn: 37714
* Fix a silly mistake that was causing failures.Owen Anderson2007-06-241-2/+2
| | | | llvm-svn: 37712
* Rework topo_sort so eliminate some behavior that scaled terribly. This ↵Owen Anderson2007-06-221-57/+40
| | | | | | | | reduces the time to optimize 403.gcc from 18.2s to 17.5s, and has an even larger effect on larger testcases. llvm-svn: 37708
* Perform fewer set insertions while calculating ANTIC_IN. This reduces the ↵Owen Anderson2007-06-221-40/+31
| | | | | | amount of time to optimize 403.gcc from 21.9s to 18.2s. llvm-svn: 37707
* Remove some code that I was using for collecting performance information ↵Owen Anderson2007-06-221-18/+18
| | | | | | that should not have been committed. llvm-svn: 37706
* Avoid excessive calls to find_leader when calculating AVAIL_OUT. This ↵Owen Anderson2007-06-221-30/+76
| | | | | | reduces the time to optimize 403.gcc from 23.5s to 21.9s. llvm-svn: 37702
* Reserve space in vectors before topologically sorting into them. This ↵Owen Anderson2007-06-221-0/+2
| | | | | | improves the time to optimize 403.gcc from 28s to 23.5s. llvm-svn: 37699
* Make a bunch of optimizations for compile time to GVNPRE, including smarter ↵Owen Anderson2007-06-221-17/+41
| | | | | | set unions, deferring blocks rather than computing maximal sets, and smarter use of sets. With these enhancements, the time to optimize 273.perlbmk goes from 5.3s to 2.7s. llvm-svn: 37698
* Change lots of sets from std::set to SmallPtrSet. This reduces the time ↵Owen Anderson2007-06-211-92/+99
| | | | | | required to optimize 253.perlbmk from 10.9s to 5.3s. llvm-svn: 37690
* Eliminate a redundant check. This speeds up optimization of 253.perlbmk ↵Owen Anderson2007-06-211-7/+3
| | | | | | from 13.5 seconds to 10.9 seconds. llvm-svn: 37683
* Comment-ize the functions in GVNPRE.Owen Anderson2007-06-211-76/+108
| | | | llvm-svn: 37681
* Split runOnFunction into many smaller functions. This make it easier to get ↵Owen Anderson2007-06-201-279/+329
| | | | | | accurate performance analysis of GVNPRE. llvm-svn: 37678
* Make GVNPRE accurate report whether it modified the function or not.Owen Anderson2007-06-201-5/+12
| | | | llvm-svn: 37673
* Get rid of an unneeded helper function.Owen Anderson2007-06-201-19/+9
| | | | llvm-svn: 37670
* Use a DenseMap instead of an std::map for the value numbering. This reduces ↵Owen Anderson2007-06-191-4/+5
| | | | | | the time to optimize lencod on a PPC Debug build from ~300s to ~140s. llvm-svn: 37668
* Make dependsOnInvoke much more specific in what it tests, which in turn make ↵Owen Anderson2007-06-191-42/+10
| | | | | | it much faster to run. This reduces the time to optimize lencondwith a debug build on PPC from ~450s to ~300s. llvm-svn: 37667
* Handle constants in phi nodes properly. This fixes ↵Owen Anderson2007-06-191-1/+10
| | | | | | test/Transforms/GVNPRE/2007-06-18-ConstantInPhi.ll llvm-svn: 37655
* Be careful to erase values from all of the appropriate sets when they're not ↵Owen Anderson2007-06-191-2/+14
| | | | | | needed anymore. This fixes a few more memory-related issues. llvm-svn: 37647
* Remember to clear the maximal sets between functions.Owen Anderson2007-06-191-2/+3
| | | | | | Thanks to Nicholas for valgrinding this. llvm-svn: 37646
* Refactor GVNPRE to use a much smart method of uniquing value sets, and ↵Owen Anderson2007-06-191-273/+451
| | | | | | centralize a lot of the value numbering information. No functionality change. llvm-svn: 37645
* Cache the results of dependsOnInvoke()Owen Anderson2007-06-181-4/+18
| | | | llvm-svn: 37622
* Fix indentation.Owen Anderson2007-06-181-6/+6
| | | | llvm-svn: 37621
* Don't perform an expensive check if it's not necessary.Owen Anderson2007-06-181-2/+12
| | | | llvm-svn: 37620
* Fix test/Transforms/GVNPRE/2007-06-15-InvokeInst.ll by ignoring all ↵Owen Anderson2007-06-161-3/+36
| | | | | | instructions that depend on invokes. llvm-svn: 37610
* Fix test/Transforms/GVNPRE/2007-06-15-Looping.llOwen Anderson2007-06-151-4/+2
| | | | llvm-svn: 37595
* Fix test/Transforms/GVNPRE/2007-06-12-PhiTranslate.llOwen Anderson2007-06-121-38/+39
| | | | llvm-svn: 37564
* Refactor some code, and fix test/Transforms/GVNPRE/2007-06-12-NoExit.ll by ↵Owen Anderson2007-06-121-47/+69
| | | | | | | | being more careful when using post-dominator information. llvm-svn: 37556
* Fix a few more bugs, including an instance of walking in reverse topological ↵Owen Anderson2007-06-121-31/+49
| | | | | | | | rather than topological order. This fixes a testcase extracted from llvm-test. llvm-svn: 37550
* Handle functions with multiple exit blocks properly.Owen Anderson2007-06-111-0/+6
| | | | llvm-svn: 37539
* Perform PRE of comparison operators.Owen Anderson2007-06-091-24/+155
| | | | llvm-svn: 37536
* Collect statistics from GVN-PRE.Owen Anderson2007-06-081-0/+9
| | | | llvm-svn: 37530
* Fix typo in a comment.Owen Anderson2007-06-081-1/+1
| | | | llvm-svn: 37526
* Fix a bug that was causing the elimination phase not to replace values when ↵Owen Anderson2007-06-081-13/+56
| | | | | | | | | | it should be. With this patch, GVN-PRE now correctly optimizes the example from the thesis. Many thanks to Daniel Berlin for helping me find errors in this. llvm-svn: 37525
* Small bugfix, and const-ify some methods (Thanks, Bill).Owen Anderson2007-06-081-6/+6
| | | | llvm-svn: 37513
* Add partial redundancy elimination.Owen Anderson2007-06-081-84/+249
| | | | llvm-svn: 37510
* Add simple full redundancy elimination.Owen Anderson2007-06-061-12/+38
| | | | llvm-svn: 37455
* Fix a misunderstanding of the algorithm. Really, we should be tracking valuesOwen Anderson2007-06-051-14/+17
| | | | | | | and expression separately. We can get around this, however, by only keeping opaque values in TMP_GEN. llvm-svn: 37443
* Don't leak memory.Owen Anderson2007-06-051-3/+6
| | | | llvm-svn: 37442
* Fix a small bug, some 80 cols violations, and add some more debugging output.Owen Anderson2007-06-051-2/+8
| | | | llvm-svn: 37436
* Don't use std::set_difference when the two sets are sorted differently. ComputeOwen Anderson2007-06-041-7/+6
| | | | | | | | | the difference manually instead. This allows GVNPRE to produce correct analysis for the example in the GVNPRE paper. llvm-svn: 37425
* Fix a bunch of small bugs, and improve the debugging output significantly.Owen Anderson2007-06-041-26/+44
| | | | llvm-svn: 37424
* Make phi_translate correct.Owen Anderson2007-06-041-47/+50
| | | | llvm-svn: 37418
OpenPOWER on IntegriCloud