<div dir="ltr">(mostly joking) any interest in seeing what it'd take to make Clang/LLVM -Wmissing-prototype clean? (which would also catch the same sort of issues, I think?)</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Oct 1, 2019 at 4:10 PM John McCall via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: rjmccall<br>
Date: Tue Oct  1 16:12:57 2019<br>
New Revision: 373406<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=373406&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=373406&view=rev</a><br>
Log:<br>
Use scope qualifiers in Clang's tblgen backends to get useful<br>
redeclaration checking.  NFC.<br>
<br>
Modified:<br>
    cfe/trunk/utils/TableGen/ClangASTNodesEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangCommentCommandInfoEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangDataCollectorsEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangOpcodesEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangOptionDocEmitter.cpp<br>
    cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp<br>
    cfe/trunk/utils/TableGen/NeonEmitter.cpp<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangASTNodesEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangASTNodesEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangASTNodesEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangASTNodesEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangASTNodesEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -10,6 +10,8 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
+<br>
 #include "llvm/TableGen/Record.h"<br>
 #include "llvm/TableGen/TableGenBackend.h"<br>
 #include <cctype><br>
@@ -173,15 +175,14 @@ void ClangASTNodesEmitter::run(raw_ostre<br>
   OS << "#undef ABSTRACT_" << macroName(Root.getName()) << "\n";<br>
 }<br>
<br>
-namespace clang {<br>
-void EmitClangASTNodes(RecordKeeper &RK, raw_ostream &OS,<br>
-                       const std::string &N, const std::string &S) {<br>
+void clang::EmitClangASTNodes(RecordKeeper &RK, raw_ostream &OS,<br>
+                              const std::string &N, const std::string &S) {<br>
   ClangASTNodesEmitter(RK, N, S).run(OS);<br>
 }<br>
<br>
 // Emits and addendum to a .inc file to enumerate the clang declaration<br>
 // contexts.<br>
-void EmitClangDeclContext(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangDeclContext(RecordKeeper &Records, raw_ostream &OS) {<br>
   // FIXME: Find a .td file format to allow for this to be represented better.<br>
<br>
   emitSourceFileHeader("List of AST Decl nodes", OS);<br>
@@ -225,4 +226,3 @@ void EmitClangDeclContext(RecordKeeper &<br>
   OS << "#undef DECL_CONTEXT\n";<br>
   OS << "#undef DECL_CONTEXT_BASE\n";<br>
 }<br>
-} // end namespace clang<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -10,6 +10,8 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
+<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/DenseMap.h"<br>
 #include "llvm/ADT/DenseSet.h"<br>
@@ -2219,10 +2221,8 @@ static void emitClangAttrThisIsaIdentifi<br>
   OS << "#endif // CLANG_ATTR_THIS_ISA_IDENTIFIER_ARG_LIST\n\n";<br>
 }<br>
<br>
-namespace clang {<br>
-<br>
 // Emits the class definitions for attributes.<br>
-void EmitClangAttrClass(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangAttrClass(RecordKeeper &Records, raw_ostream &OS) {<br>
   emitSourceFileHeader("Attribute classes' definitions", OS);<br>
<br>
   OS << "#ifndef LLVM_CLANG_ATTR_CLASSES_INC\n";<br>
@@ -2491,7 +2491,7 @@ void EmitClangAttrClass(RecordKeeper &Re<br>
 }<br>
<br>
 // Emits the class method definitions for attributes.<br>
-void EmitClangAttrImpl(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangAttrImpl(RecordKeeper &Records, raw_ostream &OS) {<br>
   emitSourceFileHeader("Attribute classes' member function definitions", OS);<br>
<br>
   std::vector<Record*> Attrs = Records.getAllDerivedDefinitions("Attr");<br>
@@ -2556,8 +2556,6 @@ void EmitClangAttrImpl(RecordKeeper &Rec<br>
   EmitFunc("printPretty(OS, Policy)");<br>
 }<br>
<br>
-} // end namespace clang<br>
-<br>
 static void emitAttrList(raw_ostream &OS, StringRef Class,<br>
                          const std::vector<Record*> &AttrList) {<br>
   for (auto Cur : AttrList) {<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangCommentCommandInfoEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangCommentCommandInfoEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangCommentCommandInfoEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangCommentCommandInfoEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangCommentCommandInfoEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -11,6 +11,8 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
+<br>
 #include "llvm/TableGen/Record.h"<br>
 #include "llvm/TableGen/StringMatcher.h"<br>
 #include "llvm/TableGen/TableGenBackend.h"<br>
@@ -18,8 +20,7 @@<br>
<br>
 using namespace llvm;<br>
<br>
-namespace clang {<br>
-void EmitClangCommentCommandInfo(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangCommentCommandInfo(RecordKeeper &Records, raw_ostream &OS) {<br>
   emitSourceFileHeader("A list of commands useable in documentation "<br>
                        "comments", OS);<br>
<br>
@@ -105,7 +106,7 @@ static std::string MangleName(StringRef<br>
   return Mangled;<br>
 }<br>
<br>
-void EmitClangCommentCommandList(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangCommentCommandList(RecordKeeper &Records, raw_ostream &OS) {<br>
   emitSourceFileHeader("A list of commands useable in documentation "<br>
                        "comments", OS);<br>
<br>
@@ -121,4 +122,3 @@ void EmitClangCommentCommandList(RecordK<br>
     OS << "COMMENT_COMMAND(" << MangledName << ")\n";<br>
   }<br>
 }<br>
-} // end namespace clang<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -11,6 +11,7 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
 #include "llvm/ADT/SmallString.h"<br>
 #include "llvm/Support/ConvertUTF.h"<br>
 #include "llvm/TableGen/Error.h"<br>
@@ -45,9 +46,8 @@ static bool translateCodePointToUTF8(uns<br>
   return true;<br>
 }<br>
<br>
-namespace clang {<br>
-void EmitClangCommentHTMLNamedCharacterReferences(RecordKeeper &Records,<br>
-                                                  raw_ostream &OS) {<br>
+void clang::EmitClangCommentHTMLNamedCharacterReferences(RecordKeeper &Records,<br>
+                                                         raw_ostream &OS) {<br>
   std::vector<Record *> Tags = Records.getAllDerivedDefinitions("NCR");<br>
   std::vector<StringMatcher::StringPair> NameToUTF8;<br>
   SmallString<32> CLiteral;<br>
@@ -79,6 +79,3 @@ void EmitClangCommentHTMLNamedCharacterR<br>
   OS << "  return StringRef();\n"<br>
      << "}\n\n";<br>
 }<br>
-<br>
-} // end namespace clang<br>
-<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangDataCollectorsEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangDataCollectorsEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangDataCollectorsEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangDataCollectorsEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangDataCollectorsEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -1,10 +1,10 @@<br>
+#include "TableGenBackends.h"<br>
 #include "llvm/TableGen/Record.h"<br>
 #include "llvm/TableGen/TableGenBackend.h"<br>
<br>
 using namespace llvm;<br>
<br>
-namespace clang {<br>
-void EmitClangDataCollectors(RecordKeeper &RK, raw_ostream &OS) {<br>
+void clang::EmitClangDataCollectors(RecordKeeper &RK, raw_ostream &OS) {<br>
   const auto &Defs = RK.getClasses();<br>
   for (const auto &Entry : Defs) {<br>
     Record &R = *Entry.second;<br>
@@ -15,4 +15,3 @@ void EmitClangDataCollectors(RecordKeepe<br>
   }<br>
   OS << "#undef DEF_ADD_DATA\n";<br>
 }<br>
-} // end namespace clang<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -10,6 +10,7 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
 #include "llvm/ADT/DenseSet.h"<br>
 #include "llvm/ADT/Optional.h"<br>
 #include "llvm/ADT/PointerUnion.h"<br>
@@ -1187,9 +1188,8 @@ static bool isRemark(const Record &Diag)<br>
<br>
 /// ClangDiagsDefsEmitter - The top-level class emits .def files containing<br>
 /// declarations of Clang diagnostics.<br>
-namespace clang {<br>
-void EmitClangDiagsDefs(RecordKeeper &Records, raw_ostream &OS,<br>
-                        const std::string &Component) {<br>
+void clang::EmitClangDiagsDefs(RecordKeeper &Records, raw_ostream &OS,<br>
+                               const std::string &Component) {<br>
   // Write the #if guard<br>
   if (!Component.empty()) {<br>
     std::string ComponentName = StringRef(Component).upper();<br>
@@ -1288,7 +1288,6 @@ void EmitClangDiagsDefs(RecordKeeper &Re<br>
     OS << ")\n";<br>
   }<br>
 }<br>
-} // end namespace clang<br>
<br>
 //===----------------------------------------------------------------------===//<br>
 // Warning Group Tables generation<br>
@@ -1528,8 +1527,7 @@ static void emitCategoryTable(RecordKeep<br>
   OS << "#endif // GET_CATEGORY_TABLE\n\n";<br>
 }<br>
<br>
-namespace clang {<br>
-void EmitClangDiagGroups(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangDiagGroups(RecordKeeper &Records, raw_ostream &OS) {<br>
   // Compute a mapping from a DiagGroup to all of its parents.<br>
   DiagGroupParentMap DGParentMap(Records);<br>
<br>
@@ -1565,7 +1563,6 @@ void EmitClangDiagGroups(RecordKeeper &R<br>
                 OS);<br>
   emitCategoryTable(Records, OS);<br>
 }<br>
-} // end namespace clang<br>
<br>
 //===----------------------------------------------------------------------===//<br>
 // Diagnostic name index generation<br>
@@ -1582,8 +1579,7 @@ struct RecordIndexElement<br>
 };<br>
 } // end anonymous namespace.<br>
<br>
-namespace clang {<br>
-void EmitClangDiagsIndexName(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangDiagsIndexName(RecordKeeper &Records, raw_ostream &OS) {<br>
   const std::vector<Record*> &Diags =<br>
     Records.getAllDerivedDefinitions("Diagnostic");<br>
<br>
@@ -1673,7 +1669,7 @@ void writeDiagnosticText(DiagnosticTextB<br>
 }  // namespace<br>
 }  // namespace docs<br>
<br>
-void EmitClangDiagDocs(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangDiagDocs(RecordKeeper &Records, raw_ostream &OS) {<br>
   using namespace docs;<br>
<br>
   // Get the documentation introduction paragraph.<br>
@@ -1792,5 +1788,3 @@ void EmitClangDiagDocs(RecordKeeper &Rec<br>
     OS << "\n";<br>
   }<br>
 }<br>
-<br>
-} // end namespace clang<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangOpcodesEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangOpcodesEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangOpcodesEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangOpcodesEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangOpcodesEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -10,6 +10,7 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
 #include "llvm/TableGen/Error.h"<br>
 #include "llvm/TableGen/Record.h"<br>
 #include "llvm/TableGen/StringMatcher.h"<br>
@@ -351,10 +352,6 @@ void ClangOpcodesEmitter::PrintTypes(raw<br>
   OS << ">";<br>
 }<br>
<br>
-namespace clang {<br>
-<br>
-void EmitClangOpcodes(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangOpcodes(RecordKeeper &Records, raw_ostream &OS) {<br>
   ClangOpcodesEmitter(Records).run(OS);<br>
 }<br>
-<br>
-} // end namespace clang<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -50,6 +50,7 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
 #include "llvm/ADT/MapVector.h"<br>
 #include "llvm/ADT/STLExtras.h"<br>
 #include "llvm/ADT/SmallString.h"<br>
@@ -639,11 +640,7 @@ static void OCL2Qual(ASTContext &Context<br>
   OS << "\n} // OCL2Qual\n";<br>
 }<br>
<br>
-namespace clang {<br>
-<br>
-void EmitClangOpenCLBuiltins(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangOpenCLBuiltins(RecordKeeper &Records, raw_ostream &OS) {<br>
   BuiltinNameEmitter NameChecker(Records, OS);<br>
   NameChecker.Emit();<br>
 }<br>
-<br>
-} // end namespace clang<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangOptionDocEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangOptionDocEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangOptionDocEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangOptionDocEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangOptionDocEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -8,6 +8,7 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
 #include "llvm/TableGen/Error.h"<br>
 #include "llvm/ADT/STLExtras.h"<br>
 #include "llvm/ADT/SmallString.h"<br>
@@ -21,8 +22,6 @@<br>
<br>
 using namespace llvm;<br>
<br>
-namespace clang {<br>
-namespace docs {<br>
 namespace {<br>
 struct DocumentedOption {<br>
   Record *Option;<br>
@@ -380,11 +379,8 @@ void emitDocumentation(int Depth, const<br>
 }<br>
<br>
 }  // namespace<br>
-}  // namespace docs<br>
-<br>
-void EmitClangOptDocs(RecordKeeper &Records, raw_ostream &OS) {<br>
-  using namespace docs;<br>
<br>
+void clang::EmitClangOptDocs(RecordKeeper &Records, raw_ostream &OS) {<br>
   const Record *DocInfo = Records.getDef("GlobalDocumentation");<br>
   if (!DocInfo) {<br>
     PrintFatalError("The GlobalDocumentation top-level definition is missing, "<br>
@@ -396,4 +392,3 @@ void EmitClangOptDocs(RecordKeeper &Reco<br>
<br>
   emitDocumentation(0, extractDocumentation(Records), DocInfo, OS);<br>
 }<br>
-} // end namespace clang<br>
<br>
Modified: cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -10,6 +10,7 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
 #include "llvm/ADT/StringMap.h"<br>
 #include "llvm/TableGen/Error.h"<br>
 #include "llvm/TableGen/Record.h"<br>
@@ -174,8 +175,7 @@ static void printOption(llvm::raw_ostrea<br>
     OS << "true";<br>
 }<br>
<br>
-namespace clang {<br>
-void EmitClangSACheckers(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitClangSACheckers(RecordKeeper &Records, raw_ostream &OS) {<br>
   std::vector<Record*> checkers = Records.getAllDerivedDefinitions("Checker");<br>
   std::vector<Record*> packages = Records.getAllDerivedDefinitions("Package");<br>
<br>
@@ -315,4 +315,3 @@ void EmitClangSACheckers(RecordKeeper &R<br>
   OS << "#endif // GET_CHECKER_OPTIONS\n"<br>
         "\n";<br>
 }<br>
-} // end namespace clang<br>
<br>
Modified: cfe/trunk/utils/TableGen/NeonEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/NeonEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/NeonEmitter.cpp?rev=373406&r1=373405&r2=373406&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/utils/TableGen/NeonEmitter.cpp (original)<br>
+++ cfe/trunk/utils/TableGen/NeonEmitter.cpp Tue Oct  1 16:12:57 2019<br>
@@ -23,6 +23,7 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "TableGenBackends.h"<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/DenseMap.h"<br>
 #include "llvm/ADT/None.h"<br>
@@ -2629,22 +2630,18 @@ void NeonEmitter::runFP16(raw_ostream &O<br>
   OS << "#endif /* __ARM_FP16_H */\n";<br>
 }<br>
<br>
-namespace clang {<br>
-<br>
-void EmitNeon(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitNeon(RecordKeeper &Records, raw_ostream &OS) {<br>
   NeonEmitter(Records).run(OS);<br>
 }<br>
<br>
-void EmitFP16(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitFP16(RecordKeeper &Records, raw_ostream &OS) {<br>
   NeonEmitter(Records).runFP16(OS);<br>
 }<br>
<br>
-void EmitNeonSema(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitNeonSema(RecordKeeper &Records, raw_ostream &OS) {<br>
   NeonEmitter(Records).runHeader(OS);<br>
 }<br>
<br>
-void EmitNeonTest(RecordKeeper &Records, raw_ostream &OS) {<br>
+void clang::EmitNeonTest(RecordKeeper &Records, raw_ostream &OS) {<br>
   llvm_unreachable("Neon test generation no longer implemented!");<br>
 }<br>
-<br>
-} // end namespace clang<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div>