summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
Commit message (Collapse)AuthorAgeFilesLines
* back out r101423 and r101397, they break llvm-gcc self-host on darwin10Gabor Greif2010-04-166-27/+27
| | | | llvm-svn: 101434
* reapply r101364, which has been backed out in r101368Gabor Greif2010-04-156-27/+27
| | | | | | | | | | | | | with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101397
* Fix a bunch of namespace polution.Dan Gohman2010-04-152-2/+6
| | | | llvm-svn: 101376
* Make getPredecessorWithUniqueSuccessorForBB return the unique successorDan Gohman2010-04-151-12/+10
| | | | | | in addition to the predecessor. llvm-svn: 101374
* back out r101364, as it trips the linux nightlybot on some clang C++ testsGabor Greif2010-04-156-27/+27
| | | | llvm-svn: 101368
* rotate CallInst operands, i.e. move callee to the backGabor Greif2010-04-156-27/+27
| | | | | | | | | | of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101364
* Constify GetConstantStringInfo.Dan Gohman2010-04-141-12/+13
| | | | llvm-svn: 101298
* performance: cache the dereferenced use_iteratorGabor Greif2010-04-141-7/+8
| | | | llvm-svn: 101265
* Add a comment.Dan Gohman2010-04-141-0/+2
| | | | llvm-svn: 101248
* Teach ScalarEvolution to simplify smax and umax when it can proveDan Gohman2010-04-131-2/+14
| | | | | | that one operand is always greater than another. llvm-svn: 101142
* Minor code micro-optimizations.Dan Gohman2010-04-131-7/+7
| | | | llvm-svn: 101141
* Micro-optimize a few hot spots.Dan Gohman2010-04-121-10/+11
| | | | llvm-svn: 101086
* Add fast paths to ScalarEvolution::getSizeOf and getOffsetOf, asDan Gohman2010-04-121-0/+14
| | | | | | | they're used a lot by getNodeForGEP, which can be called a lot. This speeds up -iv-users by around 15% on several testcases. llvm-svn: 101083
* Remove unneeded debug in PostDominator runOnFunction()Tobias Grosser2010-04-121-1/+0
| | | | | | | | The information is already available with "opt -analyze". The DominatorTree does also not have this in its runOnFunction. So they behave now more consistent. llvm-svn: 101038
* Remove dead code in the dotty dominance tree printer.Tobias Grosser2010-04-121-25/+0
| | | | | | | This template is not needed anymore as it was replaced by the DOTGraphTraitsViewer. llvm-svn: 101036
* Generalize ScalarEvolution's PHI analysis to handle loops that don'tDan Gohman2010-04-121-14/+26
| | | | | | | have preheaders or dedicated exit blocks, as clients may not otherwise need to run LoopSimplify. llvm-svn: 101030
* Rewrite the overflow checking in the get{Signed,Unsigned}Range code forDan Gohman2010-04-121-10/+34
| | | | | | | | | AddRecs so that it checks for overflow in the computation that it is performing, rather than just checking hasNo{Signed,Unsigned}Wrap, since those flags are for a different computation. This fixes a bug that impacts an upcoming change. llvm-svn: 101028
* Minor code simplification.Dan Gohman2010-04-121-1/+1
| | | | llvm-svn: 101009
* Fix indentation.Dan Gohman2010-04-111-1/+1
| | | | llvm-svn: 101001
* Enhance ScalarEvolution::isKnownPredicate with support forDan Gohman2010-04-111-8/+33
| | | | | | loop conditions which are invariants. llvm-svn: 100995
* Minor code simplification.Dan Gohman2010-04-111-2/+1
| | | | llvm-svn: 100994
* When creating a ConstantRange for [n,UINT_MAX], special case n == 0, becauseDan Gohman2010-04-111-3/+4
| | | | | | ConstantRange(0, 0) creates an empty range rather than a full one. llvm-svn: 100993
* Add a cast to void to show that the return value is beingDan Gohman2010-04-111-1/+1
| | | | | | intentionally ignored. llvm-svn: 100984
* Delete a dead check.Dan Gohman2010-04-111-1/+0
| | | | llvm-svn: 100983
* Delete dead code.Dan Gohman2010-04-111-26/+0
| | | | llvm-svn: 100981
* Rename isLoopGuardedByCond to isLoopEntryGuardedByCond, to emphasiseDan Gohman2010-04-112-16/+16
| | | | | | | that it's only testing for the entry condition, not full loop-invariant conditions. llvm-svn: 100979
* When emitting code for an add, don't force a SCEVUnknown wrapper aroundDan Gohman2010-04-091-3/+4
| | | | | | | a hoisted intermediate result if the intermediate result isn't an Instruction. llvm-svn: 100884
* Add a comment.Dan Gohman2010-04-091-1/+2
| | | | llvm-svn: 100874
* Add several more lint checks.Dan Gohman2010-04-091-21/+68
| | | | llvm-svn: 100841
* Fix a bug in IVUsers which was permitting non-affine addrecs toDan Gohman2010-04-091-2/+2
| | | | | | be sent to LSR, which it isn't prepared to handle. llvm-svn: 100839
* Add a few more lint checks.Dan Gohman2010-04-081-0/+40
| | | | llvm-svn: 100825
* Add variants of ult, ule, etc. which take a uint64_t RHS, for convenience.Dan Gohman2010-04-081-1/+1
| | | | llvm-svn: 100824
* Update CMake build.Ted Kremenek2010-04-081-0/+1
| | | | llvm-svn: 100802
* Add a -lint pass which checks for common sources of undefined or likelyDan Gohman2010-04-081-0/+368
| | | | | | unintended behavior. llvm-svn: 100798
* Pointers to zero-sized objects don't point to overlapping objects.Dan Gohman2010-04-081-0/+5
| | | | llvm-svn: 100789
* clean up algorithm and remove operand order assumptionsGabor Greif2010-04-081-9/+24
| | | | llvm-svn: 100780
* Revert this change from a while ago; ScalarEvolution shouldn't analyzeDan Gohman2010-04-081-2/+0
| | | | | | | undef as 0, since it can't force other analyses to intepret the undef in the same way. llvm-svn: 100749
* Update cmake build.Benjamin Kramer2010-04-071-0/+1
| | | | llvm-svn: 100713
* Generalize IVUsers to track arbitrary expressions rather than expressionsDan Gohman2010-04-073-167/+242
| | | | | | | | | | | | | | | explicitly split into stride-and-offset pairs. Also, add the ability to track multiple post-increment loops on the same expression. This refines the concept of "normalizing" SCEV expressions used for to post-increment uses, and introduces a dedicated utility routine for normalizing and denormalizing expressions. This fixes the expansion of expressions which are post-increment users of more than one loop at a time. More broadly, this takes LSR another step closer to being able to reason about more than one loop at a time. llvm-svn: 100699
* Add a const qualifier.Dan Gohman2010-04-061-1/+1
| | | | llvm-svn: 100515
* Ok, third time's the charm. No changes from last time except the CMakeDavid Greene2010-04-022-0/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | source addition. Apparently the buildbots were wrong about failures. --- Add some switches helpful for debugging: -print-before=<Pass Name> Dump IR before running pass <Pass Name>. -print-before-all Dump IR before running each pass. -print-after-all Dump IR after running each pass. These are helpful when tracking down a miscompilation. It is easy to get IR dumps and do diffs on them, etc. To make this work well, add a new getPrinterPass API to Pass so that each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass suitable for dumping out the kind of object the Pass works on. llvm-svn: 100249
* DebugInfoFinder::processModule was foiling my plot byChris Lattner2010-04-021-5/+20
| | | | | | | | | materializing an MDNode for every debugloc. don't do that! :) "clang -g -S t.c" really no longer makes mdnodes for location tuples now. llvm-svn: 100224
* Switch the code generator (except the JIT) onto the new DebugLocChris Lattner2010-04-021-18/+0
| | | | | | | | | | | | | | | representation. This eliminates the 'DILocation' MDNodes for file/line/col tuples from -O0 -g codegen. This remove the old DebugLoc class, making it a typedef for DebugLoc, I'll rename NewDebugLoc next. I didn't update the JIT to use the new apis, so it will continue to work, but be as slow as before. Someone should eventually do this or, better yet, rip out the JIT debug info stuff and build the JIT on top of MC. llvm-svn: 100209
* Revert 100204. It broke a bunch of tests and apparently changed what passes ↵Evan Cheng2010-04-022-75/+0
| | | | | | are run during codegen. llvm-svn: 100207
* Let's try this again. Re-apply 100143 including an apparent missingDavid Greene2010-04-022-0/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | <string> include. For some reason the buildbot choked on this while my builds did not. It's probably due to a difference in system headers. --- Add some switches helpful for debugging: -print-before=<Pass Name> Dump IR before running pass <Pass Name>. -print-before-all Dump IR before running each pass. -print-after-all Dump IR after running each pass. These are helpful when tracking down a miscompilation. It is easy to get IR dumps and do diffs on them, etc. To make this work well, add a new getPrinterPass API to Pass so that each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass suitable for dumping out the kind of object the Pass works on. llvm-svn: 100204
* Revert r100143.Eric Christopher2010-04-012-75/+0
| | | | llvm-svn: 100146
* Add some switches helpful for debugging:David Greene2010-04-012-0/+75
| | | | | | | | | | | | | | | | | | | | | | | -print-before=<Pass Name> Dump IR before running pass <Pass Name>. -print-before-all Dump IR before running each pass. -print-after-all Dump IR after running each pass. These are helpful when tracking down a miscompilation. It is easy to get IR dumps and do diffs on them, etc. To make this work well, add a new getPrinterPass API to Pass so that each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass suitable for dumping out the kind of object the Pass works on. llvm-svn: 100143
* s/getNameStr/getName/Benjamin Kramer2010-03-311-3/+3
| | | | llvm-svn: 100011
* microoptimize this hot method, also making it more Chris Lattner2010-03-311-3/+2
| | | | | | consistent with other similar ones. llvm-svn: 99997
* reapply my timer rewrite with a change for PassManager to store Chris Lattner2010-03-302-13/+16
| | | | | | timers by pointer instead of by-value. llvm-svn: 99871
OpenPOWER on IntegriCloud