1 /* This file contains the definitions for plugin events in GCC.
2 Copyright (C
) 2009-2014 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
/>.
*/
21 /* To hook into pass manager.
*/
22 DEFEVENT (PLUGIN_PASS_MANAGER_SETUP
)
24 /* After finishing parsing a type.
*/
25 DEFEVENT (PLUGIN_FINISH_TYPE
)
27 /* After finishing parsing a declaration.
*/
28 DEFEVENT (PLUGIN_FINISH_DECL
)
30 /* Useful for summary processing.
*/
31 DEFEVENT (PLUGIN_FINISH_UNIT
)
33 /* Allows to see low level AST in C and C
++ frontends.
*/
34 DEFEVENT (PLUGIN_PRE_GENERICIZE
)
36 /* Called before GCC exits.
*/
37 DEFEVENT (PLUGIN_FINISH
)
39 /* Information about the plugin.
*/
40 DEFEVENT (PLUGIN_INFO
)
42 /* Called at start of GCC Garbage Collection.
*/
43 DEFEVENT (PLUGIN_GGC_START
)
45 /* Extend the GGC marking.
*/
46 DEFEVENT (PLUGIN_GGC_MARKING
)
48 /* Called at end of GGC.
*/
49 DEFEVENT (PLUGIN_GGC_END
)
51 /* Register an extra GGC root table.
*/
52 DEFEVENT (PLUGIN_REGISTER_GGC_ROOTS
)
54 /* Register an extra GGC cache table.
*/
55 DEFEVENT (PLUGIN_REGISTER_GGC_CACHES
)
57 /* Called during attribute registration.
*/
58 DEFEVENT (PLUGIN_ATTRIBUTES
)
60 /* Called before processing a translation unit.
*/
61 DEFEVENT (PLUGIN_START_UNIT
)
63 /* Called during pragma registration.
*/
64 DEFEVENT (PLUGIN_PRAGMAS
)
66 /* Called before first pass from all_passes.
*/
67 DEFEVENT (PLUGIN_ALL_PASSES_START
)
69 /* Called after last pass from all_passes.
*/
70 DEFEVENT (PLUGIN_ALL_PASSES_END
)
72 /* Called before first ipa pass.
*/
73 DEFEVENT (PLUGIN_ALL_IPA_PASSES_START
)
75 /* Called after last ipa pass.
*/
76 DEFEVENT (PLUGIN_ALL_IPA_PASSES_END
)
78 /* Allows to override pass gate decision for current_pass.
*/
79 DEFEVENT (PLUGIN_OVERRIDE_GATE
)
81 /* Called before executing a pass.
*/
82 DEFEVENT (PLUGIN_PASS_EXECUTION
)
84 /* Called before executing subpasses of a GIMPLE_PASS in
85 execute_ipa_pass_list.
*/
86 DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_START
)
88 /* Called after executing subpasses of a GIMPLE_PASS in
89 execute_ipa_pass_list.
*/
90 DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_END
)
92 /* Called when a pass is first instantiated.
*/
93 DEFEVENT (PLUGIN_NEW_PASS
)
95 /* Called when a file is #include
-d or given via the #line directive.
96 this could happen many times. The event data is the included file path
,
97 as a const char
* pointer.
*/
98 DEFEVENT (PLUGIN_INCLUDE_FILE
)
100 /* When adding a new hard
-coded plugin event
, don
't forget to edit in
101 file plugin.c the functions register_callback and
102 invoke_plugin_callbacks_full accordingly! */
104 /* After the hard-coded events above, plugins can dynamically allocate events
106 PLUGIN_EVENT_FIRST_DYNAMIC only appears as last enum element. */