aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2007-07-11Add FastDSE, a new algorithm for doing dead store elimination. This ↵Owen Anderson
algorithm is not as accurate as the current DSE, but it only a linear scan over each block, rather than quadratic. Eventually (once it has been improved somewhat), this will replace the current DSE. NOTE: This has not yet been extensively tested. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38517 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-10Make the pass registration static.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38508 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-10During module cloning copy aliases too. This fixes PR1544Anton Korobeynikov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38505 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-10Update the ValueRanges interface to use value numbers instead of Value*s.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38483 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-10Move some key maps from std::map to DenseMap. This improves the time to ↵Owen Anderson
optimize Anton's testcase from 17.5s to 15.7s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38480 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-10Use a cheaper test, delaying calling find_leader() until we know that it's ↵Owen Anderson
necessary. This improves the time to optimize Anton's testcase from 21.1s to 17.6s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38479 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-09Add an assertion if find_leader fails.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38477 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-09Take advantage of the new fast SmallPtrSet assignment operator when ↵Owen Anderson
propagating AVAIL_OUT sets. This reduces the time to optimize Anton's testcase from 31.2s to 21.s! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38475 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-09Expose struct size threhold to allow users to tweak their own setting.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38472 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-09Fix a comment.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38459 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-09Improve a hotspot that was making build_sets() slower by calling lookup() tooOwen Anderson
often. This improves Anton's testcase from 36s to 32s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38441 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-09Start using a set representation that remembers the set of value numbers ↵Owen Anderson
represented in the set. For the moment, this results in a slight performance decrease, but it lays the groundwork for future improvements. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38439 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-07Fix an error where ANTIC_OUT was ending up with more than one expression ofOwen Anderson
the same value number. This fixes an infinite loop on 444.namd. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37967 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-07Back out Devang's fix for PR1320 because it causes PR1542.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37966 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06These rountines are now available as part of basic block utilities.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37955 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06Request DominanceFrontiner in advance.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37954 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06Preserve various analysis info.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37953 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06Add SplitEdge and SplitBlock utility routines. Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37952 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06Be more aggressive in the heuristic. This mostly exposes more opportunitiesOwen Anderson
for the GVN part of GVNPRE to apply. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37951 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06Achieve what the incorrect test was trying to do by simply requiring that allOwen Anderson
critical edges be split before we begin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37949 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06Remove an incorrect check.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37948 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06Correct a typo.Zhou Sheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37936 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-05Fix a bunch of issues found in a testcase from 400.perlbench.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37929 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-05Break "variable canonicalization" out of InequalityGraph and into its own classNick Lewycky
"ValueNumbering". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37881 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-04Fix another bug, this time in PREing select instructions.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37878 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-04Fix a typo that was killing GVNPRE of select instructions.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37871 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-04Fix an error in phi translation of GEPs that was causing failures.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37868 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-03Add support for performing GVNPRE on GEP instructions.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37862 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-03Add functionality to value number GEP instructions. This also provides the ↵Owen Anderson
infrastructure that will be used for function calls. NOTE: This does not yet do any transformation of GEPs or function calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37860 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-03Make the unary operator case a bit faster, since casts are the only kind of ↵Owen Anderson
unary operation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37857 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-03Add support for performing GVNPRE on cast instructions, and add a testcase ↵Owen Anderson
for this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37856 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-29Preserve DominanceFrontier.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37820 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-29Fix reference to iterator invalidated by an erase operation. UncoveredDavid Greene
by _GLIBCXX_DEBUG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37796 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-29Do not filter loop if candidate branch is in loop header.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37792 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-29Add support for value numbering (but not actually optimizing) cast instructions.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37789 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-29Add a type field to expressions in preparation for performing GVNPRE on casts.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37788 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-28Add support for performing GVNPRE on select instructions. This fixes ↵Owen Anderson
test/Transforms/GVNPRE/select.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37783 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-28- Undo previous check and allow loop switch for condtion that is not insideDevang Patel
loop. - Avoid loop unswich for loop header branch. - While cloning dominators fix typo and handle self dominating blocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37772 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-28Update LoopUnswitch pass to preserve DomiantorTree.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37771 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-28If a condition is not inside a loop then the condition is suitableDevang Patel
to loop unswitch candidate for the loop. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37770 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-28Make many sets a much more reasonable size. This decreases the time to optimizeOwen Anderson
Anton's testcase from 35.5s to 34.7s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37769 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-27Use cached information that has already been computed to make clean() ↵Owen Anderson
simpler and faster. This is a small speedup on most cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37761 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-27Fold a lot of code into two cases: binary instructions and ternary instructions.Owen Anderson
This saves many lines of code duplication. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37759 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-27Fix a bug.Zhou Sheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37751 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-27Add support for performing GVNPRE on the three vector-specific operations.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37745 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-261. Correct some comments and clean up some dead code.Owen Anderson
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37742 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-25fix Transforms/Inline/2007-06-25-WeakInline.ll by not inlining functionsChris Lattner
with weak linkage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37723 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-25Use the built-in postorder iterators rather than computing a postorder walk ↵Owen Anderson
by hand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37721 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-251) Fix an issue with non-deterministic iteration order in phi_translateOwen Anderson
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37714 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-24Fix value ranges.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37713 91177308-0d34-0410-b5e6-96231b3b80d8