summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils
Commit message (Collapse)AuthorAgeFilesLines
* Fix comment.Devang Patel2007-09-171-1/+1
| | | | llvm-svn: 42048
* Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfoChris Lattner2007-09-171-7/+11
| | | | | | | Add a new DenseMapInfo::isEqual method to allow clients to redefine the equality predicate used when probing the hash table. llvm-svn: 42042
* Insert cloned loop basic blocks before original loop header.Devang Patel2007-09-041-1/+3
| | | | llvm-svn: 41713
* Update GEP constructors to use an iterator interface to fixDavid Greene2007-09-042-16/+21
| | | | | | GLIBCXX_DEBUG issues. llvm-svn: 41697
* Silence warning while compiling with gcc 4.2Anton Korobeynikov2007-09-021-1/+2
| | | | llvm-svn: 41676
* Update InvokeInst to work like CallInstDavid Greene2007-08-271-1/+1
| | | | llvm-svn: 41506
* Don't promote volatile loads/stores. This is needed (for example) to handle ↵Anton Korobeynikov2007-08-261-3/+6
| | | | | | | | setjmp/longjmp properly. This fixes PR1520. llvm-svn: 41461
* Use SmallVector instead of std::vector.Devang Patel2007-08-212-8/+6
| | | | llvm-svn: 41207
* When one branch of condition is eliminated then head of the otherDevang Patel2007-08-171-1/+2
| | | | | | branch is not necessary immediate dominators of merge blcok in all cases. llvm-svn: 41144
* Break infinite loop.Devang Patel2007-08-141-15/+17
| | | | llvm-svn: 41091
* If NewBB dominates DestBB then DestBB is not part of NewBB's dominance frontier.Devang Patel2007-08-131-1/+5
| | | | llvm-svn: 41051
* Add utility to clone loops.Devang Patel2007-08-101-0/+149
| | | | llvm-svn: 40997
* remove some dead linesChris Lattner2007-08-061-2/+0
| | | | llvm-svn: 40859
* rewrite the code used to construct pruned SSA form with the IDF method.Chris Lattner2007-08-041-82/+114
| | | | | | | | | | | | | | | | In the old way, we computed and inserted phi nodes for the whole IDF of the definitions of the alloca, then computed which ones were dead and removed them. In the new method, we first compute the region where the value is live, and use that information to only insert phi nodes that are live. This eliminates the need to compute liveness later, and stops the algorithm from inserting a bunch of phis which it then later removes. This speeds up the testcase in PR1432 from 2.00s to 0.15s (14x) in a release build and 6.84s->0.50s (14x) in a debug build. llvm-svn: 40825
* Factor out a whole bunch of code into it's own method.Chris Lattner2007-08-041-65/+82
| | | | llvm-svn: 40824
* Use getNumPreds(BB) instead of computing them manually. This is a very small butChris Lattner2007-08-041-4/+4
| | | | | | measurable speedup. llvm-svn: 40823
* Change the rename pass to be "tail recursive", only adding N-1 successorsChris Lattner2007-08-041-21/+35
| | | | | | | to the worklist, and handling the last one with a 'tail call'. This speeds up PR1432 from 2.0578s to 2.0012s (2.8%) llvm-svn: 40822
* cache computation of #preds for a BB. This speeds upChris Lattner2007-08-041-3/+14
| | | | | | mem2reg from 2.0742->2.0522s on PR1432. llvm-svn: 40821
* reserve operand space for phi nodes when we insert them.Chris Lattner2007-08-041-0/+1
| | | | llvm-svn: 40820
* use continue to avoid nesting, no functionality change.Chris Lattner2007-08-041-14/+15
| | | | llvm-svn: 40819
* Promoting allocas with the 'single store' fastpath is Chris Lattner2007-08-041-10/+9
| | | | | | | faster than with the 'local to a block' fastpath. This speeds up PR1432 from 2.1232 to 2.0686s (2.6%) llvm-svn: 40818
* When PromoteLocallyUsedAllocas promoted allocas, it didn't rememberChris Lattner2007-08-041-2/+13
| | | | | | | to increment NumLocalPromoted, and didn't actually delete the dead alloca, leading to an extra iteration of mem2reg. llvm-svn: 40817
* std::map -> DenseMapChris Lattner2007-08-041-3/+3
| | | | llvm-svn: 40816
* fix a logic bug where we wouldn't promote single store allocas if the Chris Lattner2007-08-041-2/+2
| | | | | | | | | stored value was a non-instruction value. Doh. This increase the # single store allocas from 8982 to 9026, and speeds up mem2reg on the testcase in PR1432 from 2.17 to 2.13s. llvm-svn: 40813
* When we do the single-store optimization, delete both the storeChris Lattner2007-08-041-2/+8
| | | | | | | | and the alloca so they don't get reprocessed. This speeds up PR1432 from 2.20s to 2.17s. llvm-svn: 40812
* Three improvements:Chris Lattner2007-08-041-6/+16
| | | | | | | | | | | | | 1. Check for revisiting a block before checking domination, which is faster. 2. If the stored value isn't an instruction, we don't have to check for domination. 3. If we have a value used in the same block more than once, make sure to remove the block from the UsingBlocks vector. Not doing so forces us to go through the slow path for the alloca. The combination of these improvements increases the number of allocas on the fastpath from 8935 to 8982 on PR1432. This speeds it up from 2.90s to 2.20s (31%) llvm-svn: 40811
* switch from using a std::set to using a SmallPtrSet. This speeds up theChris Lattner2007-08-041-3/+3
| | | | | | testcase in PR1432 from 6.33s to 2.90s (2.22x) llvm-svn: 40810
* In mem2reg, when handling the single-store case, make sure to removeChris Lattner2007-08-041-8/+10
| | | | | | | | | | a using block from the list if we handle it. Not doing this caused us to not be able to promote (with the fast path) allocas which have uses (whoops). This increases the # allocas hitting this fastpath from 4042 to 8935 on the testcase in PR1432, speeding up mem2reg by 2.6x llvm-svn: 40809
* split rewriting of single-store allocas into its ownChris Lattner2007-08-041-39/+57
| | | | | | method. llvm-svn: 40806
* refactor some code to shrink PromoteMem2Reg::run a bitChris Lattner2007-08-041-63/+96
| | | | llvm-svn: 40805
* add a typedef, no other change.Chris Lattner2007-08-041-7/+8
| | | | llvm-svn: 40804
* avoid an unneeded vector copy. This speeds up mem2reg on the testcase Chris Lattner2007-08-041-1/+9
| | | | | | in PR1432 by 6% llvm-svn: 40803
* make RenamePassWorkList a local var instead of an ivar.Chris Lattner2007-08-041-8/+8
| | | | llvm-svn: 40802
* More explicit keywords.Dan Gohman2007-08-013-4/+4
| | | | llvm-svn: 40673
* New CallInst interface to address GLIBCXX_DEBUG errors caused byDavid Greene2007-08-013-6/+6
| | | | | | | | indexing an empty std::vector. Updates to all clients. llvm-svn: 40660
* LCSSA preserves dom info.Devang Patel2007-07-301-0/+8
| | | | llvm-svn: 40604
* Use SmallPtrSet.Devang Patel2007-07-272-3/+2
| | | | llvm-svn: 40560
* Move the GET_SIDE_EFFECT_INFO logic from isInstructionTriviallyDeadDan Gohman2007-07-261-7/+0
| | | | | | | to Instruction::mayWriteToMemory, fixing a FIXME, and helping various places that call mayWriteToMemory directly. llvm-svn: 40533
* Add BasicInliner interface. Devang Patel2007-07-252-0/+412
| | | | | | | This interface allows clients to inline bunch of functions with module level call graph information.:wq llvm-svn: 40486
* Verify loop info.Devang Patel2007-07-191-0/+10
| | | | llvm-svn: 40062
* After a basic block is split into two parts,Devang Patel2007-07-191-2/+15
| | | | | | | | second part dominates all the blocks dominated by original basic block. And first part dominates second part. llvm-svn: 40035
* Now this temp. fix is not required.Devang Patel2007-07-191-4/+0
| | | | llvm-svn: 40034
* Return Undef if the block has no dominator. This was required to allowReid Spencer2007-07-161-0/+4
| | | | | | | | llvm-gcc build to succeed. Without this change it fails in libstdc++ compilation. This causes no regressions in dejagnu tests. However, someone who knows this code better might want to review it. llvm-svn: 39924
* Fix comments about vectors to use the current wording.Dan Gohman2007-07-161-2/+2
| | | | llvm-svn: 39921
* Make LCSSA a loop pass.Devang Patel2007-07-131-21/+11
| | | | llvm-svn: 39844
* Adding ability to demote phi to stack. Tanya Lattner2007-07-111-0/+38
| | | | llvm-svn: 39744
* During module cloning copy aliases too. This fixes PR1544Anton Korobeynikov2007-07-101-0/+15
| | | | llvm-svn: 38505
* Add SplitEdge and SplitBlock utility routines. Devang Patel2007-07-061-0/+61
| | | | llvm-svn: 37952
* Fix reference to iterator invalidated by an erase operation. UncoveredDavid Greene2007-06-291-3/+4
| | | | | | by _GLIBCXX_DEBUG. llvm-svn: 37796
* Move code to update dominator information after basic block is splitDevang Patel2007-06-212-202/+22
| | | | | | from LoopSimplify.cpp to Dominator.cpp llvm-svn: 37689
OpenPOWER on IntegriCloud