1 /* Demonstrates how to add custom pragmas */
3 #include "gcc-plugin.h"
12 #include "c-family/c-pragma.h"
14 #include "tree-pass.h"
18 int plugin_is_GPL_compatible;
21 /* handler of #pragma GCCPLUGIN sayhello "message" is quite similar to
22 handler of #pragma GCC message...*/
25 handle_pragma_sayhello (cpp_reader *dummy)
28 if (pragma_lex (&message) != CPP_STRING)
30 warning (OPT_Wpragmas, "%<#pragma GCCPLUGIN sayhello%> is not a string");
33 if (TREE_STRING_LENGTH (message) > 1)
35 warning (OPT_Wpragmas,
36 "%<pragma GCCPLUGIN sayhello%> from function %qE: %s",
37 cfun->decl, TREE_STRING_POINTER (message));
39 warning (OPT_Wpragmas,
40 "%<pragma GCCPLUGIN sayhello%> outside of function: %s",
41 TREE_STRING_POINTER (message));
44 /* Plugin callback called during pragma registration */
47 register_my_pragma (void *event_data, void *data)
49 warning (0, G_("Callback to register pragmas"));
50 c_register_pragma ("GCCPLUGIN", "sayhello", handle_pragma_sayhello);
54 plugin_init (struct plugin_name_args *plugin_info,
55 struct plugin_gcc_version *version)
57 const char *plugin_name = plugin_info->base_name;
59 register_callback (plugin_name, PLUGIN_PRAGMAS, register_my_pragma, NULL);