2 * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
4 * This file is part of libFirm.
6 * This file may be distributed and/or modified under the terms of the
7 * GNU General Public License version 2 as published by the Free Software
8 * Foundation and appearing in the file LICENSE.GPL included in the
9 * packaging of this file.
11 * Licensees holding valid libFirm Professional Edition licenses may use
12 * this file in accordance with the libFirm Commercial License.
13 * Agreement provided with the Software.
15 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * @brief Provide some auxilliary structures for firm graphs.
23 * @author Florian Liekweg
26 * @note not quite complete
42 /** One dominator tree */
46 ir_graph *graph; /**< PRE */
48 ir_node **idoms; /**< idom [n] == immediate dominator of blocks [n] */
54 typedef struct dtree_t
63 /** dominator environment for a node dom_env_t::a in graph dom_env_t::graph */
64 typedef struct dom_env_t
73 /* Forwards for Globals: */
74 extern dtree_t *trees;
78 void st_build_dominator_tree (ir_graph*);
79 bool dominates (ir_graph*, ir_node*, ir_node*);
80 ir_node *get_idom (ir_graph*, ir_node*);
82 dom_env_t *get_dom_env (ir_graph*, ir_node*);
83 void delete_dom_env (dom_env_t*);
84 bool dominates_l (dom_env_t*, ir_node*);