From 17a93e2e1bf5ec6593344bf47da2f2c890191523 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 29 Jan 2004 03:32:15 +0000 Subject: [PATCH] Minor bugfixes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11005 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/DataStructure/DataStructure.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp index 983dcf92ec6..9e0a0b9fc3a 100644 --- a/lib/Analysis/DataStructure/DataStructure.cpp +++ b/lib/Analysis/DataStructure/DataStructure.cpp @@ -1176,8 +1176,8 @@ void DSGraph::mergeInGraph(const DSCallSite &CS, Function &F, // Advance the argument iterator to the first pointer argument... while (AI != F.aend() && !isPointerType(AI->getType())) { ++AI; -#ifndef NDEBUG - if (AI == F.aend()) +#ifndef NDEBUG // FIXME: We should merge vararg arguments! + if (AI == F.aend() && !F.getFunctionType()->isVarArg()) std::cerr << "Bad call to Function: " << F.getName() << "\n"; #endif } @@ -1227,8 +1227,8 @@ void DSGraph::mergeInGraph(const DSCallSite &CS, Function &F, // Advance the argument iterator to the first pointer argument... while (AI != F.aend() && !isPointerType(AI->getType())) { ++AI; -#ifndef NDEBUG - if (AI == F.aend()) +#ifndef NDEBUG // FIXME: We should merge varargs arguments!! + if (AI == F.aend() && !F.getFunctionType()->isVarArg()) std::cerr << "Bad call to Function: " << F.getName() << "\n"; #endif } @@ -1490,14 +1490,18 @@ void DSGraph::removeTriviallyDeadNodes() { if (Node->getNumReferrers() == Node->getGlobals().size()) { const std::vector &Globals = Node->getGlobals(); + // Loop through and make sure all of the globals are referring directly + // to the node... + for (unsigned j = 0, e = Globals.size(); j != e; ++j) { + DSNode *N = getNodeForValue(Globals[j]).getNode(); + assert(N == Node && "ScalarMap doesn't match globals list!"); + } + // Make sure NumReferrers still agrees, if so, the node is truly dead. - // Remove the scalarmap entries, which will drop the actual referrer - // count to zero. if (Node->getNumReferrers() == Globals.size()) { for (unsigned j = 0, e = Globals.size(); j != e; ++j) ScalarMap.erase(Globals[j]); - if (Node->hasNoReferrers()) - Node->makeNodeDead(); + Node->makeNodeDead(); } } }