Author: Balázs Benics Date: 2026-02-10T08:38:33Z New Revision: 8ccfa9a52d42af623932bc136c6d267e0ec38ab7
URL: https://github.com/llvm/llvm-project/commit/8ccfa9a52d42af623932bc136c6d267e0ec38ab7 DIFF: https://github.com/llvm/llvm-project/commit/8ccfa9a52d42af623932bc136c6d267e0ec38ab7.diff LOG: [clang][ssaf] Make SerializationFormat llvm-RTTI friendly (#180616) Added: Modified: clang/include/clang/Analysis/Scalable/Serialization/SerializationFormat.h clang/lib/Analysis/Scalable/Serialization/SerializationFormat.cpp clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.cpp clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.h Removed: ################################################################################ diff --git a/clang/include/clang/Analysis/Scalable/Serialization/SerializationFormat.h b/clang/include/clang/Analysis/Scalable/Serialization/SerializationFormat.h index d648ba60fc160..c7438e2859da0 100644 --- a/clang/include/clang/Analysis/Scalable/Serialization/SerializationFormat.h +++ b/clang/include/clang/Analysis/Scalable/Serialization/SerializationFormat.h @@ -19,6 +19,7 @@ #include "clang/Analysis/Scalable/TUSummary/TUSummary.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringRef.h" +#include "llvm/Support/ExtensibleRTTI.h" #include "llvm/Support/VirtualFileSystem.h" #include <vector> @@ -30,7 +31,8 @@ class EntityName; class EntitySummary; /// Abstract base class for serialization formats. -class SerializationFormat { +class SerializationFormat + : public llvm::RTTIExtends<SerializationFormat, llvm::RTTIRoot> { protected: // Helpers providing access to implementation details of basic data structures // for efficient serialization/deserialization. @@ -61,6 +63,8 @@ class SerializationFormat { virtual void writeTUSummary(const TUSummary &Summary, llvm::StringRef OutputDir) = 0; + static char ID; // For RTTIExtends. + protected: llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS; }; diff --git a/clang/lib/Analysis/Scalable/Serialization/SerializationFormat.cpp b/clang/lib/Analysis/Scalable/Serialization/SerializationFormat.cpp index 224ad0c40cc2d..1d62ea837616f 100644 --- a/clang/lib/Analysis/Scalable/Serialization/SerializationFormat.cpp +++ b/clang/lib/Analysis/Scalable/Serialization/SerializationFormat.cpp @@ -72,3 +72,5 @@ SerializationFormat::getData(const TUSummary &S) { decltype(TUSummary::Data) &SerializationFormat::getData(TUSummary &S) { return S.Data; } + +char SerializationFormat::ID = 0; diff --git a/clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.cpp b/clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.cpp index 44904d53d2412..03328e8bd9742 100644 --- a/clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.cpp +++ b/clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.cpp @@ -26,9 +26,11 @@ using namespace clang; using namespace ssaf; +char MockSerializationFormat::ID = 0; + MockSerializationFormat::MockSerializationFormat( llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS) - : SerializationFormat(FS) { + : llvm::RTTIExtends<MockSerializationFormat, SerializationFormat>(FS) { for (const auto &FormatInfoEntry : llvm::Registry<FormatInfo>::entries()) { std::unique_ptr<FormatInfo> Info = FormatInfoEntry.instantiate(); bool Inserted = FormatInfos.try_emplace(Info->ForSummary, *Info).second; diff --git a/clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.h b/clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.h index a106e53fc20ac..25fb2f3b20551 100644 --- a/clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.h +++ b/clang/unittests/Analysis/Scalable/Registries/MockSerializationFormat.h @@ -12,11 +12,13 @@ #include "clang/Analysis/Scalable/Model/SummaryName.h" #include "clang/Analysis/Scalable/Serialization/SerializationFormat.h" #include "llvm/ADT/STLFunctionalExtras.h" +#include "llvm/Support/ExtensibleRTTI.h" #include <string> namespace clang::ssaf { -class MockSerializationFormat final : public SerializationFormat { +class MockSerializationFormat final + : public llvm::RTTIExtends<MockSerializationFormat, SerializationFormat> { public: explicit MockSerializationFormat( llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS); @@ -37,6 +39,8 @@ class MockSerializationFormat final : public SerializationFormat { using FormatInfo = FormatInfoEntry<SerializerFn, DeserializerFn>; std::map<SummaryName, FormatInfo> FormatInfos; + + static char ID; }; } // namespace clang::ssaf _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
