From 13b6f22f0473917e11ed650282b9b118edb12b90 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 26 Feb 2003 19:25:04 +0000 Subject: [PATCH] Tweak to work with new AA implementation git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5632 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Analysis/BasicAliasAnalysis.h | 29 ++++++++++++---------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/include/llvm/Analysis/BasicAliasAnalysis.h b/include/llvm/Analysis/BasicAliasAnalysis.h index fc323dd9725..5b6637aa2ba 100644 --- a/include/llvm/Analysis/BasicAliasAnalysis.h +++ b/include/llvm/Analysis/BasicAliasAnalysis.h @@ -12,23 +12,26 @@ #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/Pass.h" +class GetElementPtrInst; + struct BasicAliasAnalysis : public ImmutablePass, public AliasAnalysis { + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AliasAnalysis::getAnalysisUsage(AU); + } + + virtual void initializePass(); + // alias - This is the only method here that does anything interesting... // - Result alias(const Value *V1, const Value *V2); - - /// canCallModify - We are not interprocedural, so we do nothing exciting. - /// - Result canCallModify(const CallInst &CI, const Value *Ptr) { - return MayAlias; - } - - /// canInvokeModify - We are not interprocedural, so we do nothing exciting. - /// - Result canInvokeModify(const InvokeInst &I, const Value *Ptr) { - return MayAlias; // We are not interprocedural - } + AliasResult alias(const Value *V1, unsigned V1Size, + const Value *V2, unsigned V2Size); +private: + // CheckGEPInstructions - Check two GEP instructions of compatible types and + // equal number of arguments. This checks to see if the index expressions + // preclude the pointers from aliasing... + AliasResult CheckGEPInstructions(GetElementPtrInst *GEP1, unsigned G1Size, + GetElementPtrInst *GEP2, unsigned G2Size); }; #endif -- 2.40.0