[clang] [clang][ssaf] Add whole-program analysis execution layer (PR #186813)
Aviral Goel via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 16 21:53:13 PDT 2026
================
@@ -0,0 +1,55 @@
+//===- AnalysisBase.h -----------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// Minimal common base for SummaryAnalysisBase and DerivedAnalysisBase.
+// Carries the identity (analysisName()) and dependency list
+// (dependencyNames()) shared by every analysis regardless of kind.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_CORE_ANALYSIS_ANALYSISBASE_H
+#define LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_CORE_ANALYSIS_ANALYSISBASE_H
+
+#include "clang/ScalableStaticAnalysisFramework/Core/Analysis/AnalysisName.h"
+#include <vector>
+
+namespace clang::ssaf {
+
+class AnalysisDriver;
+class SummaryAnalysisBase;
+class DerivedAnalysisBase;
+
+/// Minimal common base for both analysis kinds.
+///
+/// Not subclassed directly -- use SummaryAnalysis<...> or
+/// DerivedAnalysis<...> instead.
+class AnalysisBase {
+ friend class AnalysisDriver;
+ friend class SummaryAnalysisBase;
+ friend class DerivedAnalysisBase;
+
+ enum class Kind { Summary, Derived };
+ Kind TheKind;
----------------
aviralg wrote:
I don't like this but it avoided a lot of noise from use of std::variant in the AnalysisDriver and AnalysisRegistry. Trust me!
https://github.com/llvm/llvm-project/pull/186813
More information about the cfe-commits
mailing list