summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis/BasicAA
Commit message (Collapse)AuthorAgeFilesLines
...
* fix a buggy testChris Lattner2010-08-181-3/+3
| | | | llvm-svn: 111354
* 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. llvm-svn: 111352
* filecheckize and detrivialize.Chris Lattner2010-08-181-3/+26
| | | | llvm-svn: 111350
* Implement a proper getModRefInfo for va_arg.Dan Gohman2010-08-061-0/+11
| | | | llvm-svn: 110458
* 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. llvm-svn: 110393
* 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. llvm-svn: 110382
* Revert r110270 for now. It appears to uncover a memdep bug.Dan Gohman2010-08-051-0/+1
| | | | llvm-svn: 110293
* 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. llvm-svn: 110280
* 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. llvm-svn: 110270
* 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. llvm-svn: 107776
* 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. llvm-svn: 107420
* Add a few more interesting testcases.Dan Gohman2010-06-291-0/+21
| | | | llvm-svn: 107177
* 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. llvm-svn: 107109
* 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. llvm-svn: 107071
* Pointers to zero-sized objects don't point to overlapping objects.Dan Gohman2010-04-081-0/+10
| | | | llvm-svn: 100789
* add newlines at the end of files.Chris Lattner2010-04-071-1/+1
| | | | llvm-svn: 100705
* 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) llvm-svn: 100304
* Revert r100191 since it breaks objc in clang Mon P Wang2010-04-021-2/+2
| | | | llvm-svn: 100199
* 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) llvm-svn: 100191
* Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.Bob Wilson2010-03-301-2/+2
| | | | llvm-svn: 99948
* 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. llvm-svn: 99928
* Delete useless trailing semicolons.Dan Gohman2010-01-051-2/+2
| | | | llvm-svn: 92740
* gvn is optimizing this better now.Chris Lattner2009-12-061-2/+2
| | | | llvm-svn: 90696
* @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. llvm-svn: 89960
* 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. llvm-svn: 89959
* teach GetLinearExpression to be a bit more aggressive.Chris Lattner2009-11-261-0/+15
| | | | llvm-svn: 89955
* Teach basicaa that x|c == x+c when the c bits of x are clear. ThisChris Lattner2009-11-261-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | allows us to compile the example in readme.txt into: LBB1_1: ## %bb movl 4(%rdx,%rax), %ecx movl %ecx, %esi imull (%rdx,%rax), %esi imull %esi, %ecx movl %esi, 8(%rdx,%rax) imull %ecx, %esi movl %ecx, 12(%rdx,%rax) movl %esi, 16(%rdx,%rax) imull %ecx, %esi movl %esi, 20(%rdx,%rax) addq $16, %rax cmpq $4000, %rax jne LBB1_1 instead of: LBB1_1: movl (%rdx,%rax), %ecx imull 4(%rdx,%rax), %ecx movl %ecx, 8(%rdx,%rax) imull 4(%rdx,%rax), %ecx movl %ecx, 12(%rdx,%rax) imull 8(%rdx,%rax), %ecx movl %ecx, 16(%rdx,%rax) imull 12(%rdx,%rax), %ecx movl %ecx, 20(%rdx,%rax) addq $16, %rax cmpq $4000, %rax jne LBB1_1 GCC (4.2) doesn't seem to be able to eliminate the loads in this testcase either, it generates: L2: movl (%rdx), %eax imull 4(%rdx), %eax movl %eax, 8(%rdx) imull 4(%rdx), %eax movl %eax, 12(%rdx) imull 8(%rdx), %eax movl %eax, 16(%rdx) imull 12(%rdx), %eax movl %eax, 20(%rdx) addl $4, %ecx addq $16, %rdx cmpl $1002, %ecx jne L2 llvm-svn: 89952
* teach basicaa that A[i] != A[i+1].Chris Lattner2009-11-261-0/+16
| | | | llvm-svn: 89951
* rename testChris Lattner2009-11-261-0/+0
| | | | llvm-svn: 89950
* Change the other half of aliasGEP (which handles GEP differencing) to use ↵Chris Lattner2009-11-261-2/+59
| | | | | | DecomposeGEPExpression. This dramatically simplifies and shrinks the code by eliminating the horrible CheckGEPInstructions method, fixes a miscompilation (@test3) and makes the code more aggressive. In particular, we now handle the @test4 case, which is reduced from the SmallPtrSet constructor. Missing this caused us to emit a variable length memset instead of a fixed size one. llvm-svn: 89922
* add a new random feature testChris Lattner2009-11-261-1/+17
| | | | llvm-svn: 89921
* remove a silly condition that doesn't make a lot of sense anymore.Chris Lattner2009-11-221-0/+17
| | | | llvm-svn: 89601
* Make opt default to not adding a target data string and update tests that ↵Kenneth Uildriks2009-11-036-1/+7
| | | | | | depend on target data to supply it within the test llvm-svn: 85900
* Teach BasicAA how to analyze Select instructions, and make it moreDan Gohman2009-10-261-0/+73
| | | | | | aggressive on PHI instructions. llvm-svn: 85158
* fix testChris Lattner2009-10-181-1/+1
| | | | llvm-svn: 84405
* tighten up test3, add test3a for the converse Chris Lattner2009-10-181-3/+22
| | | | | | transform, which isn't happening yet. llvm-svn: 84402
* tighten test2, add a test that it doesn't get transformed in the invalid ↵Chris Lattner2009-10-181-1/+12
| | | | | | edge case. llvm-svn: 84401
* Merge tests into modref.ll. Also add a test for r84174 at Chris' behest!Nick Lewycky2009-10-183-31/+41
| | | | llvm-svn: 84400
* Add a couple new testcases.Nick Lewycky2009-10-182-0/+30
| | | | llvm-svn: 84385
* replace a useless test with a useful oneChris Lattner2009-10-171-13/+19
| | | | llvm-svn: 84383
* Make use of the result of the loads even though that means adding -instcombine.Nick Lewycky2009-10-141-5/+5
| | | | llvm-svn: 84125
* Another BasicAA fix. If a value does not alias a GEP's base pointer, then itEvan Cheng2009-10-141-0/+30
| | | | | | | | cannot alias the GEP. GEP pointer alias rule states this clearly: A pointer value formed from a getelementptr instruction is associated with the addresses associated with the first operand of the getelementptr. llvm-svn: 84079
* Replace test with a simpler hand crafted one.Evan Cheng2009-10-141-76/+19
| | | | llvm-svn: 84069
* Teach basic AA about PHI nodes. If all operands of a phi NoAlias another ↵Evan Cheng2009-10-131-0/+86
| | | | | | value than it's safe to declare the PHI NoAlias the value. Ditto for MustAlias. llvm-svn: 84038
* don't use dead loads as tests.Chris Lattner2009-10-131-3/+4
| | | | llvm-svn: 83985
* Teach BasicAA a little something about the atomic intrinsics: they can onlyNick Lewycky2009-10-131-0/+16
| | | | | | modify through the pointer they're given. llvm-svn: 83959
* Eliminate more redundant llvm-as calls.Dan Gohman2009-09-111-1/+1
| | | | llvm-svn: 81540
* Change tests from "opt %s" to "opt < %s" so that opt doesn't see theDan Gohman2009-09-1137-40/+40
| | | | | | | | input filename so that opt doesn't print the input filename in the output so that grep lines in the tests don't unintentionally match strings in the input filename. llvm-svn: 81537
* Eliminate more uses of llvm-as and llvm-dis.Dan Gohman2009-09-092-4/+4
| | | | llvm-svn: 81293
* Convert a few more opt | llvm-dis to opt -S.Dan Gohman2009-09-081-2/+2
| | | | llvm-svn: 81261
OpenPOWER on IntegriCloud