[clang] 8ccfa9a - [clang][ssaf] Make SerializationFormat llvm-RTTI friendly (#180616)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 10 00:38:38 PST 2026
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
More information about the cfe-commits
mailing list