Add support to globaldce for deleting dead function prototypes
authorChris Lattner <sabre@nondot.org>
Thu, 26 Jun 2003 05:41:18 +0000 (05:41 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 26 Jun 2003 05:41:18 +0000 (05:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6918 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/GlobalDCE.cpp

index 55ef5d42207ecb2cfb3ae5e60ab108bc5fc728dc..c7fddc99139139af669e6d3260e8260e09e5eaea 100644 (file)
@@ -46,12 +46,18 @@ namespace {
     // Nothing to do if no unreachable functions have been found...
     if (FunctionsToDelete.empty()) return false;
     
-    // Unreachables functions have been found and should have no references to
+    // Unreachable functions have been found and should have no references to
     // them, delete them now.
     //
     for (std::vector<CallGraphNode*>::iterator I = FunctionsToDelete.begin(),
            E = FunctionsToDelete.end(); I != E; ++I)
       delete CallGraph.removeFunctionFromModule(*I);
+
+    // Walk the function list, removing prototypes for functions which are not
+    // used.
+    for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
+      if (I->use_size() == 0 && I->isExternal())
+        delete CallGraph.removeFunctionFromModule(I);
     
     return true;
   }