ir_node *be_new_d_Copy(dbg_info *const dbgi, ir_node *const block, ir_node *const op) { ir_graph *const irg = get_irn_irg(block); ir_node *const in[] = { op }; ir_node *const res = new_ir_node(dbgi, irg, block, op_be_Copy, get_irn_mode(op), ARRAY_SIZE(in), in); set_copy_info(res, irg, op, arch_irn_flags_none); return res; }
ir_node *be_new_Copy(ir_node *bl, ir_node *op) { ir_graph *irg = get_irn_irg(bl); ir_node *in[] = { op }; ir_node *res = new_ir_node(NULL, irg, bl, op_be_Copy, get_irn_mode(op), ARRAY_SIZE(in), in); set_copy_info(res, irg, op, arch_irn_flags_none); return res; }
ir_node *be_new_CopyKeep(ir_node *const bl, ir_node *const src, int const n, ir_node *const *const in_keep) { ir_mode *mode = get_irn_mode(src); ir_graph *irg = get_irn_irg(bl); int arity = n+1; ir_node **in = ALLOCAN(ir_node*, arity); in[0] = src; MEMCPY(&in[1], in_keep, n); ir_node *irn = new_ir_node(NULL, irg, bl, op_be_CopyKeep, mode, arity, in); set_copy_info(irn, irg, src, arch_irn_flag_schedule_first); for (int i = 0; i < n; ++i) { ir_node *pred = in_keep[i]; arch_register_req_t const *const req = arch_get_irn_register_req(pred); be_node_set_register_req_in(irn, i + 1, req->cls->class_req); } return irn; }