+ /* Copy nodes remembered in irg fields first.
+ The optimization contains tests against these fields, e.g., not
+ to optimize the start block away. Therefore these fields have to
+ be fixed first.
+ Further setting these fields in copy_node would impose additional
+ tests for all nodes of a kind.
+ Predict the visited flag the walker will use! */
+ /* Copy the start Block node */
+ old_node = irg->start_block;
+ new_node = new_r_Block (current_ir_graph, 0, NULL); /* new_r_Block calls
+ no optimization --> save */
+ irg->start_block = new_node;
+ set_new_node (old_node, new_node);
+ set_irn_visited (old_node, get_irg_visited(current_ir_graph)+1);
+ /* Copy the Start node */
+ old_node = irg->start;
+ new_node = new_r_Start (current_ir_graph, irg->start_block);
+ irg->start = new_node;
+ DDMSG2(new_node);
+ set_new_node (old_node, new_node);
+ set_irn_visited (old_node, get_irg_visited(current_ir_graph)+1);
+ /* Copy the Bad node */
+ old_node = irg->bad;
+ new_node = new_ir_node (irg, irg->start_block, op_Bad, mode_T, 0, NULL);
+ irg->bad = new_node;
+ set_new_node (old_node, new_node);
+ set_irn_visited (old_node, get_irg_visited(current_ir_graph)+1);
+ /* Copy the Projs for the Start's results. */
+ old_node = irg->frame;
+ new_node = new_r_Proj (irg, irg->start_block, irg->start, mode_p, pns_frame_base);
+ irg->frame = new_node;
+ set_new_node (old_node, new_node);
+ set_irn_visited (old_node, get_irg_visited(current_ir_graph)+1);