+
+ init = '''
+ /* macroblock header */
+ res->in[0] = res;
+
+ res->attr.block.is_dead = 0;
+ res->attr.block.is_mb_head = 1;
+ res->attr.block.has_label = 0;
+ res->attr.block.irg = irg;
+ res->attr.block.backedge = new_backedge_arr(irg->obst, arity);
+ res->attr.block.in_cg = NULL;
+ res->attr.block.cg_backedge = NULL;
+ res->attr.block.extblk = NULL;
+ res->attr.block.mb_depth = 0;
+ res->attr.block.label = 0;
+
+ set_Block_matured(res, 1);
+ set_Block_block_visited(res, 0);
+ ''',
+
+ d_pre = '''
+ int i;
+ int has_unknown = 0;
+ ''',
+
+ d_post = '''
+ /* Create and initialize array for Phi-node construction. */
+ if (get_irg_phase_state(current_ir_graph) == phase_building) {
+ res->attr.block.graph_arr = NEW_ARR_D(ir_node *, current_ir_graph->obst,
+ current_ir_graph->n_loc);
+ memset(res->attr.block.graph_arr, 0, sizeof(ir_node *)*current_ir_graph->n_loc);
+ }
+
+ for (i = arity - 1; i >= 0; i--)
+ if (is_Unknown(in[i])) {
+ has_unknown = 1;
+ break;
+ }
+
+ if (!has_unknown) res = optimize_node(res);
+
+ current_ir_graph->current_block = res;
+
+ IRN_VRFY_IRG(res, current_ir_graph);
+ ''',
+