summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
Commit message (Collapse)AuthorAgeFilesLines
...
* Constant folding support for calls to umul.with.overflow(), basically ↵Frits van Bommel2011-03-271-3/+8
| | | | | | identical to the smul.with.overflow() code. llvm-svn: 128379
* Revert r128140 for now.Anders Carlsson2011-03-231-33/+0
| | | | llvm-svn: 128149
* A global variable with internal linkage where all uses are in one function ↵Anders Carlsson2011-03-231-0/+33
| | | | | | and whose address is never taken is a non-escaping local object and can't alias anything else. llvm-svn: 128140
* Fix INT_MIN gotcha pointed out by Eli Friedman.Nick Lewycky2011-03-211-3/+4
| | | | llvm-svn: 128028
* Avoid creating canonical induction variables for non-native types.Andrew Trick2011-03-181-1/+6
| | | | | | | | For example, on 32-bit architecture, don't promote all uses of the IV to 64-bits just because one use is a 64-bit cast. Alternate implementation of the patch by Arnaud de Grandmaison. llvm-svn: 127884
* Added isValidRewrite() to check the result of ScalarEvolutionExpander.Andrew Trick2011-03-171-0/+30
| | | | | | | | | SCEV may generate expressions composed of multiple pointers, which can lead to invalid GEP expansion. Until we can teach SCEV to follow strict pointer rules, make sure no bad GEPs creep into IR. Fixes rdar://problem/9038671. llvm-svn: 127839
* Add comments for the demanglings. Correct mangled form of operator delete!Nick Lewycky2011-03-171-4/+6
| | | | llvm-svn: 127801
* Add C++ global operator {new,new[],delete,delete[]}(unsigned {int,long}) to theNick Lewycky2011-03-151-2/+11
| | | | | | | | | | | | | memory builtins as equivalent to malloc/free. This is different from any attribute we have. For example, you can delete the allocators when their result is unused, but you can't collapse two calls to the same function, even if no global/memory state has changed in between. The noalias return states that the result does not alias any other pointer, but instcombine optimizes malloc() as though the result is non-null for the purpose of eliminating unused pointers. llvm-svn: 127673
* Remove getMinusSCEVForExitTest().Andrew Trick2011-03-151-106/+3
| | | | | | | This function performed acrobatics to prove no-self-wrap, which we now have for free. llvm-svn: 127643
* Propagate SCEV no-wrap flags whenever possible.Andrew Trick2011-03-151-60/+72
| | | | | | This needs review. llvm-svn: 127638
* Negating a recurrence preserves no-self-wrap.Andrew Trick2011-03-141-0/+11
| | | | llvm-svn: 127593
* HowFarToZero can compute a trip count as long as the recurrence has ↵Andrew Trick2011-03-141-16/+20
| | | | | | no-self-wrap. llvm-svn: 127591
* Added SCEV::NoWrapFlags to manage unsigned, signed, and self wrapAndrew Trick2011-03-143-139/+214
| | | | | | | | | properties. Added the self-wrap flag for SCEV::AddRecExpr. A slew of temporary FIXMEs indicate the intention of the no-self-wrap flag without changing behavior in this revision. llvm-svn: 127590
* Teach ComputeMaskedBits about sub nsw.Benjamin Kramer2011-03-121-8/+16
| | | | llvm-svn: 127548
* ComputeMaskedBits: sub falls through to add, and sub doesn't have the same ↵Benjamin Kramer2011-03-111-1/+2
| | | | | | | | overflow semantics as add. Should fix the selfhost failures that started with r127463. llvm-svn: 127465
* Teach ComputeMaskedBits about nsw on add. I don't think there's anything we canNick Lewycky2011-03-111-0/+14
| | | | | | | do with nuw here, but sub and mul should be given similar treatment. Fixes PR9343 #15! llvm-svn: 127463
* Introduce DebugInfoProbe. This is used to monitor how llvm optimizer is ↵Devang Patel2011-03-101-2/+21
| | | | | | | | | | | | treating debugging information. It generates output that lools like 8 times line number info lost by Scalar Replacement of Aggregates (SSAUp) 1 times line number info lost by Simplify well-known library calls 12 times variable info lost by Jump Threading llvm-svn: 127381
* When SCEV can determine the loop test is X < X, set ExactBECount=0.Andrew Trick2011-03-091-1/+17
| | | | | | | | When ExactBECount is a constant, use it for MaxBECount. When MaxBECount cannot be computed, replace it with ExactBECount. Fixes PR9424. llvm-svn: 127342
* whitespaceAndrew Trick2011-03-091-18/+18
| | | | llvm-svn: 127340
* Fix two cases I forgot to update when doing a mental "getSwappedPredicate".Nick Lewycky2011-03-091-2/+2
| | | | | | Thanks Duncan Sands! llvm-svn: 127323
* Add another micro-optimization. Apologies for the lack of refactoring, but INick Lewycky2011-03-091-2/+28
| | | | | | | | | gave up when I realized I couldn't come up with a good name for what the refactored function would be, to describe what it does. This is PR9343 test12, which is test3 with arguments reordered. Whoops! llvm-svn: 127318
* Fix PR9331. Simplified version of a patch by Jakub Staszak.Duncan Sands2011-03-081-0/+4
| | | | llvm-svn: 127243
* Add more analysis of the sign bit of an srem instruction. If the LHS is negativeNick Lewycky2011-03-071-0/+13
| | | | | | | then the result could go either way. If it's provably positive then so is the srem. Fixes PR9343 #7! llvm-svn: 127146
* Thread comparisons over udiv/sdiv/ashr/lshr exact and lshr nuw/nsw wheneverNick Lewycky2011-03-051-1/+33
| | | | | | | | | possible. This goes into instcombine and instsimplify because instsimplify doesn't need to check hasOneUse since it returns (almost exclusively) constants. This fixes PR9343 #4 #5 and #8! llvm-svn: 127064
* When decling to reuse existing expressions that involve casts, ignoreDan Gohman2011-03-041-1/+1
| | | | | | | bitcasts, which are really no-ops here. This fixes slowdowns on MultiSource/Applications/aha and others. llvm-svn: 127031
* Revert broken srem logic from r126991.Nick Lewycky2011-03-041-15/+0
| | | | llvm-svn: 127021
* Fold "icmp pred (srem X, Y), Y" like we do for urem. Handle signed comparisonsNick Lewycky2011-03-041-1/+30
| | | | | | | in the urem case, though not the other way around. This is enough to get #3 from PR9343! llvm-svn: 126991
* Teach instruction simplify to use constant ranges to solve problems of the formNick Lewycky2011-03-041-37/+61
| | | | | | | | | "icmp pred %X, CI" and a number of examples where "%X = binop %Y, CI2". Some of these cases (div and rem) used to make it through opt -O2, but the others are probably now making code elsewhere redundant (probably instcombine). llvm-svn: 126988
* Remove DIFactory. Patch by Devang.Duncan Sands2011-03-021-663/+12
| | | | llvm-svn: 126871
* Don't re-use existing addrec expansions if they contain casts.Dan Gohman2011-03-021-1/+2
| | | | | | This fixes PR9259. llvm-svn: 126812
* Today, the language front ends produces llvm.dbg.* intrinsics, used to ↵Devang Patel2011-03-011-5/+5
| | | | | | | | encode arguments' debug info, in order any way, most of the times. However, if a front end mix-n-matches llvm.dbg.declare and llvm.dbg.value intrinsics to encode debug info for arguments then code generator needs a way to find argument order. Use 8 bits from line number field to keep track of argument ordering while encoding debug info for an argument. That leaves 24 bit for line no, DebugLoc also allocates 24 bit for line numbers. If a function has more than 255 arguments then rest of the arguments will be ordered by llvm.dbg.* intrinsics' ordering in IR. llvm-svn: 126793
* Optimize "icmp pred (urem X, Y), Y" --> true/false depending on pred. There'sNick Lewycky2011-03-011-0/+18
| | | | | | | more work to do here, "icmp ult (urem X, 10), 11" doesn't optimize away yet. Fixes example 3 from PR9343! llvm-svn: 126741
* Unbreak CMake build.Ted Kremenek2011-03-011-5/+4
| | | | llvm-svn: 126717
* Delete the LiveValues pass. I won't get get back to the project itDan Gohman2011-02-282-201/+0
| | | | | | was started for in the foreseeable future. llvm-svn: 126668
* Fix comment.Nick Lewycky2011-02-281-1/+1
| | | | llvm-svn: 126645
* srem doesn't actually have the same resulting sign as its numerator, you couldNick Lewycky2011-02-281-12/+0
| | | | | | | also have a zero when numerator = denominator. Reverts parts of r126635 and r126637. llvm-svn: 126644
* Teach value tracking to make use of flags in more situations.Nick Lewycky2011-02-281-0/+25
| | | | llvm-svn: 126642
* Teach ValueTracking to look at the dividend when determining the sign bit of anNick Lewycky2011-02-281-0/+12
| | | | | | srem instruction. llvm-svn: 126637
* RegionPrinter: Ignore back edges when layouting the graphTobias Grosser2011-02-271-0/+26
| | | | llvm-svn: 126564
* Follow LLVM coding style. Devang Patel2011-02-221-77/+77
| | | | | | clang uses DBuilder, so it requries corresponding change. llvm-svn: 126231
* Move "A | ~(A & ?) -> -1" from InstCombine to InstructionSimplify.Benjamin Kramer2011-02-201-0/+10
| | | | llvm-svn: 126082
* Stores of null pointers should turn into memset, we weren't recognizingChris Lattner2011-02-191-0/+5
| | | | | | them as splat values. llvm-svn: 126041
* Move library stuff out of the toplevel CMakeLists.txt file.Oscar Fuentes2011-02-181-0/+2
| | | | llvm-svn: 125968
* Move DbgInfoPrinter specific utlities inside DbgInfoPrinter.cppDevang Patel2011-02-152-111/+112
| | | | llvm-svn: 125571
* Print function info. Patch by Minjang Kim.Devang Patel2011-02-152-2/+34
| | | | llvm-svn: 125567
* convert ConstantVector::get to use ArrayRef.Chris Lattner2011-02-151-2/+2
| | | | llvm-svn: 125537
* revert my ConstantVector patch, it seems to have made the llvm-gccChris Lattner2011-02-141-2/+2
| | | | | | builders unhappy. llvm-svn: 125504
* Switch ConstantVector::get to use ArrayRef instead of a pointer+sizeChris Lattner2011-02-141-2/+2
| | | | | | idiom. Change various clients to simplify their code. llvm-svn: 125487
* Remove pointless blank line.Duncan Sands2011-02-131-1/+0
| | | | llvm-svn: 125463
* Teach instsimplify that X+Y>=X+Z is the same as Y>=Z if neither side overflows,Duncan Sands2011-02-131-2/+49
| | | | | | | | plus some variations of this. According to my auto-simplifier this occurs a lot but usually in combination with max/min idioms. Because max/min aren't handled yet this unfortunately doesn't have much effect in the testsuite. llvm-svn: 125462
OpenPOWER on IntegriCloud