summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/LICM.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* use moveBefore instead of remove+insert, it avoids some Chris Lattner2010-08-291-9/+3
| | | | | | | symtab manipulation, so its faster (in addition to being more elegant) llvm-svn: 112450
* revert 112448 for now.Chris Lattner2010-08-291-5/+6
| | | | llvm-svn: 112449
* optimize LICM::hoist to use moveBefore. Correct its updatingChris Lattner2010-08-291-6/+5
| | | | | | | of AST to remove the hoisted instruction from the AST, since it is no longer in the loop. llvm-svn: 112448
* fix some bugs (found by inspection) where LICM would not updateChris Lattner2010-08-291-1/+3
| | | | | | | | | | LICM correctly. When sinking an instruction, it should not add entries for the sunk instruction to the AST, it should remove the entry for the sunk instruction. The blocks being sunk to are not in the loop, so their instructions shouldn't be in the AST (yet)! llvm-svn: 112447
* rework the ownership of subloop alias information: instead ofChris Lattner2010-08-291-16/+25
| | | | | | | | | | keeping them around until the pass is destroyed, keep them around a) just when useful (not for outer loops) and b) destroy them right after we use them. This should reduce memory use and fixes potential bugs where a loop is deleted and another loop gets allocated to the same address. llvm-svn: 112446
* licm preserves the cfg, it doesn't have to explicitly say itChris Lattner2010-08-291-1/+1
| | | | | | preserves domfrontier. It does preserve AA though. llvm-svn: 112419
* now that it doesn't use the PromoteMemToReg function, LICM doesn'tChris Lattner2010-08-291-4/+1
| | | | | | | require DomFrontier. Dropping this doesn't actually save any runs of the pass though. llvm-svn: 112418
* completely rewrite the memory promotion algorithm in LICM.Chris Lattner2010-08-291-200/+215
| | | | | | | Among other things, this uses SSAUpdater instead of PromoteMemToReg. llvm-svn: 112417
* use getUniqueExitBlocks instead of a manual set.Chris Lattner2010-08-291-10/+2
| | | | llvm-svn: 112412
* reimplement LICM::sink to use SSAUpdater instead of PromoteMemToReg.Chris Lattner2010-08-291-71/+40
| | | | | | This leads to much simpler code. llvm-svn: 112410
* reduce indentation in LICM::sink by using early exits, useChris Lattner2010-08-291-89/+92
| | | | | | | getUniqueExitBlocks instead of getExitBlocks and a manual set to eliminate dupes. llvm-svn: 112405
* modernize this pass a bit: use efficient set/map and reduce indentation.Chris Lattner2010-08-291-45/+48
| | | | llvm-svn: 112404
* Reapply r110396, with fixes to appease the Linux buildbot gods.Owen Anderson2010-08-061-1/+1
| | | | llvm-svn: 110460
* Revert r110396 to fix buildbots.Owen Anderson2010-08-061-1/+1
| | | | llvm-svn: 110410
* Don't use PassInfo* as a type identifier for passes. Instead, use the ↵Owen Anderson2010-08-051-1/+1
| | | | | | | | address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
* Add missing newline to debug statement.Nick Lewycky2010-07-301-1/+1
| | | | llvm-svn: 109886
* Fix batch of converting RegisterPass<> to INTIALIZE_PASS().Owen Anderson2010-07-211-1/+1
| | | | llvm-svn: 109045
* Reorder the contents of various getAnalysisUsage functions, eliminatingDan Gohman2010-07-161-2/+2
| | | | | | a redundant loopsimplify run from the default -O2 sequence. llvm-svn: 108539
* performance: cache the dereferenced use_iteratorGabor Greif2010-04-141-3/+5
| | | | llvm-svn: 101250
* There are two ways of checking for a given type, for example isa<PointerType>(T)Duncan Sands2010-02-161-2/+2
| | | | | | | and T->isPointerTy(). Convert most instances of the first form to the second form. Requested by Chris. llvm-svn: 96344
* Change errs() to dbgs().David Greene2010-01-051-3/+3
| | | | llvm-svn: 92619
* Remove dead debug info intrinsics.Devang Patel2010-01-051-4/+0
| | | | | | | | | | Intrinsic::dbg_stoppoint Intrinsic::dbg_region_start Intrinsic::dbg_region_end Intrinsic::dbg_func_start AutoUpgrade simply ignores these intrinsics now. llvm-svn: 92557
* Add Loop contains utility methods for testing whether a loopDan Gohman2009-12-181-2/+2
| | | | | | | | contains another loop, or an instruction. The loop form is substantially more efficient on large loops than the typical code it replaces. llvm-svn: 91654
* Make sure the immediate dominator isn't NULL through iterationsEric Christopher2009-12-101-5/+6
| | | | | | | of the loop. We could get to this condition via indirect branches. llvm-svn: 91009
* Pull LLVMContext out of PromoteMemToReg.Nick Lewycky2009-11-231-2/+2
| | | | llvm-svn: 89645
* Enable hoisting of loads from constant memory by default. In cases whereDan Gohman2009-11-191-11/+1
| | | | | | | | they are lowered to instruction sequences more complex than a simple load, such that CodeGen cannot rematerialize them, a reload from a spill slot is likely to be cheaper than the complex sequence. llvm-svn: 89374
* Update various Loop optimization passes to cope with the possibility thatDan Gohman2009-11-051-4/+5
| | | | | | LoopSimplify form may not be available. llvm-svn: 86175
* Use isVoidTy()Devang Patel2009-10-141-3/+3
| | | | llvm-svn: 84118
* Check void type before using RAUWd.Devang Patel2009-10-131-2/+8
| | | | llvm-svn: 84049
* Do not check use_empty() before replaceAllUsesWith(). This gives ↵Devang Patel2009-10-131-4/+4
| | | | | | ValueHandles a chance to get properly updated. llvm-svn: 84033
* Make licm debug message readable.Evan Cheng2009-10-121-1/+2
| | | | llvm-svn: 83908
* Remove CleanupDbgInfo, instcombine does this and its not worth duplicating itTorok Edwin2009-10-111-35/+0
| | | | | | here. llvm-svn: 83789
* LICM shouldn't sink/delete debug information. Fix this and add a testcase.Torok Edwin2009-10-111-1/+39
| | | | | | | For now the metadata of sinked/hoisted instructions is still wrong, but that'll be fixed when instructions will have debug metadata directly attached. llvm-svn: 83786
* Grab an LLVM Context from an instruction that exists rather than oneDan Gohman2009-09-271-1/+1
| | | | | | that is deleted in some situations. This fixes a use-after-free. llvm-svn: 82903
* Instruction::clone does not need to take an LLVMContext&. Remove that andNick Lewycky2009-09-271-5/+2
| | | | | | update all the callers. llvm-svn: 82889
* Re-apply r80926, with fixes: keep the domtree informed of new blocksDan Gohman2009-09-081-0/+1
| | | | | | | | | | | | | | | that get created during loop unswitching, and fix SplitBlockPredecessors' LCSSA updating code to create new PHIs instead of trying to just move existing ones. Also, optimize Loop::verifyLoop, since it gets called a lot. Use searches on a sorted list of blocks instead of calling the "contains" function, as is done in other places in the Loop class, since "contains" does a linear search. Also, don't call verifyLoop from LoopSimplify or LCSSA, as the PassManager is already calling verifyLoop as part of LoopInfo's verifyAnalysis. llvm-svn: 81221
* Revert r80926. It causes loop unswitch assertion and slow down some JIT ↵Evan Cheng2009-09-061-1/+0
| | | | | | tests significantly. llvm-svn: 81101
* Add a verifyAnalysis to LoopInfo, LoopSimplify, and LCSSA form that verifyDan Gohman2009-09-031-0/+1
| | | | | | | | | that these passes are properly preserved. Fix several transformation passes that claimed to preserve LoopSimplify form but weren't. llvm-svn: 80926
* eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861Chris Lattner2009-09-021-2/+1
| | | | llvm-svn: 80766
* eliminate the "Value" printing methods that print to a std::ostream.Chris Lattner2009-08-231-2/+2
| | | | | | This required converting a bunch of stuff off DOUT and other cleanups. llvm-svn: 79819
* Push LLVMContexts through the IntegerType APIs.Owen Anderson2009-08-131-1/+1
| | | | llvm-svn: 78948
* Move more code back to 2.5 APIs.Owen Anderson2009-07-301-2/+2
| | | | llvm-svn: 77635
* Make AliasAnalysis and related classes useDan Gohman2009-07-251-1/+1
| | | | | | getAnalysisIfAvailable<TargetData>(). llvm-svn: 77028
* More migration to raw_ostream, the water has dried up around the iostream hole.Daniel Dunbar2009-07-251-1/+2
| | | | | | | | | | - Some clients which used DOUT have moved to DEBUG. We are deprecating the "magic" DOUT behavior which avoided calling printing functions when the statement was disabled. In addition to being unnecessary magic, it had the downside of leaving code in -Asserts builds, and of hiding potentially unnecessary computations. llvm-svn: 77019
* Get rid of the Pass+Context magic.Owen Anderson2009-07-221-4/+6
| | | | llvm-svn: 76702
* Replace isTrapping with a new, similar method called Eli Friedman2009-07-171-7/+2
| | | | | | | | | | isSafeToSpeculativelyExecute. The new method is a bit closer to what the callers actually care about in that it rejects more things callers don't want. It also adds more precise handling for integer division, and unifies code for analyzing the legality of a speculative load. llvm-svn: 76150
* Revert yesterday's change by removing the LLVMContext parameter to ↵Owen Anderson2009-07-151-3/+2
| | | | | | AllocaInst and MallocInst. llvm-svn: 75863
* Move EVER MORE stuff over to LLVMContext.Owen Anderson2009-07-141-2/+3
| | | | llvm-svn: 75703
* This started as a small change, I swear. Unfortunately, lots of things call ↵Owen Anderson2009-07-091-1/+1
| | | | | | the [I|F]CmpInst constructors. Who knew!? llvm-svn: 75200
* More LLVMContext-ification.Owen Anderson2009-07-051-2/+2
| | | | llvm-svn: 74807
OpenPOWER on IntegriCloud