[clang] Revert "[clang][ssaf] Add JSONFormat support for WPASuite (#187403)" (PR #190909)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 7 21:50:12 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-static-analyzer-1
Author: Aviral Goel (aviralg)
<details>
<summary>Changes</summary>
This reverts commit 5099f1641e49e5d5a084dcf2155dc8a72257c795 since it breaks buildbots.
---
Patch is 83.61 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/190909.diff
47 Files Affected:
- (modified) clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def (-2)
- (modified) clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat.h (-29)
- (modified) clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/SerializationFormat.h (-136)
- (modified) clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/DerivedAnalysis.h (+2-2)
- (modified) clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/WPASuite.h (-4)
- (modified) clang/lib/ScalableStaticAnalysisFramework/CMakeLists.txt (-1)
- (modified) clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt (-1)
- (modified) clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp (-12)
- (modified) clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h (-8)
- (removed) clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/WPASuite.cpp (-212)
- (removed) clang/lib/ScalableStaticAnalysisFramework/Plugins/CMakeLists.txt (-12)
- (removed) clang/lib/ScalableStaticAnalysisFramework/Plugins/ExamplePlugin/AnalysisResults.h (-39)
- (removed) clang/lib/ScalableStaticAnalysisFramework/Plugins/ExamplePlugin/CMakeLists.txt (-18)
- (removed) clang/lib/ScalableStaticAnalysisFramework/Plugins/ExamplePlugin/PairsAnalysis.cpp (-197)
- (removed) clang/lib/ScalableStaticAnalysisFramework/Plugins/ExamplePlugin/TagsAnalysis.cpp (-160)
- (removed) clang/lib/ScalableStaticAnalysisFramework/Plugins/ExamplePlugin/TagsPairsAnalysis.cpp (-136)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/duplicate-analysis-name.json (-17)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/missing-results.json (-3)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/pairs-result-bad-count.json (-57)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/pairs-result-bad-pair-counts.json (-17)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/pairs-result-entry-not-object.json (-33)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/pairs-result-missing-entity-id.json (-41)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/result-entry-analysis-name-not-string.json (-9)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/result-entry-deserializer-error.json (-26)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/result-entry-missing-analysis-name.json (-8)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/result-entry-missing-result-field.json (-16)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/result-entry-no-format-info.json (-9)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/result-entry-not-object.json (-6)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/result-entry-result-not-object.json (-26)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/results-not-array.json (-4)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/rt-all-results.json (-90)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/rt-empty.json (-4)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/rt-multiple-results.json (-40)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/tags-result-bad-element.json (-15)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/tags-result-missing-tags.json (-15)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/tagspairs-result-bad-field-type.json (-20)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/Inputs/tagspairs-result-missing-field.json (-25)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/with-plugin.test (-132)
- (removed) clang/test/Analysis/Scalable/ssaf-format/WPASuite/without-plugin.test (-54)
- (removed) clang/test/Analysis/Scalable/ssaf-format/lit.local.cfg (-4)
- (modified) clang/test/CMakeLists.txt (-6)
- (modified) clang/tools/clang-ssaf-format/CMakeLists.txt (-4)
- (modified) clang/tools/clang-ssaf-format/SSAFFormat.cpp (+2-8)
- (modified) clang/unittests/ScalableStaticAnalysisFramework/Frontend/TUSummaryExtractorFrontendActionTest.cpp (-9)
- (modified) clang/unittests/ScalableStaticAnalysisFramework/Registries/MockSerializationFormat.cpp (-10)
- (modified) clang/unittests/ScalableStaticAnalysisFramework/Registries/MockSerializationFormat.h (-5)
- (modified) clang/unittests/ScalableStaticAnalysisFramework/TestFixture.h (-3)
``````````diff
diff --git a/clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def b/clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def
index 1c75543062cbc..1ee2a809430f4 100644
--- a/clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def
+++ b/clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def
@@ -42,7 +42,5 @@ FIELD(TUSummaryEncoding, Data)
FIELD(TUSummaryEncoding, IdTable)
FIELD(TUSummaryEncoding, LinkageTable)
FIELD(TUSummaryEncoding, TUNamespace)
-FIELD(WPASuite, Data)
-FIELD(WPASuite, IdTable)
#undef FIELD
diff --git a/clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat.h b/clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat.h
index 43ac353a31e75..47b46cbe42698 100644
--- a/clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat.h
+++ b/clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat.h
@@ -58,11 +58,6 @@ class JSONFormat final : public SerializationFormat {
llvm::Error writeLUSummaryEncoding(const LUSummaryEncoding &SummaryEncoding,
llvm::StringRef Path) override;
- llvm::Expected<WPASuite> readWPASuite(llvm::StringRef Path) override;
-
- llvm::Error writeWPASuite(const WPASuite &Suite,
- llvm::StringRef Path) override;
-
void forEachRegisteredAnalysis(
llvm::function_ref<void(llvm::StringRef Name, llvm::StringRef Desc)>
Callback) const override;
@@ -79,16 +74,6 @@ class JSONFormat final : public SerializationFormat {
using FormatInfo = FormatInfoEntry<SerializerFn, DeserializerFn>;
- using AnalysisResultSerializerFn =
- llvm::function_ref<Object(const AnalysisResult &, EntityIdToJSONFn)>;
- using AnalysisResultDeserializerFn =
- llvm::function_ref<llvm::Expected<std::unique_ptr<AnalysisResult>>(
- const Object &, EntityIdFromJSONFn)>;
-
- using AnalysisResultRegistry =
- SerializationFormat::AnalysisResultRegistryGenerator<
- JSONFormat, AnalysisResultSerializerFn, AnalysisResultDeserializerFn>;
-
private:
static std::map<SummaryName, FormatInfo> initFormatInfos();
const std::map<SummaryName, FormatInfo> FormatInfos = initFormatInfos();
@@ -201,18 +186,6 @@ class JSONFormat final : public SerializationFormat {
const std::map<SummaryName,
std::map<EntityId, std::unique_ptr<EntitySummaryEncoding>>>
&EncodingSummaryDataMap) const;
-
- llvm::Expected<std::pair<AnalysisName, std::unique_ptr<AnalysisResult>>>
- analysisResultMapEntryFromJSON(const Object &Entry) const;
- llvm::Expected<Object> analysisResultMapEntryToJSON(
- const AnalysisName &Name,
- const std::unique_ptr<AnalysisResult> &Result) const;
-
- llvm::Expected<std::map<AnalysisName, std::unique_ptr<AnalysisResult>>>
- analysisResultMapFromJSON(const Array &ResultsArray) const;
- llvm::Expected<Array> analysisResultMapToJSON(
- const std::map<AnalysisName, std::unique_ptr<AnalysisResult>> &Data)
- const;
};
} // namespace clang::ssaf
@@ -220,8 +193,6 @@ class JSONFormat final : public SerializationFormat {
namespace llvm {
extern template class CLANG_TEMPLATE_ABI
Registry<clang::ssaf::JSONFormat::FormatInfo>;
-extern template class CLANG_TEMPLATE_ABI
- Registry<clang::ssaf::JSONFormat::AnalysisResultRegistry::Codec>;
} // namespace llvm
#endif // LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_CORE_SERIALIZATION_JSONFORMAT_H
diff --git a/clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/SerializationFormat.h b/clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/SerializationFormat.h
index 7c98dd8bbe267..7aebf06a6368e 100644
--- a/clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/SerializationFormat.h
+++ b/clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/SerializationFormat.h
@@ -19,13 +19,10 @@
#include "clang/ScalableStaticAnalysisFramework/Core/EntityLinker/TUSummaryEncoding.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Model/BuildNamespace.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Model/SummaryName.h"
-#include "clang/ScalableStaticAnalysisFramework/Core/Support/ErrorBuilder.h"
#include "clang/ScalableStaticAnalysisFramework/Core/TUSummary/TUSummary.h"
-#include "clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/WPASuite.h"
#include "llvm/ADT/STLFunctionalExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Error.h"
-#include "llvm/Support/Registry.h"
namespace clang::ssaf {
@@ -58,11 +55,6 @@ class SerializationFormat {
writeLUSummaryEncoding(const LUSummaryEncoding &SummaryEncoding,
llvm::StringRef Path) = 0;
- virtual llvm::Expected<WPASuite> readWPASuite(llvm::StringRef Path) = 0;
-
- virtual llvm::Error writeWPASuite(const WPASuite &Suite,
- llvm::StringRef Path) = 0;
-
/// Invokes \p Callback once for each analysis that has registered
/// serialization support for this format.
virtual void forEachRegisteredAnalysis(
@@ -75,138 +67,10 @@ class SerializationFormat {
static EntityId makeEntityId(const size_t Index) { return EntityId(Index); }
- /// Constructs an empty WPASuite. Bypasses the private default constructor
- /// so that deserialization code can build a WPASuite incrementally.
- static WPASuite makeWPASuite() { return WPASuite(); }
-
#define FIELD(CLASS, FIELD_NAME) \
static const auto &get##FIELD_NAME(const CLASS &X) { return X.FIELD_NAME; } \
static auto &get##FIELD_NAME(CLASS &X) { return X.FIELD_NAME; }
#include "clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def"
-
- /// Per-format plugin registry for analysis result (de)serializers.
- ///
- /// Each concrete format (e.g. JSONFormat) instantiates this template once
- /// via a public \c using alias. Analysis authors register support with:
- ///
- /// \code
- /// static MyFormat::AnalysisResultRegistry::Add<MyAnalysisResult>
- /// Reg(serializeFn, deserializeFn);
- /// \endcode
- ///
- /// The serializer receives a \c const reference to \c MyAnalysisResult
- /// directly and the \c Add wrapper handles the downcast from \c
- /// AnalysisResult internally via virtual dispatch.
- ///
- /// \tparam FormatT Phantom type is needed to disambiguate \c llvm::Registry
- /// instantiations. \c llvm::Registry is keyed on the \c Entry type,
- /// so two formats sharing the same serializer/deserializer signatures
- /// would collide on the same registry without this parameter.
- template <class FormatT, class SerializerFn, class DeserializerFn>
- class AnalysisResultRegistryGenerator;
-
- template <class FormatT, class SerRet, class... SerArgs, class DesRet,
- class... DesArgs>
- class AnalysisResultRegistryGenerator<
- FormatT, llvm::function_ref<SerRet(const AnalysisResult &, SerArgs...)>,
- llvm::function_ref<DesRet(DesArgs...)>> {
-
- using DeserializerFn = llvm::function_ref<DesRet(DesArgs...)>;
-
- public:
- /// Abstract base type stored in \c llvm::Registry<Codec>.
- /// Subclasses override \c serialize() and \c deserialize() to
- /// dispatch to the plugin's concrete functions.
- ///
- /// There is one \c Codec type (and one \c llvm::Registry<Codec>) per
- /// format. All analysis-specific \c ConcreteCodec<AnalysisResultT>
- /// subclasses for a given format register into that single registry. The \c
- /// FormatT phantom type parameter on the enclosing class ensures that
- /// different formats produce distinct \c Codec types and thus separate
- /// registries.
- struct Codec {
- virtual ~Codec() = default;
- virtual SerRet serialize(const AnalysisResult &, SerArgs...) const = 0;
- virtual DesRet deserialize(DesArgs...) const = 0;
- };
-
- /// Per-\c AnalysisResultT subclass of \c Codec. The \c serialize()
- /// override performs the downcast from \c AnalysisResult to
- /// \c AnalysisResultT.
- template <class AnalysisResultT> struct ConcreteCodec final : Codec {
- using TypedSerializerFn =
- llvm::function_ref<SerRet(const AnalysisResultT &, SerArgs...)>;
-
- /// The plugin's serializer and deserializer are stored as \c static
- /// \c inline members because \c llvm::Registry instantiates entries
- /// via a zero-argument constructor so there is no way to pass them
- /// as constructor arguments. The \c Add constructor writes these
- /// members before registration, and the virtual methods read them
- /// on invocation. \c inline avoids the need for separate out-of-line
- /// definitions that a bare \c static member in a class template
- /// would require.
- static inline TypedSerializerFn SavedSerialize;
- static inline DeserializerFn SavedDeserialize;
-
- SerRet serialize(const AnalysisResult &Base,
- SerArgs... args) const override {
- return SavedSerialize(static_cast<const AnalysisResultT &>(Base),
- args...);
- }
-
- DesRet deserialize(DesArgs... args) const override {
- return SavedDeserialize(args...);
- }
- };
-
- template <class AnalysisResultT> struct Add {
- /// Takes the plugin's typed serializer and the deserializer, and
- /// inserts them into \c llvm::Registry<Codec>.
- Add(typename ConcreteCodec<AnalysisResultT>::TypedSerializerFn
- TypedSerialize,
- DeserializerFn Deserialize) {
- /// Per-\c AnalysisResultT guard: each template instantiation gets
- /// its own \c static \c bool, so double-registration of the same
- /// analysis is caught even across translation units.
- static bool Registered = false;
- if (Registered) {
- ErrorBuilder::fatal("support is already registered for analysis: {0}",
- AnalysisResultT::analysisName());
- }
- Registered = true;
-
- ConcreteCodec<AnalysisResultT>::SavedSerialize = TypedSerialize;
- ConcreteCodec<AnalysisResultT>::SavedDeserialize = Deserialize;
-
- /// \c llvm::Registry stores the name as a \c StringRef, so the
- /// underlying string must be kept alive with a static declaration.
- static std::string NameStr =
- AnalysisResultT::analysisName().str().str();
-
- /// This performs the actual registration. It appends a factory for \c
- /// ConcreteCodec to the global \c llvm::Registry<Codec>. \c static
- /// ensures the `Registry::Add` object lives for the entire program,
- /// keeping its codec and node alive in the registry's linked list.
- [[maybe_unused]] static typename llvm::Registry<Codec>::template Add<
- ConcreteCodec<AnalysisResultT>> RegisterUsingCtorSideEffect(NameStr,
- "");
- }
- };
-
- /// Looks up the codec for \p Name by walking the registry list.
- static llvm::Expected<std::unique_ptr<Codec>>
- instantiate(const AnalysisName &Name) {
- for (const auto &E : llvm::Registry<Codec>::entries()) {
- if (E.getName() == Name.str()) {
- return E.instantiate();
- }
- }
- return ErrorBuilder::create(std::errc::invalid_argument,
- "no support registered for analysis: {0}",
- Name)
- .build();
- }
- };
};
template <class SerializerFn, class DeserializerFn> struct FormatInfoEntry {
diff --git a/clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/DerivedAnalysis.h b/clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/DerivedAnalysis.h
index 0e1eb8e9b8b87..4eb35262d4625 100644
--- a/clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/DerivedAnalysis.h
+++ b/clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/DerivedAnalysis.h
@@ -99,10 +99,10 @@ class DerivedAnalysis : public DerivedAnalysisBase {
/// Performs one step. Returns true if another step is needed; false when
/// converged. Single-step analyses always return false.
- virtual llvm::Expected<bool> step() override = 0;
+ virtual llvm::Expected<bool> step() = 0;
/// Called after the step() loop converges. Override for post-processing.
- virtual llvm::Error finalize() override { return llvm::Error::success(); }
+ virtual llvm::Error finalize() { return llvm::Error::success(); }
protected:
/// Read-only access to the result being built.
diff --git a/clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/WPASuite.h b/clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/WPASuite.h
index 52c6f9e46297d..5a0105fc1f4d9 100644
--- a/clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/WPASuite.h
+++ b/clang/include/clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/WPASuite.h
@@ -26,8 +26,6 @@
namespace clang::ssaf {
class AnalysisDriver;
-class SerializationFormat;
-class TestFixture;
/// Bundles the EntityIdTable (moved from the LUSummary) and the analysis
/// results produced by one AnalysisDriver::run() call, keyed by AnalysisName.
@@ -36,8 +34,6 @@ class TestFixture;
/// are self-contained in one object.
class WPASuite {
friend class AnalysisDriver;
- friend class SerializationFormat;
- friend class TestFixture;
EntityIdTable IdTable;
std::map<AnalysisName, std::unique_ptr<AnalysisResult>> Data;
diff --git a/clang/lib/ScalableStaticAnalysisFramework/CMakeLists.txt b/clang/lib/ScalableStaticAnalysisFramework/CMakeLists.txt
index e09c44b7cfd52..3da5c8899ddb6 100644
--- a/clang/lib/ScalableStaticAnalysisFramework/CMakeLists.txt
+++ b/clang/lib/ScalableStaticAnalysisFramework/CMakeLists.txt
@@ -1,5 +1,4 @@
add_subdirectory(Analyses)
add_subdirectory(Core)
add_subdirectory(Frontend)
-add_subdirectory(Plugins)
add_subdirectory(Tool)
diff --git a/clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt b/clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt
index 83772ceff58bf..8c306163df1a7 100644
--- a/clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt
+++ b/clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt
@@ -17,7 +17,6 @@ add_clang_library(clangScalableStaticAnalysisFrameworkCore
Serialization/JSONFormat/LUSummaryEncoding.cpp
Serialization/JSONFormat/TUSummary.cpp
Serialization/JSONFormat/TUSummaryEncoding.cpp
- Serialization/JSONFormat/WPASuite.cpp
Serialization/SerializationFormatRegistry.cpp
SummaryData/LUSummaryConsumer.cpp
SummaryData/SummaryDataBuilderRegistry.cpp
diff --git a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
index f1dcd752f864f..4072532d4972c 100644
--- a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
+++ b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
@@ -14,8 +14,6 @@
// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int SSAFJSONFormatAnchorSource = 0;
LLVM_INSTANTIATE_REGISTRY(llvm::Registry<clang::ssaf::JSONFormat::FormatInfo>)
-LLVM_INSTANTIATE_REGISTRY(
- llvm::Registry<clang::ssaf::JSONFormat::AnalysisResultRegistry::Codec>)
static clang::ssaf::SerializationFormatRegistry::Add<clang::ssaf::JSONFormat>
RegisterJSONFormat("json", "JSON serialization format");
@@ -143,16 +141,6 @@ SummaryName summaryNameFromJSON(llvm::StringRef SummaryNameStr) {
llvm::StringRef summaryNameToJSON(const SummaryName &SN) { return SN.str(); }
-//----------------------------------------------------------------------------
-// AnalysisName
-//----------------------------------------------------------------------------
-
-AnalysisName analysisNameFromJSON(llvm::StringRef AnalysisNameStr) {
- return AnalysisName(AnalysisNameStr.str());
-}
-
-llvm::StringRef analysisNameToJSON(const AnalysisName &AN) { return AN.str(); }
-
//----------------------------------------------------------------------------
// EntityId
//----------------------------------------------------------------------------
diff --git a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
index 31a605efe90a5..2ff1f2ae16192 100644
--- a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
+++ b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
@@ -21,7 +21,6 @@
#include "clang/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Support/ErrorBuilder.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Support/FormatProviders.h"
-#include "clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/AnalysisName.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/ErrorHandling.h"
@@ -140,13 +139,6 @@ llvm::Error writeJSON(Value &&V, llvm::StringRef Path);
SummaryName summaryNameFromJSON(llvm::StringRef SummaryNameStr);
llvm::StringRef summaryNameToJSON(const SummaryName &SN);
-//----------------------------------------------------------------------------
-// AnalysisName helpers
-//----------------------------------------------------------------------------
-
-AnalysisName analysisNameFromJSON(llvm::StringRef AnalysisNameStr);
-llvm::StringRef analysisNameToJSON(const AnalysisName &AN);
-
//----------------------------------------------------------------------------
// BuildNamespaceKind helpers
//----------------------------------------------------------------------------
diff --git a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/WPASuite.cpp b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/WPASuite.cpp
deleted file mode 100644
index 51a2add5a4eee..0000000000000
--- a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/WPASuite.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-//===- WPASuite.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 "JSONFormatImpl.h"
-
-#include "clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/WPASuite.h"
-
-namespace clang::ssaf {
-
-//----------------------------------------------------------------------------
-// AnalysisResultMapEntry
-//----------------------------------------------------------------------------
-
-llvm::Expected<std::pair<AnalysisName, std::unique_ptr<AnalysisResult>>>
-JSONFormat::analysisResultMapEntryFromJSON(const Object &Entry) const {
- auto OptName = Entry.getString("analysis_name");
- if (!OptName) {
- return ErrorBuilder::create(std::errc::invalid_argument,
- ErrorMessages::FailedToReadObjectAtField,
- "AnalysisName", "analysis_name", "string")
- .build();
- }
-
- AnalysisName Name = analysisNameFromJSON(*OptName);
-
- auto ExpectedCodec = AnalysisResultRegistry::instantiate(Name);
- if (!ExpectedCodec) {
- return ExpectedCodec.takeError();
- }
-
- const Object *ResultObj = Entry.getObject("result");
- if (!ResultObj) {
- return ErrorBuilder::create(std::errc::invalid_argument,
- ErrorMessages::FailedToReadObjectAtField,
- "AnalysisResult", "result", "object")
- .build();
- }
-
- auto ExpectedResult =
- (*ExpectedCodec)->deserialize(*ResultObj, &entityIdFromJSONObject);
- if (!ExpectedResult) {
- return ExpectedResult.takeError();
- }
-
- return std::make_pair(std::mo...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/190909
More information about the cfe-commits
mailing list