aboutsummaryrefslogtreecommitdiffstats
path: root/test/Analysis
Commit message (Collapse)AuthorAgeFilesLines
...
* refix PR1143 by making basicaa analyze zexts of indices aggresively,Chris Lattner2010-08-181-7/+7
| | | | | | | which I broke with a recent patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111452 91177308-0d34-0410-b5e6-96231b3b80d8
* fix a buggy testChris Lattner2010-08-181-3/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111354 91177308-0d34-0410-b5e6-96231b3b80d8
* fix PR7589: In brief:Chris Lattner2010-08-181-0/+21
| | | | | | | | | | | gep P, (zext x) != gep P, (sext x) DecomposeGEPExpression was getting this wrong, confusing basicaa. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111352 91177308-0d34-0410-b5e6-96231b3b80d8
* filecheckize and detrivialize.Chris Lattner2010-08-181-3/+26
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111350 91177308-0d34-0410-b5e6-96231b3b80d8
* When analyzing loop exit conditions combined with and and or, don'tDan Gohman2010-08-111-2/+40
| | | | | | | | make any assumptions about when the two conditions will agree on when to permit the loop to exit. This fixes PR7845. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110758 91177308-0d34-0410-b5e6-96231b3b80d8
* RegionInfo: Do not assert if a BB is not part of the dominance tree.Tobias Grosser2010-08-101-0/+20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110665 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement a proper getModRefInfo for va_arg.Dan Gohman2010-08-061-0/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110458 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement AccessesArguments checking in the two-callsite formDan Gohman2010-08-051-1/+15
| | | | | | | | of BasicAA::getModRefInfo. This allows BasicAA to say that two memset calls to non-aliasing memory locations don't interfere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110393 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix memdep's code for reasoning about dependences between two calls. A RefDan Gohman2010-08-051-1/+0
| | | | | | | | | | | response from getModRefInfo is not useful here. Instead, check for identical calls only in the NoModRef case. Reapply r110270, and strengthen it to compensate for the memdep changes. When both calls are readonly, there is no dependence between them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110382 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert r110270 for now. It appears to uncover a memdep bug.Dan Gohman2010-08-051-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110293 91177308-0d34-0410-b5e6-96231b3b80d8
* The trouble with testing for "ModRef" and "NoModRef" is thatDan Gohman2010-08-042-85/+85
| | | | | | | | one is a suffix of the other, and FileCheck accepts superstrings. Adjust the output to avoid this problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110280 91177308-0d34-0410-b5e6-96231b3b80d8
* The two-callsite form of AliasAnalysis::getModRefInfo is documentedDan Gohman2010-08-042-4/+16
| | | | | | | | | | | to return Ref if the left callsite only reads memory read or written by the right callsite; fix BasicAliasAnalysis to implement this. Add AliasAnalysisEvaluator support for testing the two-callsite form of getModRefInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110270 91177308-0d34-0410-b5e6-96231b3b80d8
* Add new RegionInfo pass.Tobias Grosser2010-07-2222-0/+886
| | | | | | | | | | The RegionInfo pass detects single entry single exit regions in a function, where a region is defined as any subgraph that is connected to the remaining graph at only two spots. Furthermore an hierarchical region tree is built. Use it by calling "opt -regions analyze" or "opt -view-regions". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109089 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove interprocedural-basic-aa and associated code. The AliasAnalysisDan Gohman2010-07-072-1747/+262
| | | | | | | | | | | | interface needs implementations to be consistent, so any code which wants to support different semantics must use a different interface. It's not currently worthwhile to add a new interface for this new concept. Document that AliasAnalysis doesn't support cross-function queries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107776 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove context sensitivity concerns from interprocedural-basic-aa, andDan Gohman2010-07-012-7/+1739
| | | | | | | | make it more aggressive in cases where both pointers are known to live in the same function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107420 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert the part of r107257 which introduced new logic for usingDan Gohman2010-06-301-3/+4
| | | | | | | | nsw and nuw flags from IR Instructions. On further consideration, this isn't valid. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107298 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a testcase for scev-aa's new capability.Dan Gohman2010-06-301-3/+24
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107258 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a few more interesting testcases.Dan Gohman2010-06-291-0/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107177 91177308-0d34-0410-b5e6-96231b3b80d8
* Add an Intraprocedural form of BasicAliasAnalysis, which aims toDan Gohman2010-06-291-0/+42
| | | | | | | | properly handles instructions and arguments defined in different functions, or across recursive function iterations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107109 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix Value::stripPointerCasts and BasicAA to avoid trouble onDan Gohman2010-06-281-0/+16
| | | | | | | | code in unreachable blocks, which have have use-def cycles. This fixes PR7514. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107071 91177308-0d34-0410-b5e6-96231b3b80d8
* Allow "exhaustive" trip count evaluation on phi nodes with allDan Gohman2010-06-221-0/+19
| | | | | | | constant operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106537 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix ScalarEvolution's "exhaustive" trip count evaluation code to avoidDan Gohman2010-06-191-0/+31
| | | | | | | | | assuming that loops are in canonical form, as ScalarEvolution doesn't depend on LoopSimplify itself. Also, with indirectbr not all loops can be simplified. This fixes PR7416. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106389 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert r106304 (105548 and friends), which are the SCEVComplexityCompareDan Gohman2010-06-181-1/+1
| | | | | | | optimizations. There is still some nondeterminism remaining. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106306 91177308-0d34-0410-b5e6-96231b3b80d8
* Reapply 105540, 105542, and 105548, and revert r105732.Dan Gohman2010-06-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106304 91177308-0d34-0410-b5e6-96231b3b80d8
* Workaround SCEV non-determinism on this test, for now, to get buildbots back toDaniel Dunbar2010-06-091-1/+1
| | | | | | green. Dan, please revert this once the real problem is fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105732 91177308-0d34-0410-b5e6-96231b3b80d8
* Optimize ScalarEvolution's SCEVComplexityCompare predicate: don't goDan Gohman2010-06-071-1/+1
| | | | | | | | | | | | scrounging through SCEVUnknown contents and SCEVNAryExpr operands; instead just do a simple deterministic comparison of the precomputed hash data. Also, since this is more precise, it eliminates the need for the slow N^2 duplicate detection code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105540 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a comment to this test.Dan Gohman2010-04-261-0/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102387 91177308-0d34-0410-b5e6-96231b3b80d8
* ScalarEvolution support for <= and >= loops.Dan Gohman2010-04-244-4/+31
| | | | | | | | Also, generalize ScalarEvolutions's min and max recognition to handle some new forms of min and max that this change makes more common. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102234 91177308-0d34-0410-b5e6-96231b3b80d8
* fix some failures my callgraph dump format change broke.Chris Lattner2010-04-232-3/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102197 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't attempt to analyze values which are obviously undef. This fixes someDan Gohman2010-04-221-0/+39
| | | | | | | assertion failures in extreme cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102042 91177308-0d34-0410-b5e6-96231b3b80d8
* Generalize ScalarEvolution's PHI analysis to handle loops that don'tDan Gohman2010-04-121-0/+29
| | | | | | | | have preheaders or dedicated exit blocks, as clients may not otherwise need to run LoopSimplify. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101030 91177308-0d34-0410-b5e6-96231b3b80d8
* Pointers to zero-sized objects don't point to overlapping objects.Dan Gohman2010-04-081-0/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100789 91177308-0d34-0410-b5e6-96231b3b80d8
* add newlines at the end of files.Chris Lattner2010-04-071-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100705 91177308-0d34-0410-b5e6-96231b3b80d8
* Reapply address space patch after fixing an issue in MemCopyOptimizer.Mon P Wang2010-04-041-2/+2
| | | | | | | | Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert r100191 since it breaks objc in clang Mon P Wang2010-04-021-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
* Reapply address space patch after fixing an issue in MemCopyOptimizer.Mon P Wang2010-04-021-2/+2
| | | | | | | | Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.Bob Wilson2010-03-301-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
* Added support for address spaces and added a isVolatile field to memcpy, ↵Mon P Wang2010-03-301-2/+2
| | | | | | | | | | memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update of langref will occur in a subsequent checkin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid analyzing instructions in blocks not reachable from the entry block.Dan Gohman2010-03-091-0/+13
| | | | | | | They are lots of trouble, and they don't matter. This fixes PR6559. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98103 91177308-0d34-0410-b5e6-96231b3b80d8
* remove andersen's tests.Chris Lattner2010-03-0110-137/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97490 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach ScalarEvolution how to compute a tripcount for a loop withDan Gohman2010-02-191-0/+76
| | | | | | | | | true or false as its exit condition. These are usually eliminated by SimplifyCFG, but the may be left around during a pass which wishes to preserve the CFG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96683 91177308-0d34-0410-b5e6-96231b3b80d8
* -disable-output is no longer needed with -analyze.Dan Gohman2010-01-2658-59/+59
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94574 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix the the ceiling-division used in computing the MaxBECount so that it doesn'tDan Gohman2010-01-262-2/+411
| | | | | | | | | | | | | | have trouble with an intermediate add overflowing. Also, be more conservative about the case where the induction variable in an SLT loop exit can step past the RHS of the SLT and overflow in a single step. Make getSignedRange more aggressive, to recover for some common cases which the above fixes pessimized. This addresses rdar://7561161. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94512 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR6047Tobias Grosser2010-01-164-0/+205
| | | | | | | | Nodes that had children outside of the post dominator tree (infinite loops) where removed from the post dominator tree. This seems to be wrong. Leave them in the tree. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93633 91177308-0d34-0410-b5e6-96231b3b80d8
* Use WriteAsOperand instead of getName() to print loop header names,Dan Gohman2010-01-0918-27/+27
| | | | | | | so that unnamed blocks are handled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93059 91177308-0d34-0410-b5e6-96231b3b80d8
* Delete useless trailing semicolons.Dan Gohman2010-01-051-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92740 91177308-0d34-0410-b5e6-96231b3b80d8
* gvn is optimizing this better now.Chris Lattner2009-12-061-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90696 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a comment about A[i+(j+1)].Dan Gohman2009-12-011-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90185 91177308-0d34-0410-b5e6-96231b3b80d8
* @test9 is a testcase for r89958. Before 89958, we misanalyzed theChris Lattner2009-11-261-1/+39
| | | | | | | | | | | first expression as P+4+4*i which we considered to possibly alias P+4*j. Now we correctly analyze the former one as P+1+4*i. @test10 is a sanity test that verfies that we know that P+4+4*i != P+4*i. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89960 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement PR1143 (at -m64) by making basicaa look through extensions. WeChris Lattner2009-11-261-1/+16
| | | | | | | | previously already handled it at -m32 because there were no i32->i64 extensions for addressing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89959 91177308-0d34-0410-b5e6-96231b3b80d8