summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* back out r101364, as it trips the linux nightlybot on some clang C++ testsGabor Greif2010-04-151-11/+11
| | | | llvm-svn: 101368
* rotate CallInst operands, i.e. move callee to the backGabor Greif2010-04-151-11/+11
| | | | | | | | | | 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
* Pointers to zero-sized objects don't point to overlapping objects.Dan Gohman2010-04-081-0/+5
| | | | llvm-svn: 100789
* 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
* add some new methods to adjust this pointers. Not used yet.Chris Lattner2010-01-201-0/+20
| | | | llvm-svn: 94013
* move DecomposeGEPExpression out into ValueTracking.cppChris Lattner2009-11-261-158/+1
| | | | llvm-svn: 89956
* teach GetLinearExpression to be a bit more aggressive.Chris Lattner2009-11-261-1/+10
| | | | llvm-svn: 89955
* resolve a fixme. I haven't figured out how to write a testcaseChris Lattner2009-11-261-5/+4
| | | | | | to exercise this though. llvm-svn: 89954
* Teach basicaa that x|c == x+c when the c bits of x are clear. ThisChris Lattner2009-11-261-5/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/+32
| | | | llvm-svn: 89951
* Change the other half of aliasGEP (which handles GEP differencing) to use ↵Chris Lattner2009-11-261-466/+108
| | | | | | 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
* Generalize DecomposeGEPExpression to exactly handle what ↵Chris Lattner2009-11-261-30/+62
| | | | | | Value::getUnderlyingObject does (when TD is around). This allows us to avoid calling DecomposeGEPExpression unless the ultimate alias check we care about passes, speedup up BasicAA a bit. llvm-svn: 89920
* Implement a new DecomposeGEPExpression method, which decomposes a GEP into a ↵Chris Lattner2009-11-261-40/+121
| | | | | | list of scaled offsets. Use this to eliminate some previous ad-hoc code which was subtly broken (it assumed all Constant*'s were non-zero, but strange constant express could be zero). llvm-svn: 89915
* Use GEPOperator more pervasively to simplify code.Chris Lattner2009-11-261-29/+27
| | | | llvm-svn: 89914
* fix comment, thanks all :)Chris Lattner2009-11-231-1/+3
| | | | llvm-svn: 89666
* use the new isNoAlias method to simplify some code, only do an escaping ↵Chris Lattner2009-11-231-10/+13
| | | | | | | | check if we have a non-constant pointer. Constant pointers can't be local. llvm-svn: 89665
* whitespace cleanup, tidyingChris Lattner2009-11-231-16/+17
| | | | llvm-svn: 89664
* speed up BasicAA a bit by implementing a long-standing TODO.Chris Lattner2009-11-231-9/+20
| | | | llvm-svn: 89663
* add fixme for dubious code. Duncan, what do you think?Chris Lattner2009-11-221-0/+1
| | | | llvm-svn: 89602
* remove a silly condition that doesn't make a lot of sense anymore.Chris Lattner2009-11-221-5/+0
| | | | llvm-svn: 89601
* reduce indentation, no functionality change.Chris Lattner2009-11-221-85/+91
| | | | llvm-svn: 89600
* Remove the AliasAnalysis::getMustAliases method, which is dead.Chris Lattner2009-11-221-6/+0
| | | | | | | | The hasNoModRefInfoForCalls isn't worth it as a filter because basicaa provides m/r info and everything chains to it, so remove it. llvm-svn: 89599
* Extend CaptureTracking to indicate when a value is never stored, evenDan Gohman2009-11-191-10/+19
| | | | | | | | if it is not ultimately captured. Teach BasicAliasAnalysis that a local object address which does not escape and is never stored does not alias with a value resulting from a load. llvm-svn: 89398
* Teach BasicAA that a constant expression can't alias memory provably notNick Lewycky2009-11-141-1/+6
| | | | | | allocated until runtime (such as an alloca). Patch by Hans Wennborg! llvm-svn: 88760
* Default-addressspace null pointers don't alias anything. This allowsDan Gohman2009-11-091-0/+9
| | | | | | GVN to be more aggressive. Patch by Hans Wennborg! (with a comment added by me) llvm-svn: 86582
* remove a bunch of extraneous LLVMContext argumentsChris Lattner2009-11-061-22/+18
| | | | | | from various APIs, addressing PR5325. llvm-svn: 86231
* Rename MallocFreeHelper as MemoryBuiltinsVictor Hernandez2009-10-271-1/+1
| | | | llvm-svn: 85286
* Rename MallocHelper as MallocFreeHelper, since it now also identifies calls ↵Victor Hernandez2009-10-261-1/+1
| | | | | | to free() llvm-svn: 85181
* Teach BasicAA how to analyze Select instructions, and make it moreDan Gohman2009-10-261-2/+76
| | | | | | aggressive on PHI instructions. llvm-svn: 85158
* Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky2009-10-251-1/+0
| | | | | | VISIBILITY_HIDDEN removal. llvm-svn: 85043
* Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.Nick Lewycky2009-10-251-2/+2
| | | | | | | Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
* Remove AllocationInst. Since MallocInst went away, AllocaInst is the only ↵Victor Hernandez2009-10-231-4/+4
| | | | | | subclass of AllocationInst, so it no longer is necessary. llvm-svn: 84969
* inline isGEP away.Chris Lattner2009-10-171-10/+6
| | | | llvm-svn: 84373
* When checking aliases between phi sources and V2, we know the sources are ↵Evan Cheng2009-10-161-3/+3
| | | | | | not themselves phi nodes. However, V2 may be. Call aliasCheck with V2 first to potentially eliminate a std::swap call. llvm-svn: 84226
* Add missing break statements! Thanks to Duncan Sands for pointing this out!Nick Lewycky2009-10-151-0/+2
| | | | llvm-svn: 84191
* Teach basicaa about memcpy/memmove/memset. The length argument can be used toNick Lewycky2009-10-151-0/+22
| | | | | | improve alias results if constant, and the source pointer can't be modified. llvm-svn: 84175
* Teach BasicAA to use the size parameter of the memory use marker intrinsics.Nick Lewycky2009-10-151-18/+29
| | | | llvm-svn: 84174
* Take advantage of TargetData when available; we know that the atomic intrinsicsNick Lewycky2009-10-151-18/+23
| | | | | | only dereference the element they point to directly with no pointer arithmetic. llvm-svn: 84159
* Clear VisitedPHIs after use.Evan Cheng2009-10-141-1/+3
| | | | llvm-svn: 84080
* Another BasicAA fix. If a value does not alias a GEP's base pointer, then itEvan Cheng2009-10-141-39/+46
| | | | | | | | 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
* More code clean up based on patch feedback.Evan Cheng2009-10-141-12/+16
| | | | llvm-svn: 84074
* Change VisitedPHIs into an instance variable that's freed by each alias() call.Evan Cheng2009-10-141-22/+22
| | | | llvm-svn: 84072
* Teach basic AA about PHI nodes. If all operands of a phi NoAlias another ↵Evan Cheng2009-10-131-12/+69
| | | | | | value than it's safe to declare the PHI NoAlias the value. Ditto for MustAlias. llvm-svn: 84038
* Refactor some code. No functionality changes.Evan Cheng2009-10-131-105/+119
| | | | llvm-svn: 84000
* Teach BasicAA a little something about the atomic intrinsics: they can onlyNick Lewycky2009-10-131-0/+21
| | | | | | modify through the pointer they're given. llvm-svn: 83959
* Enhance analysis passes so that they apply the same analysis to malloc calls ↵Victor Hernandez2009-09-181-3/+11
| | | | | | | | as to MallocInst. Reviewed by Eli Friedman. llvm-svn: 82281
* Use stripPointerCasts instead of doing the same manually.Dan Gohman2009-08-271-14/+3
| | | | llvm-svn: 80267
* Push LLVMContexts through the IntegerType APIs.Owen Anderson2009-08-131-11/+14
| | | | llvm-svn: 78948
* Move a few more APIs back to 2.5 forms. The only remaining ones left to ↵Owen Anderson2009-07-311-9/+7
| | | | | | | | change back are metadata related, which I'm waiting on to avoid conflicting with Devang. llvm-svn: 77721
* Move ConstantExpr to 2.5 API.Owen Anderson2009-07-291-4/+4
| | | | llvm-svn: 77494
OpenPOWER on IntegriCloud