Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Add a type field to expressions in preparation for performing GVNPRE on casts. | Owen Anderson | 2007-06-29 | 1 | -0/+12 | |
| | | | | llvm-svn: 37788 | |||||
* | Add support for performing GVNPRE on select instructions. This fixes ↵ | Owen Anderson | 2007-06-28 | 1 | -13/+57 | |
| | | | | | | test/Transforms/GVNPRE/select.ll. llvm-svn: 37783 | |||||
* | Make many sets a much more reasonable size. This decreases the time to optimize | Owen Anderson | 2007-06-28 | 1 | -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 Anderson | 2007-06-27 | 1 | -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 Anderson | 2007-06-27 | 1 | -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 Anderson | 2007-06-27 | 1 | -20/+436 | |
| | | | | llvm-svn: 37745 | |||||
* | 1. Correct some comments and clean up some dead code. | Owen Anderson | 2007-06-26 | 1 | -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 Anderson | 2007-06-25 | 1 | -35/+3 | |
| | | | | | | by hand. llvm-svn: 37721 | |||||
* | 1) Fix an issue with non-deterministic iteration order in phi_translate | Owen Anderson | 2007-06-25 | 1 | -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 Anderson | 2007-06-24 | 1 | -2/+2 | |
| | | | | llvm-svn: 37712 | |||||
* | Rework topo_sort so eliminate some behavior that scaled terribly. This ↵ | Owen Anderson | 2007-06-22 | 1 | -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 Anderson | 2007-06-22 | 1 | -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 Anderson | 2007-06-22 | 1 | -18/+18 | |
| | | | | | | that should not have been committed. llvm-svn: 37706 | |||||
* | Avoid excessive calls to find_leader when calculating AVAIL_OUT. This ↵ | Owen Anderson | 2007-06-22 | 1 | -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 Anderson | 2007-06-22 | 1 | -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 Anderson | 2007-06-22 | 1 | -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 Anderson | 2007-06-21 | 1 | -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 Anderson | 2007-06-21 | 1 | -7/+3 | |
| | | | | | | from 13.5 seconds to 10.9 seconds. llvm-svn: 37683 | |||||
* | Comment-ize the functions in GVNPRE. | Owen Anderson | 2007-06-21 | 1 | -76/+108 | |
| | | | | llvm-svn: 37681 | |||||
* | Split runOnFunction into many smaller functions. This make it easier to get ↵ | Owen Anderson | 2007-06-20 | 1 | -279/+329 | |
| | | | | | | accurate performance analysis of GVNPRE. llvm-svn: 37678 | |||||
* | Make GVNPRE accurate report whether it modified the function or not. | Owen Anderson | 2007-06-20 | 1 | -5/+12 | |
| | | | | llvm-svn: 37673 | |||||
* | Get rid of an unneeded helper function. | Owen Anderson | 2007-06-20 | 1 | -19/+9 | |
| | | | | llvm-svn: 37670 | |||||
* | Use a DenseMap instead of an std::map for the value numbering. This reduces ↵ | Owen Anderson | 2007-06-19 | 1 | -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 Anderson | 2007-06-19 | 1 | -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 Anderson | 2007-06-19 | 1 | -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 Anderson | 2007-06-19 | 1 | -2/+14 | |
| | | | | | | needed anymore. This fixes a few more memory-related issues. llvm-svn: 37647 | |||||
* | Remember to clear the maximal sets between functions. | Owen Anderson | 2007-06-19 | 1 | -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 Anderson | 2007-06-19 | 1 | -273/+451 | |
| | | | | | | centralize a lot of the value numbering information. No functionality change. llvm-svn: 37645 | |||||
* | Cache the results of dependsOnInvoke() | Owen Anderson | 2007-06-18 | 1 | -4/+18 | |
| | | | | llvm-svn: 37622 | |||||
* | Fix indentation. | Owen Anderson | 2007-06-18 | 1 | -6/+6 | |
| | | | | llvm-svn: 37621 | |||||
* | Don't perform an expensive check if it's not necessary. | Owen Anderson | 2007-06-18 | 1 | -2/+12 | |
| | | | | llvm-svn: 37620 | |||||
* | Fix test/Transforms/GVNPRE/2007-06-15-InvokeInst.ll by ignoring all ↵ | Owen Anderson | 2007-06-16 | 1 | -3/+36 | |
| | | | | | | instructions that depend on invokes. llvm-svn: 37610 | |||||
* | Fix test/Transforms/GVNPRE/2007-06-15-Looping.ll | Owen Anderson | 2007-06-15 | 1 | -4/+2 | |
| | | | | llvm-svn: 37595 | |||||
* | Fix test/Transforms/GVNPRE/2007-06-12-PhiTranslate.ll | Owen Anderson | 2007-06-12 | 1 | -38/+39 | |
| | | | | llvm-svn: 37564 | |||||
* | Refactor some code, and fix test/Transforms/GVNPRE/2007-06-12-NoExit.ll by ↵ | Owen Anderson | 2007-06-12 | 1 | -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 Anderson | 2007-06-12 | 1 | -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 Anderson | 2007-06-11 | 1 | -0/+6 | |
| | | | | llvm-svn: 37539 | |||||
* | Perform PRE of comparison operators. | Owen Anderson | 2007-06-09 | 1 | -24/+155 | |
| | | | | llvm-svn: 37536 | |||||
* | Collect statistics from GVN-PRE. | Owen Anderson | 2007-06-08 | 1 | -0/+9 | |
| | | | | llvm-svn: 37530 | |||||
* | Fix typo in a comment. | Owen Anderson | 2007-06-08 | 1 | -1/+1 | |
| | | | | llvm-svn: 37526 | |||||
* | Fix a bug that was causing the elimination phase not to replace values when ↵ | Owen Anderson | 2007-06-08 | 1 | -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 Anderson | 2007-06-08 | 1 | -6/+6 | |
| | | | | llvm-svn: 37513 | |||||
* | Add partial redundancy elimination. | Owen Anderson | 2007-06-08 | 1 | -84/+249 | |
| | | | | llvm-svn: 37510 | |||||
* | Add simple full redundancy elimination. | Owen Anderson | 2007-06-06 | 1 | -12/+38 | |
| | | | | llvm-svn: 37455 | |||||
* | Fix a misunderstanding of the algorithm. Really, we should be tracking values | Owen Anderson | 2007-06-05 | 1 | -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 Anderson | 2007-06-05 | 1 | -3/+6 | |
| | | | | llvm-svn: 37442 | |||||
* | Fix a small bug, some 80 cols violations, and add some more debugging output. | Owen Anderson | 2007-06-05 | 1 | -2/+8 | |
| | | | | llvm-svn: 37436 | |||||
* | Don't use std::set_difference when the two sets are sorted differently. Compute | Owen Anderson | 2007-06-04 | 1 | -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 Anderson | 2007-06-04 | 1 | -26/+44 | |
| | | | | llvm-svn: 37424 | |||||
* | Make phi_translate correct. | Owen Anderson | 2007-06-04 | 1 | -47/+50 | |
| | | | | llvm-svn: 37418 |