[clang] 2398769 - [clang][ssaf] Make EntitySummary llvm-RTTI friendly (#180613)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 10 00:38:09 PST 2026
Author: Balázs Benics
Date: 2026-02-10T08:38:04Z
New Revision: 23987694127324951469a2134d3e5f56fa072ff9
URL: https://github.com/llvm/llvm-project/commit/23987694127324951469a2134d3e5f56fa072ff9
DIFF: https://github.com/llvm/llvm-project/commit/23987694127324951469a2134d3e5f56fa072ff9.diff
LOG: [clang][ssaf] Make EntitySummary llvm-RTTI friendly (#180613)
Added:
clang/lib/Analysis/Scalable/TUSummary/EntitySummary.cpp
Modified:
clang/include/clang/Analysis/Scalable/TUSummary/EntitySummary.h
clang/lib/Analysis/Scalable/CMakeLists.txt
clang/unittests/Analysis/Scalable/Registries/FancyAnalysisData.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Analysis/Scalable/TUSummary/EntitySummary.h b/clang/include/clang/Analysis/Scalable/TUSummary/EntitySummary.h
index 0691b230c9483..b5b2fe128d0c4 100644
--- a/clang/include/clang/Analysis/Scalable/TUSummary/EntitySummary.h
+++ b/clang/include/clang/Analysis/Scalable/TUSummary/EntitySummary.h
@@ -10,21 +10,17 @@
#define LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_ENTITYSUMMARY_H
#include "clang/Analysis/Scalable/Model/SummaryName.h"
+#include "llvm/Support/ExtensibleRTTI.h"
namespace clang::ssaf {
/// Base class for analysis-specific summary data.
-class EntitySummary {
-private:
- SummaryName Summary;
-
-protected:
- EntitySummary(SummaryName Summary) : Summary(std::move(Summary)) {}
-
+class EntitySummary : public llvm::RTTIExtends<EntitySummary, llvm::RTTIRoot> {
public:
- SummaryName getSummaryName() const { return Summary; }
-
virtual ~EntitySummary() = default;
+ virtual SummaryName getSummaryName() const = 0;
+
+ static char ID; // For RTTIExtends.
};
} // namespace clang::ssaf
diff --git a/clang/lib/Analysis/Scalable/CMakeLists.txt b/clang/lib/Analysis/Scalable/CMakeLists.txt
index c8f959e274c6d..47fe87074d728 100644
--- a/clang/lib/Analysis/Scalable/CMakeLists.txt
+++ b/clang/lib/Analysis/Scalable/CMakeLists.txt
@@ -9,6 +9,7 @@ add_clang_library(clangAnalysisScalable
Model/EntityName.cpp
Serialization/SerializationFormat.cpp
Serialization/SerializationFormatRegistry.cpp
+ TUSummary/EntitySummary.cpp
TUSummary/ExtractorRegistry.cpp
LINK_LIBS
diff --git a/clang/lib/Analysis/Scalable/TUSummary/EntitySummary.cpp b/clang/lib/Analysis/Scalable/TUSummary/EntitySummary.cpp
new file mode 100644
index 0000000000000..96ef3372b7762
--- /dev/null
+++ b/clang/lib/Analysis/Scalable/TUSummary/EntitySummary.cpp
@@ -0,0 +1,11 @@
+//===- EntitySummary.cpp --------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/Analysis/Scalable/TUSummary/EntitySummary.h"
+
+char clang::ssaf::EntitySummary::ID = 0;
diff --git a/clang/unittests/Analysis/Scalable/Registries/FancyAnalysisData.cpp b/clang/unittests/Analysis/Scalable/Registries/FancyAnalysisData.cpp
index 0f06ed7e159b5..1198e7a927a28 100644
--- a/clang/unittests/Analysis/Scalable/Registries/FancyAnalysisData.cpp
+++ b/clang/unittests/Analysis/Scalable/Registries/FancyAnalysisData.cpp
@@ -17,17 +17,22 @@ using SpecialFileRepresentation =
MockSerializationFormat::SpecialFileRepresentation;
namespace {
-struct FancyAnalysisData : EntitySummary {
- FancyAnalysisData() : EntitySummary(SummaryName("FancyAnalysis")) {}
+struct FancyAnalysisData final
+ : llvm::RTTIExtends<FancyAnalysisData, EntitySummary> {
+ SummaryName getSummaryName() const override {
+ return SummaryName("FancyAnalysis");
+ }
std::string Text;
+ static char ID;
};
+char FancyAnalysisData::ID = 0;
} // namespace
static SpecialFileRepresentation
serializeFancyAnalysis(const EntitySummary &Data,
MockSerializationFormat &Format) {
- const auto &FancyAnalysis = static_cast<const FancyAnalysisData &>(Data);
+ const auto &FancyAnalysis = llvm::cast<FancyAnalysisData>(Data);
return SpecialFileRepresentation{/*MockRepresentation=*/FancyAnalysis.Text};
}
More information about the cfe-commits
mailing list