diff --git a/include/clang/Analysis/CallGraph.h b/include/clang/Analysis/CallGraph.h
index 8de0e9f..e64c2ca 100644
--- a/include/clang/Analysis/CallGraph.h
+++ b/include/clang/Analysis/CallGraph.h
@@ -45,7 +45,7 @@
 
   bool hasCallee() const { return begin() != end(); }
 
-  const char *getName(ASTContext &Ctx) { return F->getName(Ctx); }
+  std::string getName(ASTContext &Ctx) { return F->getPrintableName(Ctx); }
 };
 
 class CallGraph {
diff --git a/include/clang/Index/Entity.h b/include/clang/Index/Entity.h
index e65412c..e1671bb 100644
--- a/include/clang/Index/Entity.h
+++ b/include/clang/Index/Entity.h
@@ -43,8 +43,8 @@
   /// \brief Find the Decl that can be referred to by this entity.
   Decl *getDecl(ASTContext &AST);
 
-  /// \brief Get the Decl's name.
-  const char *getName(ASTContext &Ctx);
+  /// \brief Get a printable name for debugging purpose.
+  std::string getPrintableName(ASTContext &Ctx);
 
   /// \brief Get an Entity associated with the given Decl.
   /// \returns Null if an Entity cannot refer to this Decl.
diff --git a/lib/Analysis/CallGraph.cpp b/lib/Analysis/CallGraph.cpp
index 2ec6d20..b4f57b8 100644
--- a/lib/Analysis/CallGraph.cpp
+++ b/lib/Analysis/CallGraph.cpp
@@ -118,10 +118,11 @@
   for (iterator I = begin(), E = end(); I != E; ++I) {
     if (I->second->hasCallee()) {
       ASTContext &Ctx = *CallerCtx[I->second];
-      os << "function: " << I->first->getName(Ctx) << " calls:\n";
+      os << "function: " << I->first->getPrintableName(Ctx).c_str() 
+         << " calls:\n";
       for (CallGraphNode::iterator CI = I->second->begin(), 
              CE = I->second->end(); CI != CE; ++CI) {
-        os << "    " << CI->second->getName(Ctx);
+        os << "    " << CI->second->getName(Ctx).c_str();
       }
       os << '\n';
     }
diff --git a/lib/Index/Entity.cpp b/lib/Index/Entity.cpp
index ca2e7c8..7a6c05c 100644
--- a/lib/Index/Entity.cpp
+++ b/lib/Index/Entity.cpp
@@ -126,11 +126,11 @@
   return 0; // Failed to find a decl using this Entity.
 }
 
-const char *Entity::getName(ASTContext &Ctx) {
+std::string Entity::getPrintableName(ASTContext &Ctx) {
   if (const NamedDecl *ND = dyn_cast_or_null<NamedDecl>(getDecl(Ctx))) {
-    return ND->getNameAsCString();
+    return ND->getNameAsString();
   }
-  return 0;
+  return std::string();
 }
 
 /// \brief Get an Entity associated with the given Decl.
