- ir_graph *irg = current_ir_graph;
-
- default_copy_attr(old_node, new_node);
- new_node->attr.block.phis = NULL;
- new_node->attr.block.cg_backedge = NULL;
- new_node->attr.block.backedge = new_backedge_arr(irg->obst, get_irn_arity(new_node));
+ default_copy_attr(irg, old_node, new_node);
+ new_node->attr.block.irg.irg = irg;
+ new_node->attr.block.phis = NULL;
+ new_node->attr.block.cg_backedge = NULL;
+ new_node->attr.block.backedge = new_backedge_arr(irg->obst, get_irn_arity(new_node));
+ new_node->attr.block.block_visited = 0;
+ memset(&new_node->attr.block.dom, 0, sizeof(new_node->attr.block.dom));
+ memset(&new_node->attr.block.pdom, 0, sizeof(new_node->attr.block.pdom));
+ /* It should be safe to copy the entity here, as it has no back-link to the old block.
+ * It serves just as a label number, so copying a labeled block results in an exact copy.
+ * This is at least what we need for DCE to work. */
+ new_node->attr.block.entity = old_node->attr.block.entity;
+ new_node->attr.block.phis = NULL;