+/* Sets the macro block header of a block. */
+void set_Block_MacroBlock(ir_node *block, ir_node *mbh) {
+ assert(is_Block(block));
+ assert(is_Block(mbh));
+ set_irn_n(block, -1, mbh);
+}
+
+/* returns the macro block header of a node. */
+ir_node *get_irn_MacroBlock(const ir_node *n) {
+ if (! is_Block(n)) {
+ n = get_nodes_block(n);
+ /* if the Block is Bad, do NOT try to get it's MB, it will fail. */
+ if (is_Bad(n))
+ return (ir_node *)n;
+ }
+ return get_Block_MacroBlock(n);
+}
+