LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | List of all members
llvm::RegisterAGBase Class Reference

#include <PassSupport.h>

Inheritance diagram for llvm::RegisterAGBase:
Inheritance graph
[legend]
Collaboration diagram for llvm::RegisterAGBase:
Collaboration graph
[legend]

Public Member Functions

 RegisterAGBase (const char *Name, const void *InterfaceID, const void *PassID=0, bool isDefault=false)
 
- Public Member Functions inherited from llvm::PassInfo
 PassInfo (const char *name, const char *arg, const void *pi, NormalCtor_t normal, bool isCFGOnly, bool is_analysis)
 
 PassInfo (const char *name, const void *pi)
 
const char * getPassName () const
 
const char * getPassArgument () const
 
const void * getTypeInfo () const
 
bool isPassID (const void *IDPtr) const
 Return true if this PassID implements the specified ID pointer. More...
 
bool isAnalysisGroup () const
 
bool isAnalysis () const
 
bool isCFGOnlyPass () const
 
NormalCtor_t getNormalCtor () const
 
void setNormalCtor (NormalCtor_t Ctor)
 
PasscreatePass () const
 createPass() - Use this method to create an instance of this pass. More...
 
void addInterfaceImplemented (const PassInfo *ItfPI)
 
const std::vector< const
PassInfo * > & 
getInterfacesImplemented () const
 

Additional Inherited Members

- Public Types inherited from llvm::PassInfo
typedef Pass *(* NormalCtor_t )()
 

Detailed Description

RegisterAnalysisGroup - Register a Pass as a member of an analysis group. Analysis groups are used to define an interface (which need not derive from Pass) that is required by passes to do their job. Analysis Groups differ from normal analyses because any available implementation of the group will be used if it is available.

If no analysis implementing the interface is available, a default implementation is created and added. A pass registers itself as the default implementation by specifying 'true' as the second template argument of this class.

In addition to registering itself as an analysis group member, a pass must register itself normally as well. Passes may be members of multiple groups and may still be "required" specifically by name.

The actual interface may also be registered as well (by not specifying the second template argument). The interface should be registered to associate a nice name with the interface.

Definition at line 235 of file PassSupport.h.

Constructor & Destructor Documentation

RegisterAGBase::RegisterAGBase ( const char *  Name,
const void *  InterfaceID,
const void *  PassID = 0,
bool  isDefault = false 
)

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