diff options
-rw-r--r-- | include/llvm/Analysis/AliasAnalysis.h | 64 |
1 files changed, 40 insertions, 24 deletions
diff --git a/include/llvm/Analysis/AliasAnalysis.h b/include/llvm/Analysis/AliasAnalysis.h index ad68d48e53..0183b193b9 100644 --- a/include/llvm/Analysis/AliasAnalysis.h +++ b/include/llvm/Analysis/AliasAnalysis.h @@ -222,44 +222,60 @@ public: /// getModRefInfo - Return information about whether or not an instruction may /// read or write memory specified by the pointer operand. An instruction /// that doesn't read or write memory may be trivially LICM'd for example. + ModRefResult getModRefInfo(const Instruction *I, + const Value *P, unsigned Size) { + switch (I->getOpcode()) { + case Instruction::VAArg: return getModRefInfo((const VAArgInst*)I, P,Size); + case Instruction::Load: return getModRefInfo((const LoadInst*)I, P, Size); + case Instruction::Store: return getModRefInfo((const StoreInst*)I, P,Size); + case Instruction::Call: return getModRefInfo((const CallInst*)I, P, Size); + case Instruction::Invoke: return getModRefInfo((const InvokeInst*)I,P,Size); + default: return NoModRef; + } + } /// getModRefInfo (for call sites) - Return whether information about whether /// a particular call site modifies or reads the memory specified by the /// pointer. - /// virtual ModRefResult getModRefInfo(ImmutableCallSite CS, const Value *P, unsigned Size); - /// getModRefInfo - Return information about whether two call sites may refer - /// to the same set of memory locations. See - /// http://llvm.org/docs/AliasAnalysis.html#ModRefInfo - /// for details. - virtual ModRefResult getModRefInfo(ImmutableCallSite CS1, - ImmutableCallSite CS2); - -public: - /// Convenience functions... - ModRefResult getModRefInfo(const LoadInst *L, const Value *P, unsigned Size); - ModRefResult getModRefInfo(const StoreInst *S, const Value *P, unsigned Size); - ModRefResult getModRefInfo(const VAArgInst* I, const Value* P, unsigned Size); + /// getModRefInfo (for calls) - Return whether information about whether + /// a particular call modifies or reads the memory specified by the + /// pointer. ModRefResult getModRefInfo(const CallInst *C, const Value *P, unsigned Size) { return getModRefInfo(ImmutableCallSite(C), P, Size); } + + /// getModRefInfo (for invokes) - Return whether information about whether + /// a particular invoke modifies or reads the memory specified by the + /// pointer. ModRefResult getModRefInfo(const InvokeInst *I, const Value *P, unsigned Size) { return getModRefInfo(ImmutableCallSite(I), P, Size); } - ModRefResult getModRefInfo(const Instruction *I, - const Value *P, unsigned Size) { - switch (I->getOpcode()) { - case Instruction::VAArg: return getModRefInfo((const VAArgInst*)I, P,Size); - case Instruction::Load: return getModRefInfo((const LoadInst*)I, P, Size); - case Instruction::Store: return getModRefInfo((const StoreInst*)I, P,Size); - case Instruction::Call: return getModRefInfo((const CallInst*)I, P, Size); - case Instruction::Invoke: return getModRefInfo((const InvokeInst*)I,P,Size); - default: return NoModRef; - } - } + + /// getModRefInfo (for loads) - Return whether information about whether + /// a particular load modifies or reads the memory specified by the + /// pointer. + ModRefResult getModRefInfo(const LoadInst *L, const Value *P, unsigned Size); + + /// getModRefInfo (for stores) - Return whether information about whether + /// a particular store modifies or reads the memory specified by the + /// pointer. + ModRefResult getModRefInfo(const StoreInst *S, const Value *P, unsigned Size); + + /// getModRefInfo (for va_args) - Return whether information about whether + /// a particular va_arg modifies or reads the memory specified by the + /// pointer. + ModRefResult getModRefInfo(const VAArgInst* I, const Value* P, unsigned Size); + + /// getModRefInfo - Return information about whether two call sites may refer + /// to the same set of memory locations. See + /// http://llvm.org/docs/AliasAnalysis.html#ModRefInfo + /// for details. + virtual ModRefResult getModRefInfo(ImmutableCallSite CS1, + ImmutableCallSite CS2); //===--------------------------------------------------------------------===// /// Higher level methods for querying mod/ref information. |