1 /* This plugin creates a fake function in the FINISH_UNIT callback, in
2  * other words right after compilation of the translation unit.
3 */
4 #include "gcc-plugin.h"
5 #include "config.h"
6 #include "system.h"
7 #include "coretypes.h"
8 #include "tm.h"
9 #include "tree.h"
10 #include "toplev.h"
11 #include "basic-block.h"
12 #include "hash-table.h"
13 #include "vec.h"
14 #include "ggc.h"
15 #include "basic-block.h"
16 #include "tree-ssa-alias.h"
17 #include "internal-fn.h"
18 #include "gimple-fold.h"
19 #include "tree-eh.h"
20 #include "gimple-expr.h"
21 #include "is-a.h"
22 #include "gimple.h"
23 #include "tree.h"
24 #include "tree-pass.h"
25 #include "intl.h"
26 #include "cgraph.h"
27 
28 int plugin_is_GPL_compatible;
29 
finish_unit_callback(void * gcc_data,void * user_data)30 static void finish_unit_callback (void *gcc_data, void *user_data)
31 {
32   cgraph_build_static_cdtor ('I', NULL, DEFAULT_INIT_PRIORITY);
33 }
34 
plugin_init(struct plugin_name_args * plugin_info,struct plugin_gcc_version * version)35 int plugin_init (struct plugin_name_args *plugin_info,
36                  struct plugin_gcc_version *version)
37 {
38   register_callback ("finish_unit", PLUGIN_FINISH_UNIT, &finish_unit_callback, NULL);
39   return 0;
40 }
41