/* 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. */
#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 */
} free_attr;
/** InstOf attributes */
-typedef struct
-{
+typedef struct {
ir_type *ent;
int dfn;
} io_attr;
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 */
} copyb_attr;
+/** Bound attribute */
+typedef struct {
+ except_attr exc; /**< the exception attribute. MUST be the first one. */
+} bound_attr;
+
/**
* Edge info to put into an irn.
*/
end_attr end; /**< For EndReg, EndExcept */
except_attr except; /**< For Phi node construction in case of exceptions */
copyb_attr copyb; /**< For CopyB operation */
+ bound_attr bound; /**< For Bound operation */
} attr;
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
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);
}
#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)