+/**
+ * Sets the Phi list of a block.
+ */
+static inline void
+_set_Block_phis(ir_node *block, ir_node *phi) {
+ assert(_is_Block(block));
+ assert(phi == NULL || _is_Phi(phi));
+ block->attr.block.phis = phi;
+}
+
+/**
+ * Returns the link of a node.
+ * Intern version of libFirm.
+ */
+static inline ir_node *
+_get_Block_phis(const ir_node *block) {
+ assert(_is_Block(block));
+ return block->attr.block.phis;
+}
+
+/**
+ * Sets the next link of a Phi.
+ */
+static inline void
+_set_Phi_next(ir_node *phi, ir_node *next) {
+ assert(_is_Phi(phi));
+ phi->attr.phi.next = next;
+}
+
+/**
+ * Returns the link of a node.
+ * Intern version of libFirm.
+ */
+static inline ir_node *
+_get_Phi_next(const ir_node *phi) {
+ assert(_is_Phi(phi));
+ return phi->attr.phi.next;
+}
+
+/** Add a Phi node to the list of Block Phi's. */
+static inline void
+_add_Block_phi(ir_node *block, ir_node *phi) {
+ _set_Phi_next(phi, _get_Block_phis(block));
+ _set_Block_phis(block, phi);
+}
+
+/** Get the Block mark (single bit). */
+static inline unsigned
+_get_Block_mark(const ir_node *block) {
+ assert(_is_Block(block));
+ return block->attr.block.marked;
+}
+
+/** Set the Block mark (single bit). */
+static inline void
+_set_Block_mark(ir_node *block, unsigned mark) {
+ assert(_is_Block(block));
+ block->attr.block.marked = mark;
+}
+
+/** Returns non-zero if a node is a routine parameter. */
+static inline int
+_is_arg_Proj(const ir_node *node) {
+ if (! is_Proj(node))
+ return 0;
+ node = get_Proj_pred(node);
+ if (! is_Proj(node))
+ return 0;
+ return pn_Start_T_args == get_Proj_proj(node) && is_Start(get_Proj_pred(node));
+}
+
+