summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Moved Inliner.h to include/llvm/Transforms/IPO/InlinerPass.hTanya Lattner2007-06-191-65/+0
| | | | llvm-svn: 37666
* Inliner pass header file was moved.Tanya Lattner2007-06-192-2/+3
| | | | llvm-svn: 37665
* Rename ScalarEvolution::deleteInstructionFromRecords toDan Gohman2007-06-192-5/+5
| | | | | | | | | deleteValueFromRecords and loosen the types to all it to accept Value* instead of just Instruction*, since this is what ScalarEvolution uses internally anyway. This allows more flexibility for future uses. llvm-svn: 37657
* 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
* silence a bogus warning Duraid ran into.Chris Lattner2007-06-191-1/+1
| | | | llvm-svn: 37649
* 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
* Use SCEVConstant::get instead of SCEVUnknown::get to create anDan Gohman2007-06-151-2/+2
| | | | | | integer constant SCEV. llvm-svn: 37596
* Fix test/Transforms/GVNPRE/2007-06-15-Looping.llOwen Anderson2007-06-151-4/+2
| | | | llvm-svn: 37595
* Add a SCEV class and supporting code for sign-extend expressions.Dan Gohman2007-06-152-18/+23
| | | | | | | | | | This created an ambiguity for expandInTy to decide when to use sign-extension or zero-extension, but it turns out that most of its callers don't actually need a type conversion, now that LLVM types don't have explicit signedness. Drop expandInTy in favor of plain expand, and change the few places that actually need a type conversion to do it themselves. llvm-svn: 37591
* Generalize many transforms to work on ~ of vectors in addition to ~ ofChris Lattner2007-06-151-29/+31
| | | | | | | integer ops. This implements Transforms/InstCombine/and-or-not.ll test3/test4, and finishes off PR1510 llvm-svn: 37589
* Implement two xforms:Chris Lattner2007-06-151-6/+26
| | | | | | | | | | | 1. ~(~X | Y) === (X & ~Y) 2. (A|B) & ~(A&B) -> A^B This allows us to transform ~(~(a|b) | (a&b)) -> a^b. This implements PR1510 for scalar values. llvm-svn: 37584
* delete some obviously dead vector operations, which deletes a few thousandChris Lattner2007-06-151-1/+12
| | | | | | operations from Duraids example. llvm-svn: 37582
* 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
* Sink CmpInst's to their uses to reduce register pressure.Dale Johannesen2007-06-121-3/+61
| | | | llvm-svn: 37554
* 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
* Add and use DominatorTreeBase::findNearestCommonDominator().Devang Patel2007-06-111-1/+1
| | | | llvm-svn: 37545
* Simplify.Devang Patel2007-06-111-4/+2
| | | | llvm-svn: 37542
* simplifyDevang Patel2007-06-111-4/+3
| | | | llvm-svn: 37541
* Simplify. Dominator Tree is required so always available.Devang Patel2007-06-111-31/+26
| | | | llvm-svn: 37540
* 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
* Update LoopSimplify to require and preserve DominatorTree only.Devang Patel2007-06-081-32/+26
| | | | | | Now LoopSimplify does not require nor preserve ETForest. llvm-svn: 37512
* Add partial redundancy elimination.Owen Anderson2007-06-081-84/+249
| | | | llvm-svn: 37510
* Do not preserve ETForest.Devang Patel2007-06-081-26/+5
| | | | llvm-svn: 37506
* Do not require ETForest. Now it is unused by LICM.Devang Patel2007-06-071-3/+0
| | | | llvm-svn: 37502
* Do not use ETForest as well as DomiantorTree. DominatorTree is sufficient.Devang Patel2007-06-072-21/+18
| | | | llvm-svn: 37501
* Use DominatorTree instead of ETForest.Devang Patel2007-06-074-18/+20
| | | | | | This allows faster immediate domiantor walk. llvm-svn: 37500
* Use DominatorTree instead of ETForest.Devang Patel2007-06-071-8/+7
| | | | llvm-svn: 37499
* Use DominatorTree instead of ETForest.Devang Patel2007-06-071-23/+25
| | | | llvm-svn: 37498
* Use DominatorTree instead of ETForest.Devang Patel2007-06-071-3/+1
| | | | llvm-svn: 37495
* Use DominatorTree instead of ETForest.Devang Patel2007-06-071-3/+3
| | | | llvm-svn: 37494
* Maintain ETNode as part of DomTreeNode.Devang Patel2007-06-072-2/+2
| | | | | | This adds redundancy for now. llvm-svn: 37492
* Formating fixes.Tanya Lattner2007-06-071-4/+4
| | | | llvm-svn: 37491
* Instruct the inliner to obey the noinline attribute. Add test case.Tanya Lattner2007-06-061-1/+43
| | | | llvm-svn: 37481
OpenPOWER on IntegriCloud