diff --git a/include/llvm/Analysis/CallGraph.h b/include/llvm/Analysis/CallGraph.h
index 591484dd278..926da76b5f3 100644
--- a/include/llvm/Analysis/CallGraph.h
+++ b/include/llvm/Analysis/CallGraph.h
@@ -152,7 +152,7 @@ protected:
   CallGraph() {}
 
 public:
-  virtual ~CallGraph() { destroy(); }
+  virtual ~CallGraph() { }
 
   /// initialize - Call this method before calling other methods,
   /// re/initializes the state of the CallGraph.
diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp
index 7620fd9842c..6c18d0d1a64 100644
--- a/lib/Analysis/IPA/CallGraph.cpp
+++ b/lib/Analysis/IPA/CallGraph.cpp
@@ -46,12 +46,16 @@ public:
     ExternalCallingNode(0), CallsExternalNode(0) {
       initializeBasicCallGraphPass(*PassRegistry::getPassRegistry());
     }
+  ~BasicCallGraph() {
+    destroy();
+  }
 
   // runOnModule - Compute the call graph for the specified module.
   virtual bool runOnModule(Module &M) {
     CallGraph::initialize(M);
     
     ExternalCallingNode = getOrInsertFunction(0);
+    assert(!CallsExternalNode);
     CallsExternalNode = new CallGraphNode(0);
     Root = 0;