GCC Middle and Back End API Reference
opt_pass Class Reference

#include <tree-pass.h>

Inheritance diagram for opt_pass:
Collaboration diagram for opt_pass:

Public Member Functions

virtual ~opt_pass ()
virtual opt_passclone ()
virtual bool gate ()
virtual unsigned int execute ()

Data Fields

struct opt_passsub
struct opt_passnext
int static_pass_number
enum opt_pass_type type
const char * name
unsigned int optinfo_flags
bool has_gate
bool has_execute
timevar_id_t tv_id
unsigned int properties_required
unsigned int properties_provided
unsigned int properties_destroyed
unsigned int todo_flags_start
unsigned int todo_flags_finish

Protected Member Functions

 opt_pass (const pass_data &, gcc::context *)

Protected Attributes


Detailed Description

   An instance of a pass.  This is also "pass_data" to minimize the
   changes in existing code.  

Constructor & Destructor Documentation

virtual opt_pass::~opt_pass ( )
opt_pass::opt_pass ( const pass_data data,
gcc::context ctxt 

Member Function Documentation

opt_pass * opt_pass::clone ( )
     Create a copy of this pass.

     Passes that can have multiple instances must provide their own
     implementation of this, to ensure that any sharing of state between
     this instance and the copy is "wired up" correctly.

     The default implementation prints an error message and aborts.  
   Most passes are single-instance (within their context) and thus don't
   need to implement cloning, but passes that support multiple instances
   *must* provide their own implementation of the clone method.

   Handle this by providing a default implemenation, but make it a fatal
   error to call it.  

Referenced by add_pass_instance(), execute_fold_all_builtins(), and gate_copyrename().

unsigned int opt_pass::execute ( )
     This is the code to run.  If has_execute is false, then there should
     be sub-passes otherwise this pass does nothing.
     The return value contains TODOs to execute in addition to those in

Referenced by execute_fold_all_builtins(), gate_check_data_deps(), gate_copyrename(), gate_tree_loop_vectorize(), gate_tree_ssa_loop_ivopts(), make_pass_graphite(), mark_operand_necessary(), replace_profitable_candidates(), rewrite_blocks(), rtl_loop_done(), rtl_loop_init(), tree_ssa_loop_bounds(), and tree_ssa_loop_done().

bool opt_pass::gate ( )
     If has_gate is set, this pass and all sub-passes are executed only if
     the function returns true.
     The default implementation returns true.  

Referenced by gate_check_data_deps(), gate_copyrename(), gate_tree_loop_vectorize(), gate_tree_ssa_loop_ivopts(), make_pass_graphite(), mark_operand_necessary(), replace_profitable_candidates(), and rewrite_blocks().

Field Documentation

bool pass_data::has_execute
     If true, this pass has its own implementation of the opt_pass::execute
bool pass_data::has_gate
     If true, this pass has its own implementation of the opt_pass::gate
gcc::context* opt_pass::m_ctxt
const char* pass_data::name
     Terse name of the pass used as a fragment of the dump file
     name.  If the name starts with a star, no dump happens. 

Referenced by gcc::pass_manager::execute_pass_mode_switching(), is_pass_explicitly_enabled_or_disabled(), and gcc::pass_manager::set_pass_for_id().

struct opt_pass* opt_pass::next
     Next in the list of passes to run, independent of gate predicate.  

Referenced by add_pass_instance().

unsigned int pass_data::optinfo_flags
     The -fopt-info optimization group flags as defined in dumpfile.h. 
unsigned int pass_data::properties_destroyed
unsigned int pass_data::properties_provided
unsigned int pass_data::properties_required
     Sets of properties input and output from this pass.  
int opt_pass::static_pass_number
struct opt_pass* opt_pass::sub
     A list of sub-passes to run, dependent on gate predicate.  

Referenced by ipa_write_summaries().

unsigned int pass_data::todo_flags_finish
unsigned int pass_data::todo_flags_start
     Flags indicating common sets things to do before and after.  

Referenced by is_pass_explicitly_enabled_or_disabled().

timevar_id_t pass_data::tv_id
     The timevar id associated with this pass.  
     ??? Ideally would be dynamically assigned.  

Referenced by ipa_write_summaries().

enum opt_pass_type pass_data::type
     Optimization pass type.  

Referenced by add_pass_instance(), and ipa_write_summaries().

The documentation for this class was generated from the following files: