summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Move NoAA out of BasicAliasAnalysis.cpp into its own file, now thatDan Gohman2010-10-191-81/+8
| | | | | | | it doesn't have a special relationship with BasicAliasAnalysis anymore. llvm-svn: 116876
* Reapply r116831 and r116839, converting AliasAnalysis to useDan Gohman2010-10-191-24/+26
| | | | | | uint64_t, plus fixes for places I missed before. llvm-svn: 116875
* Revert r116831 and r116839, which are breaking selfhost builds.Dan Gohman2010-10-191-26/+24
| | | | llvm-svn: 116858
* Change AliasAnalysis and its clients to use uint64_t instead of unsignedDan Gohman2010-10-191-24/+26
| | | | | | for representing object sizes, for consistency with other parts of LLVM. llvm-svn: 116831
* Get rid of static constructors for pass registration. Instead, every pass ↵Owen Anderson2010-10-191-3/+7
| | | | | | | | | | | | | | | | | exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. llvm-svn: 116820
* Fix BasicAA to pass TBAAInfo through to the chained analysis.Dan Gohman2010-10-181-26/+47
| | | | llvm-svn: 116730
* Make BasicAliasAnalysis a normal AliasAnalysis implementation whichDan Gohman2010-10-181-11/+25
| | | | | | | | | | | | does normal initialization and normal chaining. Change the default AliasAnalysis implementation to NoAlias. Update StandardCompileOpts.h and friends to explicitly request BasicAliasAnalysis. Update tests to explicitly request -basicaa. llvm-svn: 116720
* Now with fewer extraneous semicolons!Owen Anderson2010-10-071-2/+2
| | | | llvm-svn: 115996
* PR7959: Handle negative scales in GEPs correctly in BasicAA for non-64-bitEli Friedman2010-09-151-3/+3
| | | | | | targets. llvm-svn: 114015
* Remove the experimental AliasAnalysis::getDependency interface, whichDan Gohman2010-09-141-55/+34
| | | | | | | | | | | isn't a good level of abstraction for memdep. Instead, generalize AliasAnalysis::alias and related interfaces with a new Location class for describing a memory location. For now, this is the same Pointer and Size as before, plus an additional field for a TBAA tag. Also, introduce a fixed MD_tbaa metadata tag kind. llvm-svn: 113858
* Extend the getDependence query with support for PHI translation.Dan Gohman2010-09-091-1/+8
| | | | llvm-svn: 113521
* Add a new experimental generalized dependence query interface toDan Gohman2010-09-081-0/+20
| | | | | | | | AliasAnalysis, and some code for implementing the new query on top of existing implementations by making standard alias and getModRefInfo queries. llvm-svn: 113329
* refix PR1143 by making basicaa analyze zexts of indices aggresively,Chris Lattner2010-08-181-11/+30
| | | | | | which I broke with a recent patch. llvm-svn: 111452
* GetLinearExpression is only called when TD is non-null, pass as Chris Lattner2010-08-181-4/+4
| | | | | | a reference instead of pointer. llvm-svn: 111445
* rework GEP decomposition to make a new VariableGEPIndex struct instead ofChris Lattner2010-08-181-19/+39
| | | | | | | using a pair. This tidies up the code a bit. While setting things up, add a (currently unused) field to keep track of how the value is extended. llvm-svn: 111444
* move gep decomposition out of ValueTracking into BasicAA. The form ofChris Lattner2010-08-181-34/+229
| | | | | | | | | decomposition that it is doing is very basicaa specific and is only used by basicaa. Now with less tree breakingness. llvm-svn: 111433
* Revert r111375, "move gep decomposition out of ValueTracking into BasicAA. TheDaniel Dunbar2010-08-181-213/+34
| | | | | | form of", it doesn't pass tests. llvm-svn: 111385
* move gep decomposition out of ValueTracking into BasicAA. The form ofChris Lattner2010-08-181-34/+213
| | | | | | | decomposition that it is doing is very basicaa specific and is only used by basicaa. llvm-svn: 111375
* Reapply r110396, with fixes to appease the Linux buildbot gods.Owen Anderson2010-08-061-7/+7
| | | | llvm-svn: 110460
* Move all the logic for function attributes and call attributes out of theDan Gohman2010-08-061-120/+119
| | | | | | | | | | | | | AliasAnalysis base class and into BasicAliasAnalyais. This avoids confusion about where such logic is happening when there are other AliasAnalysis implementations present. Move the logic for translating two-callsite getModRefInfo queries into other AliasAnalysis queries out of BasicAliasAnalysis and into the AliasAnalysis base class, as it is useful for other AliasAnalysis implementations. llvm-svn: 110421
* Fix botched revert.Owen Anderson2010-08-061-4/+4
| | | | llvm-svn: 110416
* Revert r110396 to fix buildbots.Owen Anderson2010-08-061-3/+3
| | | | llvm-svn: 110410
* Fix 80-column violations.Dan Gohman2010-08-051-6/+6
| | | | llvm-svn: 110401
* Don't use PassInfo* as a type identifier for passes. Instead, use the ↵Owen Anderson2010-08-051-7/+7
| | | | | | | | address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
* Implement AccessesArguments checking in the two-callsite formDan Gohman2010-08-051-2/+32
| | | | | | | 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/+6
| | | | | | | | | | 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-2/+2
| | | | llvm-svn: 110293
* The two-callsite form of AliasAnalysis::getModRefInfo is documentedDan Gohman2010-08-041-2/+2
| | | | | | | | | | 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
* Thread const correctness through a bunch of AliasAnalysis interfaces andDan Gohman2010-08-031-9/+15
| | | | | | | | | | | | eliminate several const_casts. Make CallSite implicitly convertible to ImmutableCallSite. Rename the getModRefBehavior for intrinsic IDs to getIntrinsicModRefBehavior to avoid overload ambiguity with CallSite, which happens to be implicitly convertible to bool. llvm-svn: 110155
* The singular of "indices" is "index".Dan Gohman2010-08-031-3/+3
| | | | llvm-svn: 110135
* Delete an unused function.Dan Gohman2010-08-031-5/+0
| | | | llvm-svn: 110134
* Introduce a symbolic constant for ~0u for use with AliasAnalysis.Dan Gohman2010-08-031-7/+8
| | | | llvm-svn: 110091
* Add INSTANTIATE_AG_PASS, which combines RegisterPass<> with ↵Owen Anderson2010-07-211-10/+6
| | | | | | RegisterAnalysisGroup<> for pass registration. llvm-svn: 109058
* Speculatively revert r108813, in an attempt to get the self-host buildbots ↵Owen Anderson2010-07-201-2/+2
| | | | | | | | working again. I don't see why this patch would cause them to fail the way they are, but none of the other intervening patches seem likely either. llvm-svn: 108818
* Reapply r108794, a fix for the failing test from last time.Owen Anderson2010-07-201-2/+2
| | | | llvm-svn: 108813
* Revert r108794, "Separate PassInfo into two classes: a constructor-freeDaniel Dunbar2010-07-201-2/+2
| | | | | | | superclass (StaticPassInfo) and a constructor-ful subclass (PassInfo).", it is breaking teh everything. llvm-svn: 108805
* Separate PassInfo into two classes: a constructor-free superclass ↵Owen Anderson2010-07-201-2/+2
| | | | | | (StaticPassInfo) and a constructor-ful subclass (PassInfo). llvm-svn: 108794
* Minore code simplification.Dan Gohman2010-07-071-17/+15
| | | | llvm-svn: 107777
* Remove interprocedural-basic-aa and associated code. The AliasAnalysisDan Gohman2010-07-071-77/+14
| | | | | | | | | | | 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-011-35/+55
| | | | | | | make it more aggressive in cases where both pointers are known to live in the same function. llvm-svn: 107420
* Fix whitespace style.Dan Gohman2010-06-291-2/+2
| | | | llvm-svn: 107175
* Use a more obvious way to avoid compiling functions which are only used when ↵Benjamin Kramer2010-06-291-3/+2
| | | | | | XDEBUG is enabled. llvm-svn: 107125
* Jump through some silly hoops to make GCC accept that a function may not alwaysChandler Carruth2010-06-291-0/+3
| | | | | | be called. llvm-svn: 107124
* Add an Intraprocedural form of BasicAliasAnalysis, which aims toDan Gohman2010-06-291-28/+110
| | | | | | | 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-9/+29
| | | | | | | code in unreachable blocks, which have have use-def cycles. This fixes PR7514. llvm-svn: 107071
* use ArgOperand accessorsGabor Greif2010-06-231-11/+11
| | | | llvm-svn: 106697
* Revert 101465, it broke internal OpenGL testing.Eric Christopher2010-04-161-11/+11
| | | | | | | Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. llvm-svn: 101579
* reapply r101434Gabor Greif2010-04-161-11/+11
| | | | | | | | | | | | | with a fix for self-hosting 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: 101465
* back out r101423 and r101397, they break llvm-gcc self-host on darwin10Gabor Greif2010-04-161-11/+11
| | | | llvm-svn: 101434
* reapply r101364, which has been backed out in r101368Gabor Greif2010-04-151-11/+11
| | | | | | | | | | | | | 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
OpenPOWER on IntegriCloud