GCC Middle and Back End API Reference
gcc-plugin.h File Reference

Go to the source code of this file.

Data Structures

struct  plugin_argument
struct  plugin_info
struct  plugin_gcc_version
struct  plugin_name_args

Typedefs

typedef int(* plugin_init_func )(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
typedef void(* plugin_callback_func )(void *gcc_data, void *user_data)

Enumerations

enum  plugin_event { PLUGIN_EVENT_FIRST_DYNAMIC }

Functions

bool plugin_default_version_check (struct plugin_gcc_version *, struct plugin_gcc_version *)
int plugin_init (struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
int get_event_last (void)
int get_named_event_id (const char *name, enum insert_option insert)
void register_callback (const char *plugin_name, int event, plugin_callback_func callback, void *user_data)
int unregister_callback (const char *plugin_name, int event)
const char * default_plugin_dir_name (void)

Variables

const char ** plugin_event_name
int plugin_is_GPL_compatible

Typedef Documentation

typedef void(* plugin_callback_func)(void *gcc_data, void *user_data)
   Function type for a plugin callback routine.

   GCC_DATA  - event-specific data provided by GCC
   USER_DATA - plugin-specific data provided by the plugin  
typedef int(* plugin_init_func)(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
   Function type for the plugin initialization routine. Each plugin module
   should define this as an externally-visible function with name
   "plugin_init."

   PLUGIN_INFO - plugin invocation information.
   VERSION     - the plugin_gcc_version symbol of GCC.

   Returns 0 if initialization finishes successfully.  

Enumeration Type Documentation

   Event names.  
Enumerator:
PLUGIN_EVENT_FIRST_DYNAMIC 

Function Documentation

const char* default_plugin_dir_name ( void  )
   Retrieve the plugin directory name, as returned by the
   -fprint-file-name=plugin argument to the gcc program, which is the
   -iplugindir program argument to cc1.  
   Retrieve the default plugin directory.  The gcc driver should have passed
   it as -iplugindir <dir> to the cc1 program, and it is queriable through the
   -print-file-name=plugin option to gcc.  
int get_event_last ( void  )
@verbatim 

Called from the plugin's initialization code. Register a single callback. This function can be called multiple times.

PLUGIN_NAME - display name for this plugin EVENT - which event the callback is for CALLBACK - the callback to be called at the event USER_DATA - plugin-provided data.

   Number of event ids / names registered so far.  
   Return the current value of event_last, so that plugins which provide
   additional functionality for events for the benefit of high-level plugins
   know how many valid entries plugin_event_name holds.  
int get_named_event_id ( const char *  name,
enum insert_option  insert 
)
bool plugin_default_version_check ( struct plugin_gcc_version gcc_version,
struct plugin_gcc_version plugin_version 
)
   The default version check. Compares every field in VERSION. 
int plugin_init ( struct plugin_name_args plugin_info,
struct plugin_gcc_version version 
)
   Declaration for "plugin_init" function so that it doesn't need to be
   duplicated in every plugin.  
void register_callback ( const char *  plugin_name,
int  event,
plugin_callback_func  callback,
void *  user_data 
)
   This is also called without a callback routine for the
   PLUGIN_PASS_MANAGER_SETUP, PLUGIN_INFO, PLUGIN_REGISTER_GGC_ROOTS and
   PLUGIN_REGISTER_GGC_CACHES pseudo-events, with a specific user_data.
   Called from the plugin's initialization code. Register a single callback.
   This function can be called multiple times.

   PLUGIN_NAME - display name for this plugin
   EVENT       - which event the callback is for
   CALLBACK    - the callback to be called at the event
   USER_DATA   - plugin-provided data   
         Fall through.  

References error(), callback_info::func, callback_info::next, callback_info::plugin_name, and callback_info::user_data.

int unregister_callback ( const char *  plugin_name,
int  event 
)

Variable Documentation

const char** plugin_event_name
   All globals declared here have C linkage to reduce link compatibility
   issues with implementation language choice and mangling.  
int plugin_is_GPL_compatible
   In case the C++ compiler does name mangling for globals, declare
   plugin_is_GPL_compatible extern "C" so that a later definition
   in a plugin file will have this linkage.