/** Sets the Block of a node. */
void set_nodes_block (ir_node *node, ir_node *block);
+/**
+ * Return the MacroBlock the node belongs to. This is only
+ * possible for pinned nodes or if the graph is in pinned state.
+ * Otherwise the MacroBlock may be incorrect. This condition is
+ * now checked by an assertion.
+ *
+ * This works for all except Block. It can return Blocks or the Bad node.
+ *
+ * To express the difference to access routines that work for all
+ * nodes we use infix "nodes" and do not name this function
+ * get_irn_MacroBlock(). */
+ir_node *get_nodes_MacroBlock(const ir_node *node);
+
/**
* @function get_irn_block()
* @see get_nodes_block()
int Block_not_block_visited(const ir_node *node);
int Block_block_visited(const ir_node *node);
+#ifdef INTERPROCEDURAL_VIEW
/* Set and remove interprocedural predecessors. If the interprocedural
* predecessors are removed, the node has the same predecessors in
* both views.
ir_node *get_Block_cg_cfgpred(ir_node *node, int pos);
/** Frees the memory allocated for interprocedural predecessors. */
void remove_Block_cg_cfgpred_arr(ir_node *node);
+#endif
+
/** Returns the extended basic block a block belongs to. */
ir_extblk *get_Block_extbb(const ir_node *block);
/** Sets the extended basic block a block belongs to. */
typedef struct {
unsigned pos; /**< The inputs/output position for this constraint. */
ident *constraint; /**< The constraint for this input/output. */
+ ir_mode *mode; /**< The mode of the constraint. */
} ir_asm_constraint;
/** Return the assembler text of an ASM pseudo node. */