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

Header file for minimum-cost maximal flow routines used to smooth basic block and edge frequency counts. Copyright (C) 2008-2013 Free Software Foundation, Inc. Contributed by Paul Yuan (yingb.nosp@m.o.co.nosp@m.m@gma.nosp@m.il.c.nosp@m.om) and Vinodha Ramasamy (vinod.nosp@m.ha@g.nosp@m.oogle.nosp@m..com).

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/. 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: