diff --git a/lib/Analysis/DataStructure/DataStructureAA.cpp b/lib/Analysis/DataStructure/DataStructureAA.cpp index 2d62162d1d9..8b606f2aabb 100644 --- a/lib/Analysis/DataStructure/DataStructureAA.cpp +++ b/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(P)) + Result = NoModRef; + else + assert(isa(P) && + cast(P)->getType()->getElementType()->isFirstClassType() && + "This isn't a global that DSA inconsiderately dropped " + "from the graph?"); } return Result; }