1 /* Demonstrates how to add custom pragmas */
3 #include "gcc-plugin.h"
12 #include "c-family/c-pragma.h"
14 #include "tree-pass.h"
17 #include "diagnostic.h"
19 int plugin_is_GPL_compatible
;
22 /* handler of #pragma GCCPLUGIN sayhello "message" is quite similar to
23 handler of #pragma GCC message...*/
26 handle_pragma_sayhello (cpp_reader
*dummy
)
29 if (pragma_lex (&message
) != CPP_STRING
)
31 warning (OPT_Wpragmas
, "%<#pragma GCCPLUGIN sayhello%> is not a string");
34 if (TREE_STRING_LENGTH (message
) > 1)
37 warning (OPT_Wpragmas
,
38 "%<pragma GCCPLUGIN sayhello%> from function %qE: %s",
39 cfun
->decl
, TREE_STRING_POINTER (message
));
41 warning (OPT_Wpragmas
,
42 "%<pragma GCCPLUGIN sayhello%> outside of function: %s",
43 TREE_STRING_POINTER (message
));
47 /* Plugin callback called during pragma registration */
50 register_my_pragma (void *event_data
, void *data
)
52 warning (0, G_("Callback to register pragmas"));
53 c_register_pragma ("GCCPLUGIN", "sayhello", handle_pragma_sayhello
);
57 plugin_init (struct plugin_name_args
*plugin_info
,
58 struct plugin_gcc_version
*version
)
60 const char *plugin_name
= plugin_info
->base_name
;
62 register_callback (plugin_name
, PLUGIN_PRAGMAS
, register_my_pragma
, NULL
);