Add raw_ostream operators to NamedDecl for convenience. Switch over all users of getNameAsString on a stream.

The next step is to print the name directly into the stream, avoiding a temporary std::string copy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101632 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/ASTConsumers.cpp b/lib/Frontend/ASTConsumers.cpp
index b53a80e..7b8ebf9 100644
--- a/lib/Frontend/ASTConsumers.cpp
+++ b/lib/Frontend/ASTConsumers.cpp
@@ -164,7 +164,7 @@
   case Decl::Namespace: {
     Out << "[namespace] ";
     const NamespaceDecl* ND = cast<NamespaceDecl>(DC);
-    Out << ND->getNameAsString();
+    Out << ND;
     break;
   }
   case Decl::Enum: {
@@ -173,7 +173,7 @@
       Out << "[enum] ";
     else
       Out << "<enum> ";
-    Out << ED->getNameAsString();
+    Out << ED;
     break;
   }
   case Decl::Record: {
@@ -182,7 +182,7 @@
       Out << "[struct] ";
     else
       Out << "<struct> ";
-    Out << RD->getNameAsString();
+    Out << RD;
     break;
   }
   case Decl::CXXRecord: {
@@ -191,7 +191,7 @@
       Out << "[class] ";
     else
       Out << "<class> ";
-    Out << RD->getNameAsString() << " " << DC;
+    Out << RD << ' ' << DC;
     break;
   }
   case Decl::ObjCMethod:
@@ -224,7 +224,7 @@
       Out << "[function] ";
     else
       Out << "<function> ";
-    Out << FD->getNameAsString();
+    Out << FD;
     // Print the parameters.
     Out << "(";
     bool PrintComma = false;
@@ -234,7 +234,7 @@
         Out << ", ";
       else
         PrintComma = true;
-      Out << (*I)->getNameAsString();
+      Out << *I;
     }
     Out << ")";
     break;
@@ -247,7 +247,7 @@
       Out << "(c++ method) ";
     else
       Out << "<c++ method> ";
-    Out << D->getNameAsString();
+    Out << D;
     // Print the parameters.
     Out << "(";
     bool PrintComma = false;
@@ -257,7 +257,7 @@
         Out << ", ";
       else
         PrintComma = true;
-      Out << (*I)->getNameAsString();
+      Out << *I;
     }
     Out << ")";
 
@@ -277,7 +277,7 @@
       Out << "(c++ ctor) ";
     else
       Out << "<c++ ctor> ";
-    Out << D->getNameAsString();
+    Out << D;
     // Print the parameters.
     Out << "(";
     bool PrintComma = false;
@@ -287,7 +287,7 @@
         Out << ", ";
       else
         PrintComma = true;
-      Out << (*I)->getNameAsString();
+      Out << *I;
     }
     Out << ")";
 
@@ -306,7 +306,7 @@
       Out << "(c++ dtor) ";
     else
       Out << "<c++ dtor> ";
-    Out << D->getNameAsString();
+    Out << D;
     // Check the semantic DC.
     const DeclContext* SemaDC = D->getDeclContext();
     const DeclContext* LexicalDC = D->getLexicalDeclContext();
@@ -322,7 +322,7 @@
       Out << "(c++ conversion) ";
     else
       Out << "<c++ conversion> ";
-    Out << D->getNameAsString();
+    Out << D;
     // Check the semantic DC.
     const DeclContext* SemaDC = D->getDeclContext();
     const DeclContext* LexicalDC = D->getLexicalDeclContext();
@@ -369,42 +369,42 @@
     }
     case Decl::Field: {
       FieldDecl* FD = cast<FieldDecl>(*I);
-      Out << "<field> " << FD->getNameAsString() << "\n";
+      Out << "<field> " << FD << '\n';
       break;
     }
     case Decl::Typedef: {
       TypedefDecl* TD = cast<TypedefDecl>(*I);
-      Out << "<typedef> " << TD->getNameAsString() << "\n";
+      Out << "<typedef> " << TD << '\n';
       break;
     }
     case Decl::EnumConstant: {
       EnumConstantDecl* ECD = cast<EnumConstantDecl>(*I);
-      Out << "<enum constant> " << ECD->getNameAsString() << "\n";
+      Out << "<enum constant> " << ECD << '\n';
       break;
     }
     case Decl::Var: {
       VarDecl* VD = cast<VarDecl>(*I);
-      Out << "<var> " << VD->getNameAsString() << "\n";
+      Out << "<var> " << VD << '\n';
       break;
     }
     case Decl::ImplicitParam: {
       ImplicitParamDecl* IPD = cast<ImplicitParamDecl>(*I);
-      Out << "<implicit parameter> " << IPD->getNameAsString() << "\n";
+      Out << "<implicit parameter> " << IPD << '\n';
       break;
     }
     case Decl::ParmVar: {
       ParmVarDecl* PVD = cast<ParmVarDecl>(*I);
-      Out << "<parameter> " << PVD->getNameAsString() << "\n";
+      Out << "<parameter> " << PVD << '\n';
       break;
     }
     case Decl::ObjCProperty: {
       ObjCPropertyDecl* OPD = cast<ObjCPropertyDecl>(*I);
-      Out << "<objc property> " << OPD->getNameAsString() << "\n";
+      Out << "<objc property> " << OPD << '\n';
       break;
     }
     case Decl::FunctionTemplate: {
       FunctionTemplateDecl* FTD = cast<FunctionTemplateDecl>(*I);
-      Out << "<function template> " << FTD->getNameAsString() << "\n";
+      Out << "<function template> " << FTD << '\n';
       break;
     }
     case Decl::FileScopeAsm: {
@@ -417,16 +417,16 @@
     }
     case Decl::NamespaceAlias: {
       NamespaceAliasDecl* NAD = cast<NamespaceAliasDecl>(*I);
-      Out << "<namespace alias> " << NAD->getNameAsString() << "\n";
+      Out << "<namespace alias> " << NAD << '\n';
       break;
     }
     case Decl::ClassTemplate: {
       ClassTemplateDecl *CTD = cast<ClassTemplateDecl>(*I);
-      Out << "<class template> " << CTD->getNameAsString() << '\n';
+      Out << "<class template> " << CTD << '\n';
       break;
     }
     default:
-      Out << "DeclKind: " << DK << '"' << I->getDeclKindName() << "\"\n";
+      Out << "DeclKind: " << DK << '"' << *I << "\"\n";
       assert(0 && "decl unhandled");
     }
   }
diff --git a/lib/Frontend/AnalysisConsumer.cpp b/lib/Frontend/AnalysisConsumer.cpp
index 2ca833b..d55fbc1 100644
--- a/lib/Frontend/AnalysisConsumer.cpp
+++ b/lib/Frontend/AnalysisConsumer.cpp
@@ -150,7 +150,7 @@
 
     if (isa<FunctionDecl>(D) || isa<ObjCMethodDecl>(D)) {
       const NamedDecl *ND = cast<NamedDecl>(D);
-      llvm::errs() << ' ' << ND->getNameAsString() << '\n';
+      llvm::errs() << ' ' << ND << '\n';
     }
     else if (isa<BlockDecl>(D)) {
       llvm::errs() << ' ' << "block(line:" << Loc.getLine() << ",col:"