annotate gcc/testsuite/gcc.dg/plugin/start_unit_plugin.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* This plugin tests the correct operation of a PLUGIN_START_UNIT callback.
kono
parents:
diff changeset
2 * By the time a PLUGIN_START_UNIT callback is invoked, the frontend
kono
parents:
diff changeset
3 * initialization should have completed. At least the different *_type_nodes
kono
parents:
diff changeset
4 * should have been created. This plugin creates an artificial global
kono
parents:
diff changeset
5 * interger variable.
kono
parents:
diff changeset
6 *
kono
parents:
diff changeset
7 */
kono
parents:
diff changeset
8 #include "gcc-plugin.h"
kono
parents:
diff changeset
9 #include "config.h"
kono
parents:
diff changeset
10 #include "system.h"
kono
parents:
diff changeset
11 #include "coretypes.h"
kono
parents:
diff changeset
12 #include "tm.h"
kono
parents:
diff changeset
13 #include "tree.h"
kono
parents:
diff changeset
14 #include "stringpool.h"
kono
parents:
diff changeset
15 #include "toplev.h"
kono
parents:
diff changeset
16 #include "basic-block.h"
kono
parents:
diff changeset
17 #include "hash-table.h"
kono
parents:
diff changeset
18 #include "vec.h"
kono
parents:
diff changeset
19 #include "ggc.h"
kono
parents:
diff changeset
20 #include "basic-block.h"
kono
parents:
diff changeset
21 #include "tree-ssa-alias.h"
kono
parents:
diff changeset
22 #include "internal-fn.h"
kono
parents:
diff changeset
23 #include "gimple-fold.h"
kono
parents:
diff changeset
24 #include "tree-eh.h"
kono
parents:
diff changeset
25 #include "gimple-expr.h"
kono
parents:
diff changeset
26 #include "is-a.h"
kono
parents:
diff changeset
27 #include "gimple.h"
kono
parents:
diff changeset
28 #include "tree.h"
kono
parents:
diff changeset
29 #include "tree-pass.h"
kono
parents:
diff changeset
30 #include "intl.h"
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 int plugin_is_GPL_compatible;
kono
parents:
diff changeset
33 static tree fake_var = NULL;
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 static bool
kono
parents:
diff changeset
36 gate_start_unit (void)
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 return true;
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 static void start_unit_callback (void *gcc_data, void *user_data)
kono
parents:
diff changeset
42 {
kono
parents:
diff changeset
43 if (integer_type_node) {
kono
parents:
diff changeset
44 fake_var = build_decl (UNKNOWN_LOCATION, VAR_DECL,
kono
parents:
diff changeset
45 get_identifier ("_fake_var_"),
kono
parents:
diff changeset
46 integer_type_node);
kono
parents:
diff changeset
47 TREE_PUBLIC (fake_var) = 1;
kono
parents:
diff changeset
48 DECL_ARTIFICIAL (fake_var) = 1;
kono
parents:
diff changeset
49 }
kono
parents:
diff changeset
50 }
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 static void finish_unit_callback (void *gcc_data, void *user_data)
kono
parents:
diff changeset
53 {
kono
parents:
diff changeset
54 if (fake_var == NULL) {
kono
parents:
diff changeset
55 printf ("fake_var not created \n");
kono
parents:
diff changeset
56 return;
kono
parents:
diff changeset
57 }
kono
parents:
diff changeset
58 if (TREE_CODE (fake_var) != VAR_DECL) {
kono
parents:
diff changeset
59 printf ("fake_var not a VAR_DECL \n");
kono
parents:
diff changeset
60 return;
kono
parents:
diff changeset
61 }
kono
parents:
diff changeset
62 if (TREE_CODE (TREE_TYPE (fake_var)) != INTEGER_TYPE) {
kono
parents:
diff changeset
63 printf ("fake_var not INTEGER_TYPE \n");
kono
parents:
diff changeset
64 return;
kono
parents:
diff changeset
65 }
kono
parents:
diff changeset
66 if (DECL_ARTIFICIAL (fake_var) == 0) {
kono
parents:
diff changeset
67 printf ("fake_var not ARTIFICIAL \n");
kono
parents:
diff changeset
68 return;
kono
parents:
diff changeset
69 }
kono
parents:
diff changeset
70 }
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 int plugin_init (struct plugin_name_args *plugin_info,
kono
parents:
diff changeset
73 struct plugin_gcc_version *version)
kono
parents:
diff changeset
74 {
kono
parents:
diff changeset
75 register_callback ("start_unit", PLUGIN_START_UNIT, &start_unit_callback, NULL);
kono
parents:
diff changeset
76 register_callback ("finish_unit", PLUGIN_FINISH_UNIT, &finish_unit_callback, NULL);
kono
parents:
diff changeset
77 return 0;
kono
parents:
diff changeset
78 }