diff options
Diffstat (limited to 'llvm/lib/Analysis/AliasAnalysis.cpp')
| -rw-r--r-- | llvm/lib/Analysis/AliasAnalysis.cpp | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp index da54c1b3da1..5236435d206 100644 --- a/llvm/lib/Analysis/AliasAnalysis.cpp +++ b/llvm/lib/Analysis/AliasAnalysis.cpp @@ -114,11 +114,13 @@ AliasAnalysis::getModRefInfo(StoreInst *S, Value *P, unsigned Size) {  AliasAnalysis::ModRefResult  AliasAnalysis::getModRefInfo(CallSite CS, Value *P, unsigned Size) {    ModRefResult Mask = ModRef; -  if (Function *F = CS.getCalledFunction()) -    if (onlyReadsMemory(F)) { -      if (doesNotAccessMemory(F)) return NoModRef; +  if (Function *F = CS.getCalledFunction()) { +    ModRefBehavior MRB = getModRefBehavior(F, CallSite()); +    if (MRB == OnlyReadsMemory)        Mask = Ref; -    } +    else if (MRB == DoesNotAccessMemory) +      return NoModRef; +  }    if (!AA) return Mask; | 

