diff options
author | Dan Gohman <gohman@apple.com> | 2010-09-08 01:32:20 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-09-08 01:32:20 +0000 |
commit | 64d842ec726ffba3229360822782a7f4704cb7a2 (patch) | |
tree | b6fd0b7678cdc5ac57c18a43d823135bbc9bfc2c /llvm/lib/Analysis/BasicAliasAnalysis.cpp | |
parent | 5d06922c3667ddad1cefcf7d8ae9a2aad185f519 (diff) | |
download | bcm5719-llvm-64d842ec726ffba3229360822782a7f4704cb7a2.tar.gz bcm5719-llvm-64d842ec726ffba3229360822782a7f4704cb7a2.zip |
Add a new experimental generalized dependence query interface to
AliasAnalysis, and some code for implementing the new query on top of
existing implementations by making standard alias and getModRefInfo
queries.
llvm-svn: 113329
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/BasicAliasAnalysis.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp index 113c72b94da..597e34b55eb 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp @@ -171,6 +171,13 @@ namespace { return ModRef; } + virtual DependenceResult getDependence(const Instruction *First, + DependenceQueryFlags FirstFlags, + const Instruction *Second, + DependenceQueryFlags SecondFlags) { + return Unknown; + } + virtual void deleteValue(Value *V) {} virtual void copyValue(Value *From, Value *To) {} @@ -523,6 +530,11 @@ namespace { /// For use when the call site is not known. virtual ModRefBehavior getModRefBehavior(const Function *F); + virtual DependenceResult getDependence(const Instruction *First, + DependenceQueryFlags FirstFlags, + const Instruction *Second, + DependenceQueryFlags SecondFlags); + /// getAdjustedAnalysisPointer - This method is used when a pass implements /// an analysis interface through multiple inheritance. If needed, it /// should override this to adjust the this pointer as needed for the @@ -734,6 +746,14 @@ BasicAliasAnalysis::getModRefInfo(ImmutableCallSite CS, return AliasAnalysis::getModRefInfo(CS, P, Size); } +AliasAnalysis::DependenceResult +BasicAliasAnalysis::getDependence(const Instruction *First, + DependenceQueryFlags FirstFlags, + const Instruction *Second, + DependenceQueryFlags SecondFlags) { + // We don't have anything special to say yet. + return getDependenceViaModRefInfo(First, FirstFlags, Second, SecondFlags); +} /// aliasGEP - Provide a bunch of ad-hoc rules to disambiguate a GEP instruction /// against another pointer. We know that V1 is a GEP, but we don't know |