Added dom tree traversal
[libfirm] / ir / ana / irdom_t.h
1 /*
2  * Project:     libFIRM
3  * File name:   ir/ana/irdom_t.h
4  * Purpose:     Construct and access dominator tree -- private datastructures.
5  * Author:      Goetz Lindenmaier
6  * Modified by:
7  * Created:     2.2002
8  * CVS-ID:      $Id$
9  * Copyright:   (c) 2002-2003 Universität Karlsruhe
10  * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
11  */
12
13
14 /**
15  * @file irdom_t.h
16  *
17  * Dominator information private datastructures.
18  *
19  * @author Goetz Lindenmaier
20  *
21  */
22
23
24 # ifndef _IRDOM_T_H_
25 # define _IRDOM_T_H_
26
27 #include "irdom.h"
28
29 /** For dominator information */
30 typedef struct dom_info {
31   struct ir_node *idom;                 /**< immediate CFG dominator */
32         struct ir_node *next;           /**< The next node in the dominated
33                                                                                                                         list of @c idom. */
34         struct ir_node *first;          /**< The first node in the list of nodes
35                                                                                                                         this nodes dominates immediately. */
36         int tree_pre_num;                                       /**< The pre-order number from a dfs walk
37                                                                                                                         over the dominator tree. */
38         int max_subtree_pre_num;        /**< The largest tree pre num found in the
39                                                                                                                         dominator subtree of this node. */
40   int pre_num;                          /**< pre-order graph-walk number */
41   int dom_depth;                        /**< depth in dominator-tree */
42 } dom_info;
43
44 #endif /* _IRDOM_T_H_ */