diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c b/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c new file mode 100644 index 000000000..26496a2e6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c @@ -0,0 +1,29 @@ +/* This plugin creates a fake function in the FINISH_UNIT callback, in + * other words right after compilation of the translation unit. +*/ +#include "gcc-plugin.h" +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "tm.h" +#include "toplev.h" +#include "basic-block.h" +#include "gimple.h" +#include "tree.h" +#include "tree-pass.h" +#include "intl.h" +#include "cgraph.h" + +int plugin_is_GPL_compatible; + +static void finish_unit_callback (void *gcc_data, void *user_data) +{ + cgraph_build_static_cdtor ('I', NULL, DEFAULT_INIT_PRIORITY); +} + +int plugin_init (struct plugin_name_args *plugin_info, + struct plugin_gcc_version *version) +{ + register_callback ("finish_unit", PLUGIN_FINISH_UNIT, &finish_unit_callback, NULL); + return 0; +} |