LLVM  8.0.1
Classes | Public Member Functions | List of all members
llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs > Class Template Reference

An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR unit. More...

#include "llvm/IR/PassManager.h"

Inheritance diagram for llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >:
Inheritance graph
[legend]
Collaboration diagram for llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >:
Collaboration graph
[legend]

Classes

class  Result
 Result proxy object for OuterAnalysisManagerProxy. More...
 

Public Member Functions

 OuterAnalysisManagerProxy (const AnalysisManagerT &AM)
 
Result run (IRUnitT &, AnalysisManager< IRUnitT, ExtraArgTs... > &, ExtraArgTs...)
 Run the analysis pass and create our proxy result object. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::AnalysisInfoMixin< OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... > >
static AnalysisKeyID ()
 Returns an opaque, unique ID for this analysis type. More...
 
- Static Public Member Functions inherited from llvm::PassInfoMixin< OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... > >
static StringRef name ()
 Gets the name of the pass we are mixed into. More...
 

Detailed Description

template<typename AnalysisManagerT, typename IRUnitT, typename... ExtraArgTs>
class llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >

An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR unit.

The inner unit must be contained in the outer unit.

For example OuterAnalysisManagerProxy<ModuleAnalysisManager, Function> is an analysis over Functions (the "inner" unit) which provides access to a Module analysis manager. The ModuleAnalysisManager is the "outer" manager being proxied, and Modules are the "outer" IR unit. The inner/outer relationship is valid because each Function is contained in one Module.

This proxy only exposes the const interface of the outer analysis manager, to indicate that you cannot cause an outer analysis to run from within an inner pass. Instead, you must rely on the getCachedResult API.

This proxy doesn't manage invalidation in any way – that is handled by the recursive return path of each layer of the pass manager. A consequence of this is the outer analyses may be stale. We invalidate the outer analyses only when we're done running passes over the inner IR units.

Definition at line 1154 of file PassManager.h.

Constructor & Destructor Documentation

◆ OuterAnalysisManagerProxy()

template<typename AnalysisManagerT , typename IRUnitT , typename... ExtraArgTs>
llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::OuterAnalysisManagerProxy ( const AnalysisManagerT &  AM)
inline

Definition at line 1223 of file PassManager.h.

Member Function Documentation

◆ run()

template<typename AnalysisManagerT , typename IRUnitT , typename... ExtraArgTs>
Result llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::run ( IRUnitT &  ,
AnalysisManager< IRUnitT, ExtraArgTs... > &  ,
ExtraArgTs...   
)
inline

Run the analysis pass and create our proxy result object.

Nothing to see here, it just forwards the AM reference into the result.

Definition at line 1228 of file PassManager.h.


The documentation for this class was generated from the following file: