regardless of whether or not the client things we should mark globals incomplete,
ALWAYS mark them incomplete if they are external!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20586 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp
index 9e97b8a..212e118 100644
--- a/lib/Analysis/DataStructure/DataStructure.cpp
+++ b/lib/Analysis/DataStructure/DataStructure.cpp
@@ -1498,13 +1498,13 @@
E = AuxFunctionCalls.end(); I != E; ++I)
markIncomplete(*I);
- // Mark all global nodes as incomplete...
- if ((Flags & DSGraph::IgnoreGlobals) == 0)
- for (DSScalarMap::global_iterator I = ScalarMap.global_begin(),
- E = ScalarMap.global_end(); I != E; ++I)
- if (GlobalVariable *GV = dyn_cast<GlobalVariable>(*I))
- if (!GV->isConstant() || !GV->hasInitializer())
- markIncompleteNode(ScalarMap[GV].getNode());
+ // Mark all global nodes as incomplete.
+ for (DSScalarMap::global_iterator I = ScalarMap.global_begin(),
+ E = ScalarMap.global_end(); I != E; ++I)
+ if (GlobalVariable *GV = dyn_cast<GlobalVariable>(*I))
+ if (!GV->hasInitializer() || // Always mark external globals incomp.
+ (!GV->isConstant() && (Flags & DSGraph::IgnoreGlobals) == 0))
+ markIncompleteNode(ScalarMap[GV].getNode());
}
static inline void killIfUselessEdge(DSNodeHandle &Edge) {