-ir_node *new_rd_Start(dbg_info *db, ir_graph *irg)
-{
- ir_node *block = get_irg_start_block(irg);
- ir_node *res = new_ir_node(db, irg, block, op_Start, mode_T, 0, NULL);
-
- res = optimize_node(res);
- irn_verify_irg(res, irg);
- return res;
-}
-
-ir_node *new_rd_End(dbg_info *db, ir_graph *irg)
-{
- ir_node *block = get_irg_end_block(irg);
- ir_node *res = new_ir_node(db, irg, block, op_End, mode_X, -1, NULL);
-
- res = optimize_node(res);
- irn_verify_irg(res, irg);
- return res;
-}
-
-/**
- * Creates a Phi node with all predecessors. Calling this constructor
- * is only allowed if the corresponding block is mature.
- */
-ir_node *new_rd_Phi(dbg_info *db, ir_node *block, int arity, ir_node **in,
- ir_mode *mode)
-{
- ir_graph *irg = get_irn_irg(block);
- ir_node *res = new_ir_node(db, irg, block, op_Phi, mode, arity, in);
- res->attr.phi.u.backedge = new_backedge_arr(irg->obst, arity);
-
- res = optimize_node(res);
- irn_verify_irg(res, irg);
-
- /* Memory Phis in endless loops must be kept alive.
- As we can't distinguish these easily we keep all of them alive. */
- if (is_Phi(res) && mode == mode_M)
- add_End_keepalive(get_irg_end(irg), res);
- return res;
-}
-
-ir_node *new_rd_Const(dbg_info *db, ir_graph *irg, tarval *con)
-{
- ir_node *block = get_irg_start_block(irg);
- ir_mode *mode = get_tarval_mode(con);
- ir_node *res = new_ir_node(db, irg, block, op_Const, mode, 0, NULL);
- res->attr.con.tarval = con;
-
- res = optimize_node (res);
- irn_verify_irg(res, irg);
-
- return res;
-}
-