forked from OSchip/llvm-project
Fix a problem where we not marking incoming arguments to functions with
external linkage as incomplete. llvm-svn: 20927
This commit is contained in:
parent
db45f7d763
commit
2e1971c19d
|
@ -1657,7 +1657,8 @@ void DSGraph::markIncompleteNodes(unsigned Flags) {
|
|||
for (ReturnNodesTy::iterator FI = ReturnNodes.begin(), E =ReturnNodes.end();
|
||||
FI != E; ++FI) {
|
||||
Function &F = *FI->first;
|
||||
for (Function::arg_iterator I = F.arg_begin(), E = F.arg_end(); I != E; ++I)
|
||||
for (Function::arg_iterator I = F.arg_begin(), E = F.arg_end();
|
||||
I != E; ++I)
|
||||
if (isPointerType(I->getType()))
|
||||
markIncompleteNode(getNodeForValue(I).getNode());
|
||||
markIncompleteNode(FI->second.getNode());
|
||||
|
|
|
@ -167,14 +167,22 @@ bool Steens::runOnModule(Module &M) {
|
|||
}
|
||||
}
|
||||
|
||||
// Remove our knowledge of what the return values of the functions are.
|
||||
ResultGraph->getReturnNodes().clear();
|
||||
// Remove our knowledge of what the return values of the functions are, except
|
||||
// for functions that are externally visible from this module (e.g. main). We
|
||||
// keep these functions so that their arguments are marked incomplete.
|
||||
for (DSGraph::ReturnNodesTy::iterator I =
|
||||
ResultGraph->getReturnNodes().begin(),
|
||||
E = ResultGraph->getReturnNodes().end(); I != E; )
|
||||
if (I->first->hasInternalLinkage())
|
||||
ResultGraph->getReturnNodes().erase(I++);
|
||||
else
|
||||
++I;
|
||||
|
||||
// Update the "incomplete" markers on the nodes, ignoring unknownness due to
|
||||
// incoming arguments...
|
||||
ResultGraph->maskIncompleteMarkers();
|
||||
ResultGraph->markIncompleteNodes(DSGraph::IgnoreFormalArgs |
|
||||
DSGraph::IgnoreGlobals);
|
||||
ResultGraph->markIncompleteNodes(DSGraph::IgnoreGlobals |
|
||||
DSGraph::MarkFormalArgs);
|
||||
|
||||
// Remove any nodes that are dead after all of the merging we have done...
|
||||
// FIXME: We should be able to disable the globals graph for steens!
|
||||
|
|
Loading…
Reference in New Issue