https://github.com/jkorous-apple created https://github.com/llvm/llvm-project/pull/176504
None >From ad135aa3ebadaea94e8aba49e33d83913e72226b Mon Sep 17 00:00:00 2001 From: Jan Korous <[email protected]> Date: Fri, 16 Jan 2026 16:04:00 -0800 Subject: [PATCH] [SSAF] Add data structures for summary data of a single TU --- .../Analysis/Scalable/TUSummary/TUSummary.h | 37 +++++++++++++++++++ .../Scalable/TUSummary/TUSummaryData.h | 33 +++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 clang/include/clang/Analysis/Scalable/TUSummary/TUSummary.h create mode 100644 clang/include/clang/Analysis/Scalable/TUSummary/TUSummaryData.h diff --git a/clang/include/clang/Analysis/Scalable/TUSummary/TUSummary.h b/clang/include/clang/Analysis/Scalable/TUSummary/TUSummary.h new file mode 100644 index 0000000000000..6f59c63115dc8 --- /dev/null +++ b/clang/include/clang/Analysis/Scalable/TUSummary/TUSummary.h @@ -0,0 +1,37 @@ +//===- TUSummary.h ----------------------------------------------*- C++ -*-===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_TUSUMMARY_H +#define LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_TUSUMMARY_H + +#include "clang/Analysis/Scalable/Model/BuildNamespace.h" +#include "clang/Analysis/Scalable/Model/EntityId.h" +#include "clang/Analysis/Scalable/Model/EntityIdTable.h" +#include "clang/Analysis/Scalable/Model/SummaryName.h" +#include "clang/Analysis/Scalable/TUSummary/TUSummaryData.h" +#include <map> +#include <memory> + +namespace clang::ssaf { + +/// Data extracted for a given translation unit and for a given set of analyses. +class TUSummary { + /// Identifies the translation unit. + BuildNamespace TUNamespace; + EntityIdTable IdTable; + + std::map<SummaryName, std::map<EntityId, std::unique_ptr<TUSummaryData>>> + Data; + +public: + TUSummary(BuildNamespace TUNamespace) : TUNamespace(std::move(TUNamespace)) {} +}; + +} // namespace clang::ssaf + +#endif // LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_TUSUMMARY_H diff --git a/clang/include/clang/Analysis/Scalable/TUSummary/TUSummaryData.h b/clang/include/clang/Analysis/Scalable/TUSummary/TUSummaryData.h new file mode 100644 index 0000000000000..57b28d5f25308 --- /dev/null +++ b/clang/include/clang/Analysis/Scalable/TUSummary/TUSummaryData.h @@ -0,0 +1,33 @@ +//===- TUSummaryData.h ------------------------------------------*- C++ -*-===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_TUSUMMARYDATA_H +#define LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_TUSUMMARYDATA_H + +#include "clang/Analysis/Scalable/Model/SummaryName.h" + +namespace clang::ssaf { + +/// Base class for analysis-specific summary data. +class TUSummaryData { +private: + /// Name of the summary. + SummaryName Summary; + +protected: + TUSummaryData(SummaryName Summary) : Summary(std::move(Summary)) {} + +public: + SummaryName getSummaryName() const { return Summary; } + + virtual ~TUSummaryData() = default; +}; + +} // namespace clang::ssaf + +#endif // LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_TUSUMMARYDATA_H _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
