class InnerAnalysisManagerProxy
Declaration
template <typename AnalysisManagerT,
typename IRUnitT,
typename... ExtraArgTs>
class InnerAnalysisManagerProxy { /* full declaration omitted */ };
Description
An analysis over an "outer" IR unit that provides access to an analysis manager over an "inner" IR unit. The inner unit must be contained in the outer unit. For example, InnerAnalysisManagerProxy <FunctionAnalysisManager , Module> is an analysis over Modules (the "outer" unit) that provides access to a Function analysis manager. The FunctionAnalysisManager is the "inner" manager being proxied, and Functions are the "inner" unit. The inner/outer relationship is valid because each Function is contained in one Module. If you're (transitively) within a pass manager for an IR unit U that contains IR unit V, you should never use an analysis manager over V, except via one of these proxies. Note that the proxy's result is a move-only RAII object. The validity of the analyses in the inner analysis manager is tied to its lifetime.
Declared at: llvm/include/llvm/IR/PassManager.h:1045
Templates
- AnalysisManagerT
- IRUnitT
- ExtraArgTs
Method Overview
- public InnerAnalysisManagerProxy<AnalysisManagerT, IRUnitT, ExtraArgTs...>(AnalysisManagerT & InnerAM)
- public llvm::InnerAnalysisManagerProxy::Result run(IRUnitT & IR, AnalysisManager<IRUnitT, ExtraArgTs...> & AM, ExtraArgTs...)
Methods
¶InnerAnalysisManagerProxy<AnalysisManagerT,
IRUnitT,
ExtraArgTs...>(
AnalysisManagerT& InnerAM)
InnerAnalysisManagerProxy<AnalysisManagerT,
IRUnitT,
ExtraArgTs...>(
AnalysisManagerT& InnerAM)
Declared at: llvm/include/llvm/IR/PassManager.h:1100
Parameters
- AnalysisManagerT& InnerAM
¶llvm::InnerAnalysisManagerProxy::Result run(
IRUnitT& IR,
AnalysisManager<IRUnitT, ExtraArgTs...>& AM,
ExtraArgTs...)
llvm::InnerAnalysisManagerProxy::Result run(
IRUnitT& IR,
AnalysisManager<IRUnitT, ExtraArgTs...>& AM,
ExtraArgTs...)
Description
Run the analysis pass and create our proxy result object. This doesn't do any interesting work; it is primarily used to insert our proxy result object into the outer analysis cache so that we can proxy invalidation to the inner analysis manager.
Declared at: llvm/include/llvm/IR/PassManager.h:1108
Parameters
- IRUnitT& IR
- AnalysisManager<IRUnitT, ExtraArgTs...>& AM
- ExtraArgTs...