diff options
| -rw-r--r-- | llvm/lib/Analysis/DataStructure/DataStructureAA.cpp | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp b/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp index 2d62162d1d9..8b606f2aabb 100644 --- a/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp +++ b/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp @@ -12,6 +12,8 @@  //  //===----------------------------------------------------------------------===// +#include "llvm/Constants.h" +#include "llvm/DerivedTypes.h"  #include "llvm/Module.h"  #include "llvm/Analysis/AliasAnalysis.h"  #include "llvm/Analysis/Passes.h" @@ -196,6 +198,14 @@ DSAA::getModRefInfo(CallSite CS, Value *P, unsigned Size) {        Result = ModRefResult(Result & ~Mod);      if (!N->isRead())       // We proved it was not read.        Result = ModRefResult(Result & ~Ref); +  } else { +    if (isa<ConstantPointerNull>(P)) +      Result = NoModRef; +    else +      assert(isa<GlobalVariable>(P) && +    cast<GlobalVariable>(P)->getType()->getElementType()->isFirstClassType() && +             "This isn't a global that DSA inconsiderately dropped " +             "from the graph?");    }    return Result;  } | 

