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}; } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
