make it possible to specify custom mode for set lowering
[libfirm] / include / libfirm / irnode.h
index 1d321ff..d51649e 100644 (file)
@@ -283,6 +283,19 @@ ir_node  *get_nodes_block (const ir_node *node);
 /** 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()
@@ -368,6 +381,7 @@ void      mark_Block_block_visited(ir_node *node);
 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.
@@ -382,6 +396,8 @@ int       get_Block_cg_n_cfgpreds(ir_node *node);
 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. */
@@ -1157,6 +1173,7 @@ void    set_Pin_op(ir_node *pin, ir_node *node);
 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. */