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

Reply via email to