added data for post-dominance
[libfirm] / ir / ir / irnode_t.h
index 6a8f724..6a3f03e 100644 (file)
@@ -50,22 +50,21 @@ typedef struct {
   /* Attributes private to construction: */
   unsigned matured:1;         /**< if set, all in-nodes of the block are fixed */
   unsigned dead:1;            /**< if set, the block is dead (and could be replace by a Bad */
-  struct ir_node **graph_arr; /**< array to store all parameters */
+  ir_node **graph_arr;        /**< array to store all parameters */
   /* Attributes holding analyses information */
-  struct dom_info dom;        /**< Datastructure that holds information about dominators.
-                 @@@ @todo
-                 Eventually overlay with graph_arr as only valid
-                 in different phases.  Eventually inline the whole
-                 datastructure. */
-  /*   exc_t exc;  */            /**< role of this block for exception handling */
-  /*   ir_node *handler_entry; */    /**< handler entry block iff this block is part of a region */
+  dom_info dom;               /**< Datastructure that holds information about dominators.
+                                   @@@ @todo
+                                   Eventually overlay with graph_arr as only valid
+                                   in different phases.  Eventually inline the whole
+                                   datastructure. */
+  dom_info pdom;              /**< Datastructure that holds information about post-dominators. */
   ir_node ** in_cg;           /**< array with predecessors in
-                   * interprocedural_view, if they differ
-                   * from intraprocedural predecessors */
+                               * interprocedural_view, if they differ
+                               * from intraprocedural predecessors */
   int *backedge;              /**< Field n set to true if pred n is backedge.
-                     @@@ @todo Ev. replace by bitfield! */
+                                   @@@ @todo Ev. replace by bit field! */
   int *cg_backedge;           /**< Field n set to true if pred n is interprocedural backedge.
-                     @@@ @todo Ev. replace by bitfield! */
+                                   @@@ @todo Ev. replace by bit field! */
   ir_extblk *extblk;          /**< the extended basic block this block belongs to */
 
   struct list_head succ_head; /**< A list head for all successor edges of a block. */
@@ -112,6 +111,7 @@ typedef struct {
 #endif
 } except_attr;
 
+/** Call attributes */
 typedef struct {
   except_attr    exc;           /**< the exception attribute. MUST be the first one. */
   ir_type *cld_tp;              /**< type of called procedure */
@@ -132,8 +132,7 @@ typedef struct {
 } free_attr;
 
 /** InstOf attributes */
-typedef struct
-{
+typedef struct {
   ir_type *ent;
   int dfn;
 } io_attr;
@@ -176,6 +175,7 @@ typedef struct {
 
 typedef pn_Cmp confirm_attr;    /**< Attribute to hold compare operation */
 
+/** CopyB attribute */
 typedef struct {
   except_attr    exc;           /**< the exception attribute. MUST be the first one. */
   ir_type        *data_type;    /**< type of the copied entity */
@@ -232,8 +232,8 @@ struct ir_node {
   firm_kind kind;          /**< distinguishes this node from others */
   ir_op *op;               /**< Opcode of this node. */
   ir_mode *mode;           /**< Mode of this node. */
-  unsigned long visited;   /**< visited counter for walks of the graph */
   struct ir_node **in;     /**< array with predecessors / operands */
+  unsigned long visited;   /**< visited counter for walks of the graph */
   void *link;              /**< to attach additional information to the node, e.g.
                               used while construction to link Phi0 nodes and
                              during optimization to link to nodes that
@@ -709,11 +709,11 @@ static INLINE ir_type *_get_irn_type(ir_node *node) {
   return _get_irn_op(node)->ops.get_type(node);
 }
 
-static INLINE ir_type *get_irn_type_attr(ir_node *node) {
+static INLINE ir_type *_get_irn_type_attr(ir_node *node) {
   return _get_irn_op(node)->ops.get_type_attr(node);
 }
 
-static INLINE entity *get_irn_entity_attr(ir_node *node) {
+static INLINE entity *_get_irn_entity_attr(ir_node *node) {
   return _get_irn_op(node)->ops.get_entity_attr(node);
 }
 
@@ -772,6 +772,8 @@ static INLINE void _set_Cond_jmp_pred(ir_node *node, cond_jmp_predicate pred) {
 #define classify_Const(node)                  _classify_Const(node)
 #define is_irn_forking(node)                  _is_irn_forking(node)
 #define get_irn_type(node)                    _get_irn_type(node)
+#define get_irn_type_attr(node)               _get_irn_type_attr(node)
+#define get_irn_entity_attr(node)             _get_irn_entity_attr(node)
 #define is_irn_constlike(node)                _is_irn_constlike(node)
 #define get_Cond_jmp_pred(node)               _get_Cond_jmp_pred(node)
 #define set_Cond_jmp_pred(node, pred)         _set_Cond_jmp_pred(node, pred)