1 /* This file contains the definitions for plugin events in GCC.
2 Copyright (C
) 2009-2022 Free Software Foundation
, Inc.
4 This file is part of GCC.
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
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
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
/>.
*/
20 /* Called before parsing the body of a function.
*/
21 DEFEVENT (PLUGIN_START_PARSE_FUNCTION
)
23 /* After finishing parsing a function.
*/
24 DEFEVENT (PLUGIN_FINISH_PARSE_FUNCTION
)
26 /* To hook into pass manager.
*/
27 DEFEVENT (PLUGIN_PASS_MANAGER_SETUP
)
29 /* After finishing parsing a type.
*/
30 DEFEVENT (PLUGIN_FINISH_TYPE
)
32 /* After finishing parsing a declaration.
*/
33 DEFEVENT (PLUGIN_FINISH_DECL
)
35 /* Useful for summary processing.
*/
36 DEFEVENT (PLUGIN_FINISH_UNIT
)
38 /* Allows to see low level AST in C and C
++ frontends.
*/
39 DEFEVENT (PLUGIN_PRE_GENERICIZE
)
41 /* Called before GCC exits.
*/
42 DEFEVENT (PLUGIN_FINISH
)
44 /* Information about the plugin.
*/
45 DEFEVENT (PLUGIN_INFO
)
47 /* Called at start of GCC Garbage Collection.
*/
48 DEFEVENT (PLUGIN_GGC_START
)
50 /* Extend the GGC marking.
*/
51 DEFEVENT (PLUGIN_GGC_MARKING
)
53 /* Called at end of GGC.
*/
54 DEFEVENT (PLUGIN_GGC_END
)
56 /* Register an extra GGC root table.
*/
57 DEFEVENT (PLUGIN_REGISTER_GGC_ROOTS
)
59 /* Called during attribute registration.
*/
60 DEFEVENT (PLUGIN_ATTRIBUTES
)
62 /* Called before processing a translation unit.
*/
63 DEFEVENT (PLUGIN_START_UNIT
)
65 /* Called during pragma registration.
*/
66 DEFEVENT (PLUGIN_PRAGMAS
)
68 /* Called before first pass from all_passes.
*/
69 DEFEVENT (PLUGIN_ALL_PASSES_START
)
71 /* Called after last pass from all_passes.
*/
72 DEFEVENT (PLUGIN_ALL_PASSES_END
)
74 /* Called before first ipa pass.
*/
75 DEFEVENT (PLUGIN_ALL_IPA_PASSES_START
)
77 /* Called after last ipa pass.
*/
78 DEFEVENT (PLUGIN_ALL_IPA_PASSES_END
)
80 /* Allows to override pass gate decision for current_pass.
*/
81 DEFEVENT (PLUGIN_OVERRIDE_GATE
)
83 /* Called before executing a pass.
*/
84 DEFEVENT (PLUGIN_PASS_EXECUTION
)
86 /* Called before executing subpasses of a GIMPLE_PASS in
87 execute_ipa_pass_list.
*/
88 DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_START
)
90 /* Called after executing subpasses of a GIMPLE_PASS in
91 execute_ipa_pass_list.
*/
92 DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_END
)
94 /* Called when a pass is first instantiated.
*/
95 DEFEVENT (PLUGIN_NEW_PASS
)
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
)
102 /* Called when
-fanalyzer starts. The event data is an
103 ana
::plugin_analyzer_init_iface
*.
*/
104 DEFEVENT (PLUGIN_ANALYZER_INIT
)
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! */
110 /* After the hard-coded events above, plugins can dynamically allocate events
112 PLUGIN_EVENT_FIRST_DYNAMIC only appears as last enum element. */