]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/plugin.h
Update Copyright years for files modified in 2011 and/or 2012.
[thirdparty/gcc.git] / gcc / plugin.h
CommitLineData
9227b6fc 1/* Header file for internal GCC plugin mechanism.
71e45bc2 2 Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc.
9227b6fc 3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 3, or (at your option)
9any later version.
10
11GCC is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
19
20#ifndef PLUGIN_H
21#define PLUGIN_H
22
23#include "gcc-plugin.h"
24
e3fced1a 25struct attribute_spec;
ffcdbf9c 26struct scoped_attributes;
e3fced1a 27
9227b6fc 28extern void add_new_plugin (const char *);
29extern void parse_plugin_arg_opt (const char *);
a3f551d2 30extern int invoke_plugin_callbacks_full (int, void *);
9227b6fc 31extern void initialize_plugins (void);
32extern bool plugins_active_p (void);
33extern void dump_active_plugins (FILE *);
34extern void debug_active_plugins (void);
1f63d337 35extern void warn_if_plugins (void);
24ca3b4e 36extern void plugins_internal_error_function (diagnostic_context *,
1f63d337 37 const char *, va_list *);
e16288b4 38extern void print_plugins_versions (FILE *file, const char *indent);
2dfeb300 39extern void print_plugins_help (FILE *file, const char *indent);
e16288b4 40extern void finalize_plugins (void);
9227b6fc 41
ccb7e201 42extern bool flag_plugin_added;
43
a3f551d2 44/* Called from inside GCC. Invoke all plugin callbacks registered with
45 the specified event.
46 Return PLUGEVT_SUCCESS if at least one callback was called,
47 PLUGEVT_NO_CALLBACK if there was no callback.
48
49 EVENT - the event identifier
50 GCC_DATA - event-specific data provided by the compiler */
51
52static inline int
08cfd855 53invoke_plugin_callbacks (int event ATTRIBUTE_UNUSED,
54 void *gcc_data ATTRIBUTE_UNUSED)
a3f551d2 55{
56#ifdef ENABLE_PLUGIN
57 /* True iff at least one plugin has been added. */
a3f551d2 58 if (flag_plugin_added)
59 return invoke_plugin_callbacks_full (event, gcc_data);
60#endif
61
62 return PLUGEVT_NO_CALLBACK;
63}
64
e3fced1a 65/* In attribs.c. */
66
67extern void register_attribute (const struct attribute_spec *attr);
ffcdbf9c 68extern struct scoped_attributes* register_scoped_attributes (const struct attribute_spec *,
69 const char *);
e3fced1a 70
9227b6fc 71#endif /* PLUGIN_H */