/* This file contains the definitions for plugin events in GCC.
   Copyright (C) 2009-2013 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */


/* To hook into pass manager.  */
DEFEVENT (PLUGIN_PASS_MANAGER_SETUP)

/* After finishing parsing a type.  */
DEFEVENT (PLUGIN_FINISH_TYPE)

/* After finishing parsing a declaration. */
DEFEVENT (PLUGIN_FINISH_DECL)

/* Useful for summary processing.  */
DEFEVENT (PLUGIN_FINISH_UNIT)

/* Allows to see low level AST in C and C++ frontends. */
DEFEVENT (PLUGIN_PRE_GENERICIZE)

/* Called before GCC exits.  */
DEFEVENT (PLUGIN_FINISH)

/* Information about the plugin. */
DEFEVENT (PLUGIN_INFO)

/* Called at start of GCC Garbage Collection. */
DEFEVENT (PLUGIN_GGC_START)

/* Extend the GGC marking. */
DEFEVENT (PLUGIN_GGC_MARKING)

/* Called at end of GGC. */
DEFEVENT (PLUGIN_GGC_END)

/* Register an extra GGC root table. */
DEFEVENT (PLUGIN_REGISTER_GGC_ROOTS)

/* Register an extra GGC cache table. */
DEFEVENT (PLUGIN_REGISTER_GGC_CACHES)

/* Called during attribute registration.  */
DEFEVENT (PLUGIN_ATTRIBUTES)

/* Called before processing a translation unit.  */
DEFEVENT (PLUGIN_START_UNIT)

/* Called during pragma registration.  */
DEFEVENT (PLUGIN_PRAGMAS)

/* Called before first pass from all_passes.  */
DEFEVENT (PLUGIN_ALL_PASSES_START)

/* Called after last pass from all_passes.  */
DEFEVENT (PLUGIN_ALL_PASSES_END)

/* Called before first ipa pass.  */
DEFEVENT (PLUGIN_ALL_IPA_PASSES_START)

/* Called after last ipa pass.  */
DEFEVENT (PLUGIN_ALL_IPA_PASSES_END)

/* Allows to override pass gate decision for current_pass.  */
DEFEVENT (PLUGIN_OVERRIDE_GATE)

/* Called before executing a pass.  */
DEFEVENT (PLUGIN_PASS_EXECUTION)

/* Called before executing subpasses of a GIMPLE_PASS in
   execute_ipa_pass_list.  */
DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_START)

/* Called after executing subpasses of a GIMPLE_PASS in
   execute_ipa_pass_list.  */
DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_END)

/* Called when a pass is first instantiated.  */
DEFEVENT (PLUGIN_NEW_PASS)

/* After the hard-coded events above, plugins can dynamically allocate events
   at run time.
   PLUGIN_EVENT_FIRST_DYNAMIC only appears as last enum element.  */
