14#ifndef LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_CORE_WHOLEPROGRAMANALYSIS_WPASUITE_H
15#define LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_CORE_WHOLEPROGRAMANALYSIS_WPASUITE_H
22#include "llvm/Support/Error.h"
39 std::map<AnalysisName, std::unique_ptr<AnalysisResult>> Data;
49 template <
typename ResultT> [[nodiscard]]
bool contains()
const {
50 static_assert(std::is_base_of_v<AnalysisResult, ResultT>,
51 "ResultT must derive from AnalysisResult");
53 "ResultT must have a static analysisName() method");
55 return contains(ResultT::analysisName());
60 return Data.find(Name) != Data.end();
65 template <
typename ResultT>
67 static_assert(std::is_base_of_v<AnalysisResult, ResultT>,
68 "ResultT must derive from AnalysisResult");
70 "ResultT must have a static analysisName() method");
72 auto Result =
get(ResultT::analysisName());
76 return static_cast<const ResultT &
>(*Result);
83 auto It = Data.find(Name);
84 if (It == Data.end()) {
86 "no result for '{0}' in WPASuite", Name)
Orchestrates whole-program analysis over an LUSummary.
Uniquely identifies a whole-program analysis and the AnalysisResult it produces.
Manages entity name interning and provides efficient EntityId handles.
static ErrorBuilder create(std::error_code EC, const char *Fmt, Args &&...ArgVals)
Create an ErrorBuilder with an error code and formatted message.
llvm::Error build() const
Build and return the final error.
const EntityIdTable & idTable() const
Returns the EntityIdTable that maps EntityId values to their symbolic names.
bool contains() const
Returns true if a result for ResultT is present.
llvm::Expected< const AnalysisResult & > get(AnalysisName Name) const
Returns a const reference to the result for Name, or an error if absent.
llvm::Expected< const ResultT & > get() const
Returns a const reference to the result for ResultT, or an error if absent.
bool contains(AnalysisName Name) const
Returns true if a result for Name is present.
friend class AnalysisDriver
constexpr bool HasAnalysisName_v
@ Result
The result type of a method or function.