GCC Middle and Back End API Reference

Data Fields  
int  size 
vec< int >  nodes 
vec< int >  edge_list 
vec< source_location >  edge_locus 
sbitmap  visited 
vec< int >  stack 
var_map  map 
edge  e 
vec< int >  const_dests 
vec< tree >  const_copies 
vec< source_location >  copy_locus 
Used to hold all the components required to do SSA PHI elimination. The node and pred/succ list is a simple linear list of nodes and edges represented as pairs of nodes. The predecessor and successor list: Nodes are entered in pairs, where [0] >PRED, [1]>SUCC. All the even indexes in the array represent predecessors, all the odd elements are successors. Rationale: When implemented as bitmaps, very large programs SSA>Normal times were being dominated by clearing the interference graph. Typically this list of edges is extremely small since it only includes PHI results and uses from a single edge which have not coalesced with each other. This means that no virtual PHI nodes are included, and empirical evidence suggests that the number of edges rarely exceed 3, and in a bootstrap of GCC, the maximum size encountered was 7. This also limits the number of possible nodes that are involved to rarely more than 6, and in the bootstrap of gcc, the maximum number of nodes encountered was 12.
Referenced by insert_part_to_rtx_on_edge().
vec<int> _elim_graph::const_dests 
List of constant copies to emit. These are pushed on in pairs.
Referenced by insert_part_to_rtx_on_edge().
vec<source_location> _elim_graph::copy_locus 
Source locations for any constant copies.
Referenced by insert_part_to_rtx_on_edge().
edge _elim_graph::e 
Edge being eliminated by this graph.
Referenced by elim_unvisited_predecessor().
vec<int> _elim_graph::edge_list 
The predecessor and successor edge list.
Referenced by delete_elim_graph(), elim_graph_size(), and insert_part_to_rtx_on_edge().
vec<source_location> _elim_graph::edge_locus 
Source locus on each edge
Referenced by delete_elim_graph(), elim_graph_size(), and insert_part_to_rtx_on_edge().
var_map _elim_graph::map 
The variable partition map.
Referenced by elim_unvisited_predecessor().
vec<int> _elim_graph::nodes 
List of nodes in the elimination graph.
Referenced by clear_elim_graph(), and insert_part_to_rtx_on_edge().
int _elim_graph::size 
Size of the elimination vectors.
vec<int> _elim_graph::stack 
Stack for visited nodes.
Referenced by eliminate_build(), and insert_part_to_rtx_on_edge().
sbitmap _elim_graph::visited 
Visited vector.
Referenced by elim_unvisited_predecessor(), eliminate_build(), and insert_part_to_rtx_on_edge().