Add an Intraprocedural form of BasicAliasAnalysis, which aims to

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
This commit is contained in:
Dan Gohman
2010-06-29 00:50:39 +00:00
parent 4548260ab5
commit 6be2bd516a
5 changed files with 173 additions and 37 deletions

View File

@@ -344,10 +344,10 @@ bool isNoAliasCall(const Value *V);
/// identifiable object. This returns true for:
/// Global Variables and Functions (but not Global Aliases)
/// Allocas and Mallocs
/// ByVal and NoAlias Arguments
/// NoAlias returns
/// ByVal and NoAlias Arguments, if Interprocedural is false
/// NoAlias returns, if Interprocedural is false
///
bool isIdentifiedObject(const Value *V);
bool isIdentifiedObject(const Value *V, bool Interprocedural = false);
} // End llvm namespace

View File

@@ -71,6 +71,14 @@ namespace llvm {
//
ImmutablePass *createBasicAliasAnalysisPass();
//===--------------------------------------------------------------------===//
//
// createInterproceduralBasicAliasAnalysisPass - This pass is similar to
// baiscaa, except that it properly supports queries to values which live
// in different functions.
//
ImmutablePass *createInterproceduralBasicAliasAnalysisPass();
//===--------------------------------------------------------------------===//
//
/// createLibCallAliasAnalysisPass - Create an alias analysis pass that knows