GCC Middle and Back End API Reference
edge_info Struct Reference

#include <profile.h>

Collaboration diagram for edge_info:

Data Fields

unsigned int count_valid:1
unsigned int on_tree:1
unsigned int ignore:1
tree lhs
tree rhs
vec< cond_equivalencecond_equivalences

Detailed Description

   Additional information about edges. 
   Structure for recording edge equivalences as well as any pending
   edge redirections during the dominator optimizer.

   Computing and storing the edge equivalences instead of creating
   them on-demand can save significant amounts of time, particularly
   for pathological cases involving switch statements.

   These structures live for a single iteration of the dominator
   optimizer in the edge's AUX field.  At the end of an iteration we
   free each of these structures and update the AUX field to point
   to any requested redirection target (the code for updating the
   CFG and SSA graph for edge redirection expects redirection edge
   targets to be in the AUX field for each edge.  

Field Documentation

vec<cond_equivalence> edge_info::cond_equivalences
     Traversing an edge may also indicate one or more particular conditions
     are true or false.  

Referenced by debug_dominator_optimization_stats(), free_expr_hash_elt(), and record_cond().

unsigned int edge_info::count_valid
unsigned int edge_info::ignore
     Pretend this edge does not exist (it is abnormal and we've
     inserted a fake to compensate).  

Referenced by find_group(), find_working_set(), instrument_edges(), and set_bb_counts().

tree edge_info::lhs
     If this edge creates a simple equivalence, the LHS and RHS of
     the equivalence will be stored here.  

Referenced by cprop_into_successor_phis(), record_edge_info(), and record_equality().

unsigned int edge_info::on_tree
     Is on the spanning tree.  

Referenced by find_working_set(), instrument_edges(), and set_bb_counts().

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