]> granicus.if.org Git - llvm/commitdiff
Fix a problem Sumant was running into
authorChris Lattner <sabre@nondot.org>
Thu, 6 Feb 2003 22:03:46 +0000 (22:03 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 6 Feb 2003 22:03:46 +0000 (22:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5499 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/PoolAllocate.cpp

index 894dbf315c3d9ddadf0ffdd6d4399ccd37f4ca1f..b2efc12de2768b37a6f437e53780a9abedfb7631 100644 (file)
@@ -46,7 +46,7 @@ bool PoolAllocate::run(Module &M) {
   std::map<Function*, Function*> FuncMap;
 
   // Loop over only the function initially in the program, don't traverse newly
-  // added ones.  If the function uses memory, make it's clone.
+  // added ones.  If the function uses memory, make its clone.
   Module::iterator LastOrigFunction = --M.end();
   for (Module::iterator I = M.begin(); ; ++I) {
     if (!I->isExternal())
@@ -132,7 +132,9 @@ Function *PoolAllocate::MakeFunctionClone(Function &F) {
         Nodes[i]->markReachableNodes(MarkedNodes);
 
   // Marked the returned node as alive...
-  G.getRetNode().getNode()->markReachableNodes(MarkedNodes);
+  if (DSNode *RetNode = G.getRetNode().getNode())
+    if (RetNode->NodeType & DSNode::HeapNode)
+      RetNode->markReachableNodes(MarkedNodes);
 
   if (MarkedNodes.empty())   // We don't need to clone the function if there
     return 0;                // are no incoming arguments to be added.