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