diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp index 3339d6152f0..686655637be 100644 --- a/lib/Analysis/DataStructure/DataStructure.cpp +++ b/lib/Analysis/DataStructure/DataStructure.cpp @@ -13,6 +13,7 @@ #include "llvm/Analysis/DSGraph.h" #include "llvm/Function.h" +#include "llvm/GlobalVariable.h" #include "llvm/iOther.h" #include "llvm/DerivedTypes.h" #include "llvm/Target/TargetData.h" @@ -1353,7 +1354,9 @@ void DSGraph::markIncompleteNodes(unsigned Flags) { if ((Flags & DSGraph::IgnoreGlobals) == 0) for (DSScalarMap::global_iterator I = ScalarMap.global_begin(), E = ScalarMap.global_end(); I != E; ++I) - markIncompleteNode(ScalarMap[*I].getNode()); + if (GlobalVariable *GV = dyn_cast(*I)) + if (!GV->isConstant()) + markIncompleteNode(ScalarMap[GV].getNode()); } static inline void killIfUselessEdge(DSNodeHandle &Edge) {