https://github.com/ilovepi updated 
https://github.com/llvm/llvm-project/pull/136391

>From ec8bd52ba80c206a2de1f3958948dfce038ed9fd Mon Sep 17 00:00:00 2001
From: Paul Kirth <paulki...@google.com>
Date: Fri, 18 Apr 2025 17:13:37 -0700
Subject: [PATCH] [clang-doc] Prefer static functions for internal APIs

Additionally moving the declarations from Generator.cpp
prevents misc-use-internal-linkage warnings from clang-tidy.
We fix those here too, since the static functions are part
of the same diagnostic
---
 clang-tools-extra/clang-doc/BitcodeReader.cpp | 128 +++++++++---------
 clang-tools-extra/clang-doc/Generators.cpp    |   3 -
 clang-tools-extra/clang-doc/Generators.h      |   6 +
 clang-tools-extra/clang-doc/Mapper.cpp        |   2 +-
 clang-tools-extra/clang-doc/Serialize.cpp     |  20 +--
 .../clang-doc/tool/ClangDocMain.cpp           |  17 +--
 6 files changed, 94 insertions(+), 82 deletions(-)

diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp 
b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index d6c9da81a05c7..c95804ada9784 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -18,14 +18,15 @@ namespace doc {
 using Record = llvm::SmallVector<uint64_t, 1024>;
 
 // This implements decode for SmallString.
-llvm::Error decodeRecord(const Record &R, llvm::SmallVectorImpl<char> &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R,
+                                llvm::SmallVectorImpl<char> &Field,
+                                llvm::StringRef Blob) {
   Field.assign(Blob.begin(), Blob.end());
   return llvm::Error::success();
 }
 
-llvm::Error decodeRecord(const Record &R, SymbolID &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R, SymbolID &Field,
+                                llvm::StringRef Blob) {
   if (R[0] != BitCodeConstants::USRHashSize)
     return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                    "incorrect USR size");
@@ -37,12 +38,14 @@ llvm::Error decodeRecord(const Record &R, SymbolID &Field,
   return llvm::Error::success();
 }
 
-llvm::Error decodeRecord(const Record &R, bool &Field, llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R, bool &Field,
+                                llvm::StringRef Blob) {
   Field = R[0] != 0;
   return llvm::Error::success();
 }
 
-llvm::Error decodeRecord(const Record &R, int &Field, llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R, int &Field,
+                                llvm::StringRef Blob) {
   if (R[0] > INT_MAX)
     return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                    "integer too large to parse");
@@ -50,8 +53,8 @@ llvm::Error decodeRecord(const Record &R, int &Field, 
llvm::StringRef Blob) {
   return llvm::Error::success();
 }
 
-llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
+                                llvm::StringRef Blob) {
   switch (R[0]) {
   case AS_public:
   case AS_private:
@@ -65,8 +68,8 @@ llvm::Error decodeRecord(const Record &R, AccessSpecifier 
&Field,
   }
 }
 
-llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
+                                llvm::StringRef Blob) {
   switch (static_cast<TagTypeKind>(R[0])) {
   case TagTypeKind::Struct:
   case TagTypeKind::Interface:
@@ -80,8 +83,8 @@ llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
                                  "invalid value for TagTypeKind");
 }
 
-llvm::Error decodeRecord(const Record &R, std::optional<Location> &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R, std::optional<Location> 
&Field,
+                                llvm::StringRef Blob) {
   if (R[0] > INT_MAX)
     return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                    "integer too large to parse");
@@ -89,8 +92,8 @@ llvm::Error decodeRecord(const Record &R, 
std::optional<Location> &Field,
   return llvm::Error::success();
 }
 
-llvm::Error decodeRecord(const Record &R, InfoType &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R, InfoType &Field,
+                                llvm::StringRef Blob) {
   switch (auto IT = static_cast<InfoType>(R[0])) {
   case InfoType::IT_namespace:
   case InfoType::IT_record:
@@ -105,8 +108,8 @@ llvm::Error decodeRecord(const Record &R, InfoType &Field,
                                  "invalid value for InfoType");
 }
 
-llvm::Error decodeRecord(const Record &R, FieldId &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R, FieldId &Field,
+                                llvm::StringRef Blob) {
   switch (auto F = static_cast<FieldId>(R[0])) {
   case FieldId::F_namespace:
   case FieldId::F_parent:
@@ -122,16 +125,17 @@ llvm::Error decodeRecord(const Record &R, FieldId &Field,
                                  "invalid value for FieldId");
 }
 
-llvm::Error decodeRecord(const Record &R,
-                         llvm::SmallVectorImpl<llvm::SmallString<16>> &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error
+decodeRecord(const Record &R,
+             llvm::SmallVectorImpl<llvm::SmallString<16>> &Field,
+             llvm::StringRef Blob) {
   Field.push_back(Blob);
   return llvm::Error::success();
 }
 
-llvm::Error decodeRecord(const Record &R,
-                         llvm::SmallVectorImpl<Location> &Field,
-                         llvm::StringRef Blob) {
+static llvm::Error decodeRecord(const Record &R,
+                                llvm::SmallVectorImpl<Location> &Field,
+                                llvm::StringRef Blob) {
   if (R[0] > INT_MAX)
     return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                    "integer too large to parse");
@@ -139,16 +143,16 @@ llvm::Error decodeRecord(const Record &R,
   return llvm::Error::success();
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        const unsigned VersionNo) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, const unsigned VersionNo) 
{
   if (ID == VERSION && R[0] == VersionNo)
     return llvm::Error::success();
   return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                  "mismatched bitcode version number");
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        NamespaceInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, NamespaceInfo *I) {
   switch (ID) {
   case NAMESPACE_USR:
     return decodeRecord(R, I->USR, Blob);
@@ -162,8 +166,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        RecordInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, RecordInfo *I) {
   switch (ID) {
   case RECORD_USR:
     return decodeRecord(R, I->USR, Blob);
@@ -185,8 +189,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        BaseRecordInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, BaseRecordInfo *I) {
   switch (ID) {
   case BASE_RECORD_USR:
     return decodeRecord(R, I->USR, Blob);
@@ -208,8 +212,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        EnumInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, EnumInfo *I) {
   switch (ID) {
   case ENUM_USR:
     return decodeRecord(R, I->USR, Blob);
@@ -227,8 +231,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        TypedefInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, TypedefInfo *I) {
   switch (ID) {
   case TYPEDEF_USR:
     return decodeRecord(R, I->USR, Blob);
@@ -244,8 +248,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        EnumValueInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, EnumValueInfo *I) {
   switch (ID) {
   case ENUM_VALUE_NAME:
     return decodeRecord(R, I->Name, Blob);
@@ -259,8 +263,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        FunctionInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, FunctionInfo *I) {
   switch (ID) {
   case FUNCTION_USR:
     return decodeRecord(R, I->USR, Blob);
@@ -282,13 +286,13 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        TypeInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, TypeInfo *I) {
   return llvm::Error::success();
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        FieldTypeInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, FieldTypeInfo *I) {
   switch (ID) {
   case FIELD_TYPE_NAME:
     return decodeRecord(R, I->Name, Blob);
@@ -300,8 +304,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        MemberTypeInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, MemberTypeInfo *I) {
   switch (ID) {
   case MEMBER_TYPE_NAME:
     return decodeRecord(R, I->Name, Blob);
@@ -315,8 +319,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        CommentInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, CommentInfo *I) {
   switch (ID) {
   case COMMENT_KIND:
     return decodeRecord(R, I->Kind, Blob);
@@ -346,8 +350,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        Reference *I, FieldId &F) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, Reference *I, FieldId &F) 
{
   switch (ID) {
   case REFERENCE_USR:
     return decodeRecord(R, I->USR, Blob);
@@ -367,30 +371,31 @@ llvm::Error parseRecord(const Record &R, unsigned ID, 
llvm::StringRef Blob,
   }
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        TemplateInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, TemplateInfo *I) {
   // Currently there are no child records of TemplateInfo (only child blocks).
   return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                  "invalid field for TemplateParamInfo");
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        TemplateSpecializationInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob,
+                               TemplateSpecializationInfo *I) {
   if (ID == TEMPLATE_SPECIALIZATION_OF)
     return decodeRecord(R, I->SpecializationOf, Blob);
   return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                  "invalid field for TemplateParamInfo");
 }
 
-llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
-                        TemplateParamInfo *I) {
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+                               llvm::StringRef Blob, TemplateParamInfo *I) {
   if (ID == TEMPLATE_PARAM_CONTENTS)
     return decodeRecord(R, I->Contents, Blob);
   return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                  "invalid field for TemplateParamInfo");
 }
 
-template <typename T> llvm::Expected<CommentInfo *> getCommentInfo(T I) {
+template <typename T> static llvm::Expected<CommentInfo *> getCommentInfo(T I) 
{
   return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                  "invalid type cannot contain CommentInfo");
 }
@@ -437,7 +442,7 @@ llvm::Expected<CommentInfo *> 
getCommentInfo(std::unique_ptr<CommentInfo> &I) {
 // the parent block to set it. The template specializations define what to do
 // for each supported parent block.
 template <typename T, typename TTypeInfo>
-llvm::Error addTypeInfo(T I, TTypeInfo &&TI) {
+static llvm::Error addTypeInfo(T I, TTypeInfo &&TI) {
   return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                  "invalid type cannot contain TypeInfo");
 }
@@ -472,7 +477,8 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I, 
TypeInfo &&T) {
   return llvm::Error::success();
 }
 
-template <typename T> llvm::Error addReference(T I, Reference &&R, FieldId F) {
+template <typename T>
+static llvm::Error addReference(T I, Reference &&R, FieldId F) {
   return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                  "invalid type cannot contain Reference");
 }
@@ -588,7 +594,7 @@ template <> llvm::Error addReference(RecordInfo *I, 
Reference &&R, FieldId F) {
 }
 
 template <typename T, typename ChildInfoType>
-void addChild(T I, ChildInfoType &&R) {
+static void addChild(T I, ChildInfoType &&R) {
   llvm::errs() << "invalid child type for info";
   exit(1);
 }
@@ -629,7 +635,7 @@ template <> void addChild(BaseRecordInfo *I, FunctionInfo 
&&R) {
 // TemplateParam children. These go into either a TemplateInfo (for template
 // parameters) or TemplateSpecializationInfo (for the specialization's
 // parameters).
-template <typename T> void addTemplateParam(T I, TemplateParamInfo &&P) {
+template <typename T> static void addTemplateParam(T I, TemplateParamInfo &&P) 
{
   llvm::errs() << "invalid container for template parameter";
   exit(1);
 }
@@ -642,7 +648,7 @@ void addTemplateParam(TemplateSpecializationInfo *I, 
TemplateParamInfo &&P) {
 }
 
 // Template info. These apply to either records or functions.
-template <typename T> void addTemplate(T I, TemplateInfo &&P) {
+template <typename T> static void addTemplate(T I, TemplateInfo &&P) {
   llvm::errs() << "invalid container for template info";
   exit(1);
 }
@@ -655,7 +661,7 @@ template <> void addTemplate(FunctionInfo *I, TemplateInfo 
&&P) {
 
 // Template specializations go only into template records.
 template <typename T>
-void addTemplateSpecialization(T I, TemplateSpecializationInfo &&TSI) {
+static void addTemplateSpecialization(T I, TemplateSpecializationInfo &&TSI) {
   llvm::errs() << "invalid container for template specialization info";
   exit(1);
 }
diff --git a/clang-tools-extra/clang-doc/Generators.cpp 
b/clang-tools-extra/clang-doc/Generators.cpp
index a3986b66f3c74..4bb5366800f7f 100644
--- a/clang-tools-extra/clang-doc/Generators.cpp
+++ b/clang-tools-extra/clang-doc/Generators.cpp
@@ -97,9 +97,6 @@ void Generator::addInfoToIndex(Index &Idx, const doc::Info 
*Info) {
 
 // This anchor is used to force the linker to link in the generated object file
 // and thus register the generators.
-extern volatile int YAMLGeneratorAnchorSource;
-extern volatile int MDGeneratorAnchorSource;
-extern volatile int HTMLGeneratorAnchorSource;
 static int LLVM_ATTRIBUTE_UNUSED YAMLGeneratorAnchorDest =
     YAMLGeneratorAnchorSource;
 static int LLVM_ATTRIBUTE_UNUSED MDGeneratorAnchorDest =
diff --git a/clang-tools-extra/clang-doc/Generators.h 
b/clang-tools-extra/clang-doc/Generators.h
index d62d7faa9a69f..2e71890389256 100644
--- a/clang-tools-extra/clang-doc/Generators.h
+++ b/clang-tools-extra/clang-doc/Generators.h
@@ -52,6 +52,12 @@ findGeneratorByName(llvm::StringRef Format);
 
 std::string getTagType(TagTypeKind AS);
 
+// This anchor is used to force the linker to link in the generated object file
+// and thus register the generators.
+extern volatile int YAMLGeneratorAnchorSource;
+extern volatile int MDGeneratorAnchorSource;
+extern volatile int HTMLGeneratorAnchorSource;
+
 } // namespace doc
 } // namespace clang
 
diff --git a/clang-tools-extra/clang-doc/Mapper.cpp 
b/clang-tools-extra/clang-doc/Mapper.cpp
index 950cdf55d4a63..3ccf026958c00 100644
--- a/clang-tools-extra/clang-doc/Mapper.cpp
+++ b/clang-tools-extra/clang-doc/Mapper.cpp
@@ -21,7 +21,7 @@ namespace doc {
 static llvm::StringSet<> USRVisited;
 static llvm::sys::SmartMutex<true> USRVisitedGuard;
 
-template <typename T> bool isTypedefAnonRecord(const T *D) {
+template <typename T> static bool isTypedefAnonRecord(const T *D) {
   if (const auto *C = dyn_cast<CXXRecordDecl>(D)) {
     return C->getTypedefNameForAnonDecl();
   }
diff --git a/clang-tools-extra/clang-doc/Serialize.cpp 
b/clang-tools-extra/clang-doc/Serialize.cpp
index 837ecdd9f1278..1dcccf3c3c2ab 100644
--- a/clang-tools-extra/clang-doc/Serialize.cpp
+++ b/clang-tools-extra/clang-doc/Serialize.cpp
@@ -48,7 +48,7 @@ static void populateMemberTypeInfo(RecordInfo &I, 
AccessSpecifier &Access,
 //
 // }
 // }
-llvm::SmallString<128>
+static llvm::SmallString<128>
 getInfoRelativePath(const llvm::SmallVectorImpl<doc::Reference> &Namespaces) {
   llvm::SmallString<128> Path;
   for (auto R = Namespaces.rbegin(), E = Namespaces.rend(); R != E; ++R)
@@ -56,7 +56,7 @@ getInfoRelativePath(const 
llvm::SmallVectorImpl<doc::Reference> &Namespaces) {
   return Path;
 }
 
-llvm::SmallString<128> getInfoRelativePath(const Decl *D) {
+static llvm::SmallString<128> getInfoRelativePath(const Decl *D) {
   llvm::SmallVector<Reference, 4> Namespaces;
   // The third arg in populateParentNamespaces is a boolean passed by 
reference,
   // its value is not relevant in here so it's not used anywhere besides the
@@ -185,7 +185,7 @@ std::string ClangDocCommentVisitor::getCommandName(unsigned 
CommandID) const {
 
 // Serializing functions.
 
-std::string getSourceCode(const Decl *D, const SourceRange &R) {
+static std::string getSourceCode(const Decl *D, const SourceRange &R) {
   return Lexer::getSourceText(CharSourceRange::getTokenRange(R),
                               D->getASTContext().getSourceManager(),
                               D->getASTContext().getLangOpts())
@@ -239,7 +239,8 @@ static RecordDecl *getRecordDeclForType(const QualType &T) {
   return nullptr;
 }
 
-TypeInfo getTypeInfoForType(const QualType &T, const PrintingPolicy &Policy) {
+static TypeInfo getTypeInfoForType(const QualType &T,
+                                   const PrintingPolicy &Policy) {
   const TagDecl *TD = getTagDeclForType(T);
   if (!TD)
     return TypeInfo(Reference(SymbolID(), T.getAsString(Policy)));
@@ -319,7 +320,7 @@ static void InsertChild(ScopeChildren &Scope, TypedefInfo 
Info) {
 // parameter. Since each variant is used once, it's not worth having a more
 // elaborate system to automatically deduce this information.
 template <typename ChildType>
-std::unique_ptr<Info> MakeAndInsertIntoParent(ChildType Child) {
+static std::unique_ptr<Info> MakeAndInsertIntoParent(ChildType Child) {
   if (Child.Namespace.empty()) {
     // Insert into unnamed parent namespace.
     auto ParentNS = std::make_unique<NamespaceInfo>();
@@ -496,8 +497,9 @@ populateParentNamespaces(llvm::SmallVector<Reference, 4> 
&Namespaces,
                             InfoType::IT_namespace);
 }
 
-void PopulateTemplateParameters(std::optional<TemplateInfo> &TemplateInfo,
-                                const clang::Decl *D) {
+static void
+PopulateTemplateParameters(std::optional<TemplateInfo> &TemplateInfo,
+                           const clang::Decl *D) {
   if (const TemplateParameterList *ParamList =
           D->getDescribedTemplateParams()) {
     if (!TemplateInfo) {
@@ -510,8 +512,8 @@ void PopulateTemplateParameters(std::optional<TemplateInfo> 
&TemplateInfo,
   }
 }
 
-TemplateParamInfo TemplateArgumentToInfo(const clang::Decl *D,
-                                         const TemplateArgument &Arg) {
+static TemplateParamInfo TemplateArgumentToInfo(const clang::Decl *D,
+                                                const TemplateArgument &Arg) {
   // The TemplateArgument's pretty printing handles all the normal cases
   // well enough for our requirements.
   std::string Str;
diff --git a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp 
b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
index c58d2060bc1e7..8e8f7053a8f87 100644
--- a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
+++ b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
@@ -127,7 +127,7 @@ static llvm::cl::opt<OutputFormatTy>
                llvm::cl::init(OutputFormatTy::yaml),
                llvm::cl::cat(ClangDocCategory));
 
-std::string getFormatString() {
+static std::string getFormatString() {
   switch (FormatEnum) {
   case OutputFormatTy::yaml:
     return "yaml";
@@ -144,11 +144,11 @@ std::string getFormatString() {
 // GetMainExecutable (since some platforms don't support taking the
 // address of main, and some platforms can't implement GetMainExecutable
 // without being given the address of a function in the main executable).
-std::string getExecutablePath(const char *Argv0, void *MainAddr) {
+static std::string getExecutablePath(const char *Argv0, void *MainAddr) {
   return llvm::sys::fs::getMainExecutable(Argv0, MainAddr);
 }
 
-llvm::Error getAssetFiles(clang::doc::ClangDocContext &CDCtx) {
+static llvm::Error getAssetFiles(clang::doc::ClangDocContext &CDCtx) {
   using DirIt = llvm::sys::fs::directory_iterator;
   std::error_code FileErr;
   llvm::SmallString<128> FilePath(UserAssetPath);
@@ -168,8 +168,8 @@ llvm::Error getAssetFiles(clang::doc::ClangDocContext 
&CDCtx) {
   return llvm::Error::success();
 }
 
-llvm::Error getDefaultAssetFiles(const char *Argv0,
-                                 clang::doc::ClangDocContext &CDCtx) {
+static llvm::Error getDefaultAssetFiles(const char *Argv0,
+                                        clang::doc::ClangDocContext &CDCtx) {
   void *MainAddr = (void *)(intptr_t)getExecutablePath;
   std::string ClangDocPath = getExecutablePath(Argv0, MainAddr);
   llvm::SmallString<128> NativeClangDocPath;
@@ -204,8 +204,8 @@ llvm::Error getDefaultAssetFiles(const char *Argv0,
   return llvm::Error::success();
 }
 
-llvm::Error getHtmlAssetFiles(const char *Argv0,
-                              clang::doc::ClangDocContext &CDCtx) {
+static llvm::Error getHtmlAssetFiles(const char *Argv0,
+                                     clang::doc::ClangDocContext &CDCtx) {
   if (!UserAssetPath.empty() &&
       !llvm::sys::fs::is_directory(std::string(UserAssetPath)))
     llvm::outs() << "Asset path supply is not a directory: " << UserAssetPath
@@ -217,7 +217,8 @@ llvm::Error getHtmlAssetFiles(const char *Argv0,
 
 /// Make the output of clang-doc deterministic by sorting the children of
 /// namespaces and records.
-void sortUsrToInfo(llvm::StringMap<std::unique_ptr<doc::Info>> &USRToInfo) {
+static void
+sortUsrToInfo(llvm::StringMap<std::unique_ptr<doc::Info>> &USRToInfo) {
   for (auto &I : USRToInfo) {
     auto &Info = I.second;
     if (Info->IT == doc::InfoType::IT_namespace) {

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to