summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/LoopSimplify.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989Nick Lewycky2008-04-251-10/+7
| | | | | | r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123. llvm-svn: 50265
* Move SplitBlockPredecessors out of loopsimplify into BasicBlockUtils.hChris Lattner2008-04-211-107/+14
| | | | | | | | | as a global helper function. At the same type, switch it from taking a vector of predecessors to an arbitrary sequential input. This allows us to switch LoopSimplify to use a SmallVector for various temporary vectors that it passed into SplitBlockPredecessors. llvm-svn: 50020
* Move domtree/frontier updating earlier, allowing us to use it to update phi Chris Lattner2008-04-211-31/+18
| | | | | | nodes, removing a hack. llvm-svn: 50019
* Factor dominator tree and frontier updating into SplitBlockPredecessorsChris Lattner2008-04-211-18/+14
| | | | | | instead of doing it after every call. llvm-svn: 50018
* simplify code, fit in 80 cols.Chris Lattner2008-04-211-65/+67
| | | | llvm-svn: 50015
* API changes for class Use size reduction, wave 1.Gabor Greif2008-04-061-7/+7
| | | | | | | | Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. llvm-svn: 49277
* Update the block cloner which fixes bugpoint on code using unwind_to (phew!)Nick Lewycky2008-03-091-7/+13
| | | | | | and also update the cloning interface's major user, the loop optimizations. llvm-svn: 48088
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Make LoopInfoBase more generic, in preparation for having MachineLoopInfo. ↵Owen Anderson2007-11-271-4/+4
| | | | | | This involves a small interface change. llvm-svn: 44348
* Fix PR1752 and LoopSimplify/2007-10-28-InvokeCrash.ll: terminators Chris Lattner2007-10-291-4/+6
| | | | | | can have uses too. Wouldn't it be nice if invoke didn't exist? :) llvm-svn: 43426
* Move Split<...>() into DomTreeBase. This should make the #include's of ↵Owen Anderson2007-10-181-1/+0
| | | | | | | | | | DominatorInternals.h in CodeExtractor and LoopSimplify unnecessary. Hartmut, could you confirm that this fixes the issues you were seeing? llvm-svn: 43115
* Fixed linker errors (unresolved externals: split<>(...)) when compiling with ↵Hartmut Kaiser2007-10-171-0/+1
| | | | | | VC++. Please review. llvm-svn: 43081
* Use SmallVector instead of std::vector.Devang Patel2007-08-211-1/+1
| | | | llvm-svn: 41207
* remove some dead linesChris Lattner2007-08-061-2/+0
| | | | llvm-svn: 40859
* Verify loop info.Devang Patel2007-07-191-0/+10
| | | | llvm-svn: 40062
* 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-211-189/+20
| | | | | | from LoopSimplify.cpp to Dominator.cpp llvm-svn: 37689
* 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
* 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
* s/DominatorTree::createNewNode/DominatorTree::addNewBlock/gDevang Patel2007-06-041-2/+1
| | | | llvm-svn: 37415
* s/llvm::DominatorTreeBase::DomTreeNode/llvm::DomTreeNode/gDevang Patel2007-06-041-3/+3
| | | | llvm-svn: 37407
* s/DominatorTreeBase::Node/DominatorTreeBase:DomTreeNode/gDevang Patel2007-06-031-3/+3
| | | | llvm-svn: 37403
* Fix typo in comment.Nick Lewycky2007-05-061-1/+1
| | | | llvm-svn: 36873
* Drop 'const'Devang Patel2007-05-031-2/+2
| | | | llvm-svn: 36662
* Use 'static const char' instead of 'static const int'.Devang Patel2007-05-021-2/+2
| | | | | | | Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
* Do not use typeinfo to identify pass in pass manager.Devang Patel2007-05-011-0/+4
| | | | llvm-svn: 36632
* Avoid recursion.Devang Patel2007-04-201-6/+13
| | | | llvm-svn: 36272
* Remove ImmediateDominator analysis. The same information can be obtained ↵Owen Anderson2007-04-151-26/+0
| | | | | | | | | | from DomTree. A lot of code for constructing ImmediateDominator is now folded into DomTree construction. This is part of the ongoing work for PR217. llvm-svn: 36063
* Re-constify things that don't break the build. Last patch in thisOwen Anderson2007-04-091-2/+4
| | | | | | series, I promise. llvm-svn: 35848
* Unconst-ify stuff that broke the build.Owen Anderson2007-04-091-1/+1
| | | | llvm-svn: 35843
* Const-ify some parameters, and some cosmetic cleanups. No functionalityOwen Anderson2007-04-091-3/+4
| | | | | | change. llvm-svn: 35842
* Tabs -> SpacesOwen Anderson2007-04-091-36/+36
| | | | llvm-svn: 35841
* Improve some _slow_ behavior introduced in my patches the last few days.Owen Anderson2007-04-091-42/+42
| | | | llvm-svn: 35839
* Cleanup some from my DomSet-removal changes. Add a newOwen Anderson2007-04-091-4/+4
| | | | | | | isReachableFromEntry test to ETForest to factor a common test out of code. llvm-svn: 35786
* Remove DominatorSet usage from LoopSimplify. Patch from Owen Anderson.Nick Lewycky2007-04-081-89/+54
| | | | llvm-svn: 35757
* Add DomSet back, and revert the changes to LoopSimplify. Apparently theOwen Anderson2007-04-071-48/+85
| | | | | | | ETForest updating mechanisms don't work as I thought they did. These changes will be reapplied once the issue is worked out. llvm-svn: 35741
* Completely purge DomSet from LoopSimplify. This is part of theOwen Anderson2007-04-071-82/+46
| | | | | | continuing work on PR1171. llvm-svn: 35730
* Expunge a bunch of uses of DomSet from LoopSimplify. Many more remain.Owen Anderson2007-04-071-3/+2
| | | | | | This is the beginning of work for PR1171. llvm-svn: 35720
* LoopSimplify::FindPHIToPartitionLoops()Devang Patel2007-03-201-4/+6
| | | | | | Use ETForest instead of DominatorSet. llvm-svn: 35221
* switch more statistics over to STATISTIC, eliminating static ctors. Also,Chris Lattner2006-12-191-5/+4
| | | | | | delete some dead ones. llvm-svn: 32694
* Detemplatize the Statistic class. The only type it is instantiated withChris Lattner2006-12-061-2/+2
| | | | | | is 'unsigned'. llvm-svn: 32279
* For PR786:Reid Spencer2006-11-021-1/+0
| | | | | | | | | | Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. llvm-svn: 31380
* Be far more careful when splitting a loop header, either to form a preheaderChris Lattner2006-09-231-1/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | or when splitting loops with a common header into multiple loops. In particular the old code would always insert the preheader before the old loop header. This is disasterous in cases where the loop hasn't been rotated. For example, it can produce code like: .. outside the loop... jmp LBB1_2 #bb13.outer LBB1_1: #bb1 movsd 8(%esp,%esi,8), %xmm1 mulsd (%edi), %xmm1 addsd %xmm0, %xmm1 addl $24, %edi incl %esi jmp LBB1_3 #bb13 LBB1_2: #bb13.outer leal (%edx,%eax,8), %edi pxor %xmm1, %xmm1 xorl %esi, %esi LBB1_3: #bb13 movapd %xmm1, %xmm0 cmpl $4, %esi jl LBB1_1 #bb1 Note that the loop body is actually LBB1_1 + LBB1_3, which means that the loop now contains an uncond branch WITHIN it to jump around the inserted loop header (LBB1_2). Doh. This patch changes the preheader insertion code to insert it in the right spot, producing this code: ... outside the loop, fall into the header ... LBB1_1: #bb13.outer leal (%edx,%eax,8), %esi pxor %xmm0, %xmm0 xorl %edi, %edi jmp LBB1_3 #bb13 LBB1_2: #bb1 movsd 8(%esp,%edi,8), %xmm0 mulsd (%esi), %xmm0 addsd %xmm1, %xmm0 addl $24, %esi incl %edi LBB1_3: #bb13 movapd %xmm0, %xmm1 cmpl $4, %edi jl LBB1_2 #bb1 Totally crazy, no branch in the loop! :) llvm-svn: 30587
* Teach UpdateDomInfoForRevectoredPreds to handle revectored preds that are notChris Lattner2006-09-231-91/+49
| | | | | | | | reachable, making it general purpose enough for use by InsertPreheaderForLoop. Eliminate custom dominfo updating code in InsertPreheaderForLoop, using UpdateDomInfoForRevectoredPreds instead. llvm-svn: 30586
* eliminate RegisterOpt. It does the same thing as RegisterPass.Chris Lattner2006-08-271-1/+1
| | | | llvm-svn: 29925
* s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|Chris Lattner2006-08-271-1/+1
| | | | llvm-svn: 29911
* Don't attempt to split subloops out of a loop with a huge number of backedges.Chris Lattner2006-08-121-8/+19
| | | | | | | | | Not only will this take huge amounts of compile time, the resultant loop nests won't be useful for optimization. This reduces loopsimplify time on Transforms/LoopSimplify/2006-08-11-LoopSimplifyLongTime.ll from ~32s to ~0.4s with a debug build of llvm on a 2.7Ghz G5. llvm-svn: 29647
OpenPOWER on IntegriCloud