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.   

References fatal_error().

Referenced by add_new_plugin().

int get_event_last ( void  )
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.   

References event_last.

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 
)
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.   

Referenced by try_init_one_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    

References error(), event_last, callback_info::func, ggc_register_cache_tab(), ggc_register_root_tab(), callback_info::next, PLUGIN_EVENT_FIRST_DYNAMIC, plugin_event_name, callback_info::plugin_name, register_pass(), register_plugin_info(), 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.   

Referenced by dump_active_plugins(), get_named_event_id(), and register_callback().

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.