https://github.com/ilovepi updated https://github.com/llvm/llvm-project/pull/190425
>From 766ae30e13b6a6ae02e7920ae228386cc540b072 Mon Sep 17 00:00:00 2001 From: Paul Kirth <[email protected]> Date: Fri, 3 Apr 2026 21:20:31 +0000 Subject: [PATCH] [clang-doc] Update type aliases Many of the type aliases we introduced to simplify migration to arena allocation are no longer relevant after completing the migration. We can use more relevant names and remove dead aliases. --- clang-tools-extra/clang-doc/BitcodeReader.cpp | 6 +-- clang-tools-extra/clang-doc/BitcodeReader.h | 2 +- clang-tools-extra/clang-doc/JSONGenerator.cpp | 2 +- clang-tools-extra/clang-doc/MDGenerator.cpp | 2 +- .../clang-doc/Representation.cpp | 8 ++-- clang-tools-extra/clang-doc/Representation.h | 38 +++++++------------ .../benchmarks/ClangDocBenchmark.cpp | 8 ++-- .../unittests/clang-doc/BitcodeTest.cpp | 18 ++++----- .../unittests/clang-doc/ClangDocTest.cpp | 8 ++-- .../unittests/clang-doc/ClangDocTest.h | 6 +-- .../unittests/clang-doc/MergeTest.cpp | 8 ++-- 11 files changed, 47 insertions(+), 59 deletions(-) diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp b/clang-tools-extra/clang-doc/BitcodeReader.cpp index c5e848ae4c28d..6868eb533d75c 100644 --- a/clang-tools-extra/clang-doc/BitcodeReader.cpp +++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp @@ -129,7 +129,7 @@ static llvm::Error decodeRecord(const Record &R, FieldId &Field, "invalid value for FieldId"); } -static llvm::Error decodeRecord(const Record &R, OwningVec<Location> &Field, +static llvm::Error decodeRecord(const Record &R, DocList<Location> &Field, llvm::StringRef Blob) { if (R[0] > INT_MAX) return llvm::createStringError(llvm::inconvertibleErrorCode(), @@ -1442,8 +1442,8 @@ ClangDocBitcodeReader::readBlockToInfo(unsigned ID) { } // Entry point -llvm::Expected<OwningPtrArray<Info>> ClangDocBitcodeReader::readBitcode() { - OwningPtrArray<Info> Infos; +llvm::Expected<std::vector<Info *>> ClangDocBitcodeReader::readBitcode() { + std::vector<Info *> Infos; if (auto Err = validateStream()) return std::move(Err); diff --git a/clang-tools-extra/clang-doc/BitcodeReader.h b/clang-tools-extra/clang-doc/BitcodeReader.h index 4585cb454f408..33a4172b47d4b 100644 --- a/clang-tools-extra/clang-doc/BitcodeReader.h +++ b/clang-tools-extra/clang-doc/BitcodeReader.h @@ -31,7 +31,7 @@ class ClangDocBitcodeReader { : Stream(Stream), Diags(Diags) {} // Main entry point, calls readBlock to read each block in the given stream. - llvm::Expected<OwningPtrArray<Info>> readBitcode(); + llvm::Expected<std::vector<Info *>> readBitcode(); private: enum class Cursor { BadBlock = 1, Record, BlockEnd, BlockBegin }; diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp index 4854c6114b760..821fb1168688d 100644 --- a/clang-tools-extra/clang-doc/JSONGenerator.cpp +++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp @@ -384,7 +384,7 @@ void JSONGenerator::generateContext(const Info &I, Object &Obj) { ContextArrayRef.back().getAsObject()->insert({"End", true}); } -static void serializeDescription(const OwningVec<CommentInfo> &Description, +static void serializeDescription(const DocList<CommentInfo> &Description, json::Object &Obj, StringRef Key = "") { if (Description.empty()) return; diff --git a/clang-tools-extra/clang-doc/MDGenerator.cpp b/clang-tools-extra/clang-doc/MDGenerator.cpp index 9ccb7a8ccd633..139e50385f707 100644 --- a/clang-tools-extra/clang-doc/MDGenerator.cpp +++ b/clang-tools-extra/clang-doc/MDGenerator.cpp @@ -81,7 +81,7 @@ class TableCommentWriter { public: explicit TableCommentWriter(llvm::raw_ostream &OS) : OS(OS) {} - void write(const OwningVec<CommentInfo> &Comments) { + void write(const DocList<CommentInfo> &Comments) { for (const auto &C : Comments) writeTableSafeComment(C); diff --git a/clang-tools-extra/clang-doc/Representation.cpp b/clang-tools-extra/clang-doc/Representation.cpp index 50c5f9bb1d071..7ae323a267bdd 100644 --- a/clang-tools-extra/clang-doc/Representation.cpp +++ b/clang-tools-extra/clang-doc/Representation.cpp @@ -94,7 +94,7 @@ llvm::StringRef commentKindToString(CommentKind Kind) { const SymbolID EmptySID = SymbolID(); template <typename T> -static llvm::Expected<OwnedPtr<Info>> reduce(OwningPtrArray<Info> &Values) { +static llvm::Expected<Info *> reduce(SmallVectorImpl<Info *> &Values) { if (Values.empty() || !Values[0]) return llvm::createStringError(llvm::inconvertibleErrorCode(), "no value to reduce"); @@ -161,8 +161,8 @@ static void mergeUnkeyed(Container &Target, Container &&Source) { } template <> -void mergeUnkeyed<OwningVec<CommentInfo>>(OwningVec<CommentInfo> &Target, - OwningVec<CommentInfo> &&Source) { +void mergeUnkeyed<DocList<CommentInfo>>(DocList<CommentInfo> &Target, + DocList<CommentInfo> &&Source) { while (!Source.empty()) { auto &Item = Source.front(); Source.pop_front(); @@ -255,7 +255,7 @@ llvm::Error mergeSingleInfo(doc::OwnedPtr<doc::Info> &Reduced, } // Dispatch function. -llvm::Expected<OwnedPtr<Info>> mergeInfos(OwningPtrArray<Info> &Values) { +llvm::Expected<Info *> mergeInfos(SmallVectorImpl<Info *> &Values) { if (Values.empty() || !Values[0]) return llvm::createStringError(llvm::inconvertibleErrorCode(), "no info values to merge"); diff --git a/clang-tools-extra/clang-doc/Representation.h b/clang-tools-extra/clang-doc/Representation.h index e02de5e09b75a..e63482f2b13d0 100644 --- a/clang-tools-extra/clang-doc/Representation.h +++ b/clang-tools-extra/clang-doc/Representation.h @@ -108,21 +108,9 @@ llvm::ArrayRef<T> deepCopyArray(llvm::ArrayRef<T> V, // to be eventually transitioned to bare pointers in an arena. template <typename T> using OwnedPtr = T *; -// An abstraction for vectors that are populated and read sequentially. -// To be eventually transitioned to llvm::ArrayRef for arena storage. -template <typename T> using OwningArray = std::vector<T>; - // An abstraction for lists that are dynamically managed (inserted/removed). // To be eventually transitioned to llvm::simple_ilist. -template <typename T> using OwningVec = llvm::simple_ilist<T>; - -// An abstraction for dynamic lists of owned pointers. -// To be eventually transitioned to llvm::simple_ilist<T*> or similar. -template <typename T> using OwningPtrVec = std::vector<OwnedPtr<T>>; - -// An abstraction for arrays of owned pointers. -// To be eventually transitioned to arena-allocated arrays of bare pointers. -template <typename T> using OwningPtrArray = std::vector<OwnedPtr<T>>; +template <typename T> using DocList = llvm::simple_ilist<T>; // A helper function to create an owned pointer, abstracting away the memory // allocation mechanism. @@ -317,13 +305,13 @@ struct ScopeChildren { // // Namespaces are not syntactically valid as children of records, but making // this general for all possible container types reduces code complexity. - OwningVec<Reference> Namespaces; - OwningVec<Reference> Records; - OwningVec<FunctionInfo> Functions; - OwningVec<EnumInfo> Enums; - OwningVec<TypedefInfo> Typedefs; - OwningVec<ConceptInfo> Concepts; - OwningVec<VarInfo> Variables; + DocList<Reference> Namespaces; + DocList<Reference> Records; + DocList<FunctionInfo> Functions; + DocList<EnumInfo> Enums; + DocList<TypedefInfo> Typedefs; + DocList<ConceptInfo> Concepts; + DocList<VarInfo> Variables; void sort(); }; @@ -433,7 +421,7 @@ struct MemberTypeInfo : public FieldTypeInfo { Other.Description.begin(), Other.Description.end()); } - OwningVec<CommentInfo> Description; + DocList<CommentInfo> Description; // Access level associated with this info (public, protected, private, none). // AS_public is set as default because the bitcode writer requires the enum @@ -518,7 +506,7 @@ struct Info { InfoType IT = InfoType::IT_default; // Comment description of this decl. - OwningVec<CommentInfo> Description; + DocList<CommentInfo> Description; }; inline Context::Context(const Info &I) @@ -560,7 +548,7 @@ struct SymbolInfo : public Info { } std::optional<Location> DefLoc; // Location where this decl is defined. - OwningVec<Location> Loc; // Locations where this decl is declared. + DocList<Location> Loc; // Locations where this decl is declared. StringRef MangledName; bool IsStatic = false; }; @@ -719,7 +707,7 @@ struct EnumValueInfo { StringRef ValueExpr; /// Comment description of this field. - OwningVec<CommentInfo> Description; + DocList<CommentInfo> Description; }; // TODO: Expand to allow for documenting templating. @@ -775,7 +763,7 @@ struct Index : public Reference { // A standalone function to call to merge a vector of infos into one. // This assumes that all infos in the vector are of the same type, and will fail // if they are different. -llvm::Expected<OwnedPtr<Info>> mergeInfos(OwningPtrArray<Info> &Values); +llvm::Expected<Info *> mergeInfos(SmallVectorImpl<Info *> &Values); // Merges a single new Info into an existing Reduced Info (allocating it if // needed). diff --git a/clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp b/clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp index c610c57722649..3a0f7561a4740 100644 --- a/clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp +++ b/clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp @@ -117,13 +117,13 @@ static void BM_MergeInfos_Scale(benchmark::State &State) { for (auto _ : State) { State.PauseTiming(); - OwningPtrArray<Info> Input; + SmallVector<Info *> Input; Input.reserve(State.range(0)); - for (int i = 0; i < State.range(0); ++i) { - auto I = allocatePtr<FunctionInfo>(); + for (int Idx = 0; Idx < State.range(0); ++Idx) { + auto *I = allocatePtr<FunctionInfo>(); I->Name = "f"; I->USR = USR; - I->DefLoc = Location(10, i, "test.cpp"); + I->DefLoc = Location(10, Idx, "test.cpp"); Input.push_back(std::move(I)); } State.ResumeTiming(); diff --git a/clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp b/clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp index 81de4ff2f6381..01b87d3a22e3a 100644 --- a/clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp +++ b/clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp @@ -51,8 +51,8 @@ static std::string writeInfo(Info *I, DiagnosticsEngine &Diags) { } } -static OwningPtrVec<Info> readInfo(StringRef Bitcode, size_t NumInfos, - DiagnosticsEngine &Diags) { +static std::vector<Info *> readInfo(StringRef Bitcode, size_t NumInfos, + DiagnosticsEngine &Diags) { llvm::BitstreamCursor Stream(Bitcode); doc::ClangDocBitcodeReader Reader(Stream, Diags); auto Infos = Reader.readBitcode(); @@ -81,7 +81,7 @@ TEST_F(BitcodeTest, emitNamespaceInfoBitcode) { std::string WriteResult = writeInfo(&I, this->Diags); EXPECT_TRUE(WriteResult.size() > 0); - OwningPtrVec<Info> ReadResults = readInfo(WriteResult, 1, this->Diags); + std::vector<Info *> ReadResults = readInfo(WriteResult, 1, this->Diags); CheckNamespaceInfo(&I, InfoAsNamespace(ReadResults[0])); } @@ -134,7 +134,7 @@ TEST_F(BitcodeTest, emitRecordInfoBitcode) { std::string WriteResult = writeInfo(&I, this->Diags); EXPECT_TRUE(WriteResult.size() > 0); - OwningPtrVec<Info> ReadResults = readInfo(WriteResult, 1, this->Diags); + std::vector<Info *> ReadResults = readInfo(WriteResult, 1, this->Diags); CheckRecordInfo(&I, InfoAsRecord(ReadResults[0])); } @@ -158,7 +158,7 @@ TEST_F(BitcodeTest, emitFunctionInfoBitcode) { std::string WriteResult = writeInfo(&I, this->Diags); EXPECT_TRUE(WriteResult.size() > 0); - OwningPtrVec<Info> ReadResults = readInfo(WriteResult, 1, this->Diags); + std::vector<Info *> ReadResults = readInfo(WriteResult, 1, this->Diags); CheckFunctionInfo(&I, InfoAsFunction(ReadResults[0])); } @@ -184,7 +184,7 @@ TEST_F(BitcodeTest, emitMethodInfoBitcode) { std::string WriteResult = writeInfo(&I, this->Diags); EXPECT_TRUE(WriteResult.size() > 0); - OwningPtrVec<Info> ReadResults = readInfo(WriteResult, 1, this->Diags); + std::vector<Info *> ReadResults = readInfo(WriteResult, 1, this->Diags); CheckFunctionInfo(&I, InfoAsFunction(ReadResults[0])); } @@ -206,7 +206,7 @@ TEST_F(BitcodeTest, emitEnumInfoBitcode) { std::string WriteResult = writeInfo(&I, this->Diags); EXPECT_TRUE(WriteResult.size() > 0); - OwningPtrVec<Info> ReadResults = readInfo(WriteResult, 1, this->Diags); + std::vector<Info *> ReadResults = readInfo(WriteResult, 1, this->Diags); CheckEnumInfo(&I, InfoAsEnum(ReadResults[0])); } @@ -230,7 +230,7 @@ TEST_F(BitcodeTest, emitTypedefInfoBitcode) { std::string WriteResult = writeInfo(&I, this->Diags); EXPECT_TRUE(WriteResult.size() > 0); - OwningPtrVec<Info> ReadResults = readInfo(WriteResult, 1, this->Diags); + std::vector<Info *> ReadResults = readInfo(WriteResult, 1, this->Diags); CheckTypedefInfo(&I, InfoAsTypedef(ReadResults[0])); @@ -328,7 +328,7 @@ TEST_F(BitcodeTest, emitInfoWithCommentBitcode) { std::string WriteResult = writeInfo(&F, this->Diags); EXPECT_TRUE(WriteResult.size() > 0); - OwningPtrVec<Info> ReadResults = readInfo(WriteResult, 1, this->Diags); + std::vector<Info *> ReadResults = readInfo(WriteResult, 1, this->Diags); CheckFunctionInfo(&F, InfoAsFunction(ReadResults[0])); } diff --git a/clang-tools-extra/unittests/clang-doc/ClangDocTest.cpp b/clang-tools-extra/unittests/clang-doc/ClangDocTest.cpp index 2e5466c172a18..a47c335e35773 100644 --- a/clang-tools-extra/unittests/clang-doc/ClangDocTest.cpp +++ b/clang-tools-extra/unittests/clang-doc/ClangDocTest.cpp @@ -56,8 +56,8 @@ TypedefInfo *InfoAsTypedef(Info *I) { void CheckCommentInfo(ArrayRef<CommentInfo> Expected, ArrayRef<CommentInfo> Actual); -void CheckCommentInfo(const OwningVec<CommentInfo> &Expected, - const OwningVec<CommentInfo> &Actual); +void CheckCommentInfo(const DocList<CommentInfo> &Expected, + const DocList<CommentInfo> &Actual); void CheckCommentInfo(const CommentInfo &Expected, const CommentInfo &Actual) { EXPECT_EQ(Expected.Kind, Actual.Kind); @@ -96,8 +96,8 @@ void CheckCommentInfo(ArrayRef<CommentInfo> Expected, EXPECT_TRUE(ItE == Expected.end() && ItA == Actual.end()); } -void CheckCommentInfo(const OwningVec<CommentInfo> &Expected, - const OwningVec<CommentInfo> &Actual) { +void CheckCommentInfo(const DocList<CommentInfo> &Expected, + const DocList<CommentInfo> &Actual) { auto ItE = Expected.begin(); auto ItA = Actual.begin(); while (ItE != Expected.end() && ItA != Actual.end()) { diff --git a/clang-tools-extra/unittests/clang-doc/ClangDocTest.h b/clang-tools-extra/unittests/clang-doc/ClangDocTest.h index 1525b1ed382ce..bc96b3070a0bb 100644 --- a/clang-tools-extra/unittests/clang-doc/ClangDocTest.h +++ b/clang-tools-extra/unittests/clang-doc/ClangDocTest.h @@ -19,7 +19,7 @@ namespace clang { namespace doc { -using EmittedInfoList = OwningPtrVec<Info>; +using EmittedInfoList = std::vector<Info *>; static const SymbolID EmptySID = SymbolID(); static const SymbolID NonEmptySID = @@ -33,8 +33,8 @@ TypedefInfo *InfoAsTypedef(Info *I); void CheckCommentInfo(ArrayRef<CommentInfo> Expected, ArrayRef<CommentInfo> Actual); -void CheckCommentInfo(const OwningVec<CommentInfo> &Expected, - const OwningVec<CommentInfo> &Actual); +void CheckCommentInfo(const DocList<CommentInfo> &Expected, + const DocList<CommentInfo> &Actual); void CheckReference(const Reference &Expected, const Reference &Actual); void CheckTypeInfo(const TypeInfo *Expected, const TypeInfo *Actual); void CheckFieldTypeInfo(const FieldTypeInfo *Expected, diff --git a/clang-tools-extra/unittests/clang-doc/MergeTest.cpp b/clang-tools-extra/unittests/clang-doc/MergeTest.cpp index 50374743681e3..f77fbc8d74998 100644 --- a/clang-tools-extra/unittests/clang-doc/MergeTest.cpp +++ b/clang-tools-extra/unittests/clang-doc/MergeTest.cpp @@ -54,7 +54,7 @@ TEST_F(MergeTest, mergeNamespaceInfos) { E2.Name = "TwoEnum"; Two.Children.Enums.push_back(E2); - OwningPtrVec<Info> Infos; + SmallVector<Info *> Infos; Infos.push_back(&One); Infos.push_back(&Two); @@ -151,7 +151,7 @@ TEST_F(MergeTest, mergeRecordInfos) { E2.Name = "TwoEnum"; Two.Children.Enums.push_back(E2); - OwningPtrVec<Info> Infos; + SmallVector<Info *> Infos; Infos.push_back(&One); Infos.push_back(&Two); @@ -243,7 +243,7 @@ TEST_F(MergeTest, mergeFunctionInfos) { CommentInfo TopTwo(CommentKind::CK_FullComment, TwoPara); Two.Description.push_back(TopTwo); - OwningPtrVec<Info> Infos; + SmallVector<Info *> Infos; Infos.push_back(&One); Infos.push_back(&Two); @@ -298,7 +298,7 @@ TEST_F(MergeTest, mergeEnumInfos) { EnumValueInfo EV2[] = {EnumValueInfo("X"), EnumValueInfo("Y")}; Two.Members = llvm::ArrayRef(EV2); - OwningPtrVec<Info> Infos; + SmallVector<Info *> Infos; Infos.push_back(&One); Infos.push_back(&Two); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
