diff --git a/Driver/ASTConsumers.cpp b/Driver/ASTConsumers.cpp
index 8c98ed4..01014cb 100644
--- a/Driver/ASTConsumers.cpp
+++ b/Driver/ASTConsumers.cpp
@@ -551,8 +551,7 @@
         // FIXME: This lookup needs to be generalized to handle namespaces and
         // (when we support them) templates.
         if (D->getName() == clsname) {
-          QualType QT(T, 0);
-          QT.viewInheritance(C);      
+          D->viewInheritance(C);      
         }
       }
   }
diff --git a/include/clang/AST/DeclCXX.h b/include/clang/AST/DeclCXX.h
index e9d159e..89d135e 100644
--- a/include/clang/AST/DeclCXX.h
+++ b/include/clang/AST/DeclCXX.h
@@ -179,6 +179,11 @@
     return cast_or_null<CXXFieldDecl>(RecordDecl::getMember(name));
   }
 
+  /// viewInheritance - Renders and displays an inheritance diagram
+  /// for this C++ class and all of its base classes (transitively) using
+  /// GraphViz.
+  void viewInheritance(ASTContext& Context) const;
+
   static bool classof(const Decl *D) { return D->getKind() == CXXRecord; }
   static bool classof(const CXXRecordDecl *D) { return true; }
   static DeclContext *castToDeclContext(const CXXRecordDecl *D) {
diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h
index 3194473..29941aa 100644
--- a/include/clang/AST/Type.h
+++ b/include/clang/AST/Type.h
@@ -182,11 +182,6 @@
   void dump(const char *s) const;
   void dump() const;
   
-  /// viewInheritance - Renders and displays an inheritance diagram
-  /// for a C++ class and all of its base classes (transitively) using
-  /// GraphViz. Only available in debug builds.
-  void viewInheritance(ASTContext& Context);
-
   void Profile(llvm::FoldingSetNodeID &ID) const {
     ID.AddPointer(getAsOpaquePtr());
   }
diff --git a/lib/AST/InheritViz.cpp b/lib/AST/InheritViz.cpp
index b4054a6..5e4dab4 100644
--- a/lib/AST/InheritViz.cpp
+++ b/lib/AST/InheritViz.cpp
@@ -25,7 +25,6 @@
 
 namespace clang {
 
-#ifndef NDEBUG
 /// InheritanceHierarchyWriter - Helper class that writes out a
 /// GraphViz file that diagrams the inheritance hierarchy starting at
 /// a given C++ class type. Note that we do not use LLVM's
@@ -131,23 +130,18 @@
     Out << "_" << DirectBaseCount[CanonType];
   return Out;
 }
-#endif
 
 /// viewInheritance - Display the inheritance hierarchy of this C++
 /// class using GraphViz.
-void QualType::viewInheritance(ASTContext& Context) {
-  if (!(*this)->getAsRecordType()) {
-    llvm::errs() << "Type " << getAsString() << " is not a C++ class type.\n";
-    return;
-  }
-#ifndef NDEBUG
+void CXXRecordDecl::viewInheritance(ASTContext& Context) const {
+  QualType Self = Context.getTypeDeclType(const_cast<CXXRecordDecl *>(this));
   std::string ErrMsg;
   sys::Path Filename = sys::Path::GetTemporaryDirectory(&ErrMsg);
   if (Filename.isEmpty()) {
     llvm::errs() << "Error: " << ErrMsg << "\n";
     return;
   }
-  Filename.appendComponent(getAsString() + ".dot");
+  Filename.appendComponent(Self.getAsString() + ".dot");
   if (Filename.makeUnique(true,&ErrMsg)) {
     llvm::errs() << "Error: " << ErrMsg << "\n";
     return;
@@ -159,7 +153,7 @@
 
   if (ErrMsg.empty()) {
     InheritanceHierarchyWriter Writer(Context, O);
-    Writer.WriteGraph(*this);
+    Writer.WriteGraph(Self);
     llvm::errs() << " done. \n";
 
     O.close();
@@ -169,10 +163,6 @@
   } else {
     llvm::errs() << "error opening file for writing!\n";
   }
-#else
-  llvm::errs() << "QualType::viewInheritance is only available in debug "
-               << "builds on systems with Graphviz or gv!\n";
-#endif
 }
 
 }
