1 | /* This file contains the definitions for plugin events in GCC. |
2 | Copyright (C) 2009-2023 Free Software Foundation, Inc. |
3 | |
4 | This file is part of GCC. |
5 | |
6 | GCC is free software; you can redistribute it and/or modify it under |
7 | the terms of the GNU General Public License as published by the Free |
8 | Software Foundation; either version 3, or (at your option) any later |
9 | version. |
10 | |
11 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
12 | WARRANTY; without even the implied warranty of MERCHANTABILITY or |
13 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
14 | for more details. |
15 | |
16 | You should have received a copy of the GNU General Public License |
17 | along with GCC; see the file COPYING3. If not see |
18 | <http://www.gnu.org/licenses/>. */ |
19 | |
20 | /* Called before parsing the body of a function. */ |
21 | DEFEVENT (PLUGIN_START_PARSE_FUNCTION) |
22 | |
23 | /* After finishing parsing a function. */ |
24 | DEFEVENT (PLUGIN_FINISH_PARSE_FUNCTION) |
25 | |
26 | /* To hook into pass manager. */ |
27 | DEFEVENT (PLUGIN_PASS_MANAGER_SETUP) |
28 | |
29 | /* After finishing parsing a type. */ |
30 | DEFEVENT (PLUGIN_FINISH_TYPE) |
31 | |
32 | /* After finishing parsing a declaration. */ |
33 | DEFEVENT (PLUGIN_FINISH_DECL) |
34 | |
35 | /* Useful for summary processing. */ |
36 | DEFEVENT (PLUGIN_FINISH_UNIT) |
37 | |
38 | /* Allows to see low level AST in C and C++ frontends. */ |
39 | DEFEVENT (PLUGIN_PRE_GENERICIZE) |
40 | |
41 | /* Called before GCC exits. */ |
42 | DEFEVENT (PLUGIN_FINISH) |
43 | |
44 | /* Information about the plugin. */ |
45 | DEFEVENT (PLUGIN_INFO) |
46 | |
47 | /* Called at start of GCC Garbage Collection. */ |
48 | DEFEVENT (PLUGIN_GGC_START) |
49 | |
50 | /* Extend the GGC marking. */ |
51 | DEFEVENT (PLUGIN_GGC_MARKING) |
52 | |
53 | /* Called at end of GGC. */ |
54 | DEFEVENT (PLUGIN_GGC_END) |
55 | |
56 | /* Register an extra GGC root table. */ |
57 | DEFEVENT (PLUGIN_REGISTER_GGC_ROOTS) |
58 | |
59 | /* Called during attribute registration. */ |
60 | DEFEVENT (PLUGIN_ATTRIBUTES) |
61 | |
62 | /* Called before processing a translation unit. */ |
63 | DEFEVENT (PLUGIN_START_UNIT) |
64 | |
65 | /* Called during pragma registration. */ |
66 | DEFEVENT (PLUGIN_PRAGMAS) |
67 | |
68 | /* Called before first pass from all_passes. */ |
69 | DEFEVENT (PLUGIN_ALL_PASSES_START) |
70 | |
71 | /* Called after last pass from all_passes. */ |
72 | DEFEVENT (PLUGIN_ALL_PASSES_END) |
73 | |
74 | /* Called before first ipa pass. */ |
75 | DEFEVENT (PLUGIN_ALL_IPA_PASSES_START) |
76 | |
77 | /* Called after last ipa pass. */ |
78 | DEFEVENT (PLUGIN_ALL_IPA_PASSES_END) |
79 | |
80 | /* Allows to override pass gate decision for current_pass. */ |
81 | DEFEVENT (PLUGIN_OVERRIDE_GATE) |
82 | |
83 | /* Called before executing a pass. */ |
84 | DEFEVENT (PLUGIN_PASS_EXECUTION) |
85 | |
86 | /* Called before executing subpasses of a GIMPLE_PASS in |
87 | execute_ipa_pass_list. */ |
88 | DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_START) |
89 | |
90 | /* Called after executing subpasses of a GIMPLE_PASS in |
91 | execute_ipa_pass_list. */ |
92 | DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_END) |
93 | |
94 | /* Called when a pass is first instantiated. */ |
95 | DEFEVENT (PLUGIN_NEW_PASS) |
96 | |
97 | /* Called when a file is #include-d or given via the #line directive. |
98 | this could happen many times. The event data is the included file path, |
99 | as a const char* pointer. */ |
100 | DEFEVENT (PLUGIN_INCLUDE_FILE) |
101 | |
102 | /* Called when -fanalyzer starts. The event data is an |
103 | ana::plugin_analyzer_init_iface *. */ |
104 | DEFEVENT (PLUGIN_ANALYZER_INIT) |
105 | |
106 | /* When adding a new hard-coded plugin event, don't forget to edit in |
107 | file plugin.cc the functions register_callback and |
108 | invoke_plugin_callbacks_full accordingly! */ |
109 | |
110 | /* After the hard-coded events above, plugins can dynamically allocate events |
111 | at run time. |
112 | PLUGIN_EVENT_FIRST_DYNAMIC only appears as last enum element. */ |
113 | |