X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fir%2Fircons.c;h=fb560ad2228851ad2e3c2fe67a7b870bd1dce5cb;hb=243b24fa5361e59abba5f1678f15106e0dae375c;hp=769d7b3833a4016d6593212fb974025c8bccaa89;hpb=15841de530b03cb4269adc11d4ed59bea587faca;p=libfirm diff --git a/ir/ir/ircons.c b/ir/ir/ircons.c index 769d7b383..fb560ad22 100644 --- a/ir/ir/ircons.c +++ b/ir/ir/ircons.c @@ -55,7 +55,7 @@ typedef struct Phi_in_stack Phi_in_stack; # define IRN_VRFY_IRG(res, irg) #else # define IRN_VRFY_IRG(res, irg) irn_vrfy_irg(res, irg) -#endif +#endif /* NDEBUG */ /** * Language dependent variable initialization callback. @@ -122,7 +122,7 @@ new_bd_Phi (dbg_info *db, ir_node *block, int arity, ir_node **in, ir_mode *mode ir_node *res; ir_graph *irg = current_ir_graph; int i; - bool has_unknown = false; + int has_unknown = 0; /* Don't assert that block matured: the use of this constructor is strongly restricted ... */ @@ -135,7 +135,7 @@ new_bd_Phi (dbg_info *db, ir_node *block, int arity, ir_node **in, ir_mode *mode for (i = arity-1; i >= 0; i--) if (get_irn_op(in[i]) == op_Unknown) { - has_unknown = true; + has_unknown = 1; break; } @@ -150,7 +150,7 @@ new_bd_Phi (dbg_info *db, ir_node *block, int arity, ir_node **in, ir_mode *mode } static ir_node * -new_bd_Const_type (dbg_info *db, ir_node *block, ir_mode *mode, tarval *con, type *tp) +new_bd_Const_type (dbg_info *db, ir_node *block, ir_mode *mode, tarval *con, ir_type *tp) { ir_node *res; ir_graph *irg = current_ir_graph; @@ -241,7 +241,7 @@ new_bd_Conv (dbg_info *db, ir_node *block, ir_node *op, ir_mode *mode) } static ir_node * -new_bd_Cast (dbg_info *db, ir_node *block, ir_node *op, type *to_tp) +new_bd_Cast (dbg_info *db, ir_node *block, ir_node *op, ir_type *to_tp) { ir_node *res; ir_graph *irg = current_ir_graph; @@ -296,6 +296,7 @@ new_bd_Sub (dbg_info *db, ir_node *block, res = new_ir_node (db, irg, block, op_Sub, mode, 2, in); res = optimize_node (res); IRN_VRFY_IRG(res, irg); + return res; } @@ -595,7 +596,7 @@ new_bd_Cond (dbg_info *db, ir_node *block, ir_node *c) static ir_node * new_bd_Call (dbg_info *db, ir_node *block, ir_node *store, - ir_node *callee, int arity, ir_node **in, type *tp) + ir_node *callee, int arity, ir_node **in, ir_type *tp) { ir_node **r_in; ir_node *res; @@ -638,21 +639,6 @@ new_bd_Return (dbg_info *db, ir_node *block, return res; } -static ir_node * -new_bd_Raise (dbg_info *db, ir_node *block, ir_node *store, ir_node *obj) -{ - ir_node *in[2]; - ir_node *res; - ir_graph *irg = current_ir_graph; - - in[0] = store; - in[1] = obj; - res = new_ir_node(db, irg, block, op_Raise, mode_T, 2, in); - res = optimize_node(res); - IRN_VRFY_IRG(res, irg); - return res; -} - static ir_node * new_bd_Load (dbg_info *db, ir_node *block, ir_node *store, ir_node *adr, ir_mode *mode) @@ -693,7 +679,7 @@ new_bd_Store (dbg_info *db, ir_node *block, static ir_node * new_bd_Alloc (dbg_info *db, ir_node *block, ir_node *store, - ir_node *size, type *alloc_type, where_alloc where) + ir_node *size, ir_type *alloc_type, where_alloc where) { ir_node *in[2]; ir_node *res; @@ -712,7 +698,7 @@ new_bd_Alloc (dbg_info *db, ir_node *block, ir_node *store, static ir_node * new_bd_Free (dbg_info *db, ir_node *block, ir_node *store, - ir_node *ptr, ir_node *size, type *free_type, where_alloc where) + ir_node *ptr, ir_node *size, ir_type *free_type, where_alloc where) { ir_node *in[3]; ir_node *res; @@ -755,31 +741,9 @@ new_bd_Sel (dbg_info *db, ir_node *block, ir_node *store, ir_node *objptr, return res; } -static ir_node * -new_bd_InstOf (dbg_info *db, ir_node *block, ir_node *store, - ir_node *objptr, type *ent) -{ - ir_node **r_in; - ir_node *res; - int r_arity; - ir_graph *irg = current_ir_graph; - - r_arity = 2; - NEW_ARR_A(ir_node *, r_in, r_arity); - r_in[0] = store; - r_in[1] = objptr; - - res = new_ir_node(db, irg, block, op_Sel, mode_T, r_arity, r_in); - res->attr.io.ent = ent; - - /* res = optimize(res); */ - IRN_VRFY_IRG(res, irg); - return res; -} - static ir_node * new_bd_SymConst_type (dbg_info *db, ir_node *block, symconst_symbol value, - symconst_kind symkind, type *tp) { + symconst_kind symkind, ir_type *tp) { ir_node *res; ir_mode *mode; ir_graph *irg = current_ir_graph; @@ -942,6 +906,78 @@ new_bd_Mux (dbg_info *db, ir_node *block, return res; } +static ir_node * +new_bd_CopyB (dbg_info *db, ir_node *block, + ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type) +{ + ir_node *in[3]; + ir_node *res; + ir_graph *irg = current_ir_graph; + + in[0] = store; + in[1] = dst; + in[2] = src; + + res = new_ir_node(db, irg, block, op_CopyB, mode_T, 3, in); + + res->attr.copyb.exc.pin_state = op_pin_state_pinned; + res->attr.copyb.data_type = data_type; + res = optimize_node(res); + IRN_VRFY_IRG(res, irg); + return res; +} + +static ir_node * +new_bd_InstOf (dbg_info *db, ir_node *block, ir_node *store, + ir_node *objptr, ir_type *type) +{ + ir_node *in[2]; + ir_node *res; + ir_graph *irg = current_ir_graph; + + in[0] = store; + in[1] = objptr; + res = new_ir_node(db, irg, block, op_Sel, mode_T, 2, in); + res->attr.io.type = type; + res = optimize_node(res); + IRN_VRFY_IRG(res, irg); + return res; +} + +static ir_node * +new_bd_Raise (dbg_info *db, ir_node *block, ir_node *store, ir_node *obj) +{ + ir_node *in[2]; + ir_node *res; + ir_graph *irg = current_ir_graph; + + in[0] = store; + in[1] = obj; + res = new_ir_node(db, irg, block, op_Raise, mode_T, 2, in); + res = optimize_node(res); + IRN_VRFY_IRG(res, irg); + return res; +} + +static ir_node * +new_bd_Bound (dbg_info *db, ir_node *block, + ir_node *store, ir_node *idx, ir_node *lower, ir_node *upper) +{ + ir_node *in[4]; + ir_node *res; + ir_graph *irg = current_ir_graph; + + in[0] = store; + in[1] = idx; + in[2] = lower; + in[3] = upper; + res = new_ir_node(db, irg, block, op_Bound, mode_T, 4, in); + res->attr.copyb.exc.pin_state = op_pin_state_pinned; + res = optimize_node(res); + IRN_VRFY_IRG(res, irg); + return res; +} + /* --------------------------------------------- */ /* private interfaces, for professional use only */ /* --------------------------------------------- */ @@ -1004,7 +1040,7 @@ new_rd_Phi (dbg_info *db, ir_graph *irg, ir_node *block, int arity, ir_node **in } ir_node * -new_rd_Const_type (dbg_info *db, ir_graph *irg, ir_node *block, ir_mode *mode, tarval *con, type *tp) +new_rd_Const_type (dbg_info *db, ir_graph *irg, ir_node *block, ir_mode *mode, tarval *con, ir_type *tp) { ir_node *res; ir_graph *rem = current_ir_graph; @@ -1090,7 +1126,7 @@ new_rd_Conv (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *op, ir_mode * } ir_node * -new_rd_Cast (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *op, type *to_tp) +new_rd_Cast (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *op, ir_type *to_tp) { ir_node *res; ir_graph *rem = current_ir_graph; @@ -1408,7 +1444,7 @@ new_rd_Cond (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *c) ir_node * new_rd_Call (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, - ir_node *callee, int arity, ir_node **in, type *tp) + ir_node *callee, int arity, ir_node **in, ir_type *tp) { ir_node *res; ir_graph *rem = current_ir_graph; @@ -1434,19 +1470,6 @@ new_rd_Return (dbg_info *db, ir_graph *irg, ir_node *block, return res; } -ir_node * -new_rd_Raise (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, ir_node *obj) -{ - ir_node *res; - ir_graph *rem = current_ir_graph; - - current_ir_graph = irg; - res = new_bd_Raise(db, block, store, obj); - current_ir_graph = rem; - - return res; -} - ir_node * new_rd_Load (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, ir_node *adr, ir_mode *mode) @@ -1477,7 +1500,7 @@ new_rd_Store (dbg_info *db, ir_graph *irg, ir_node *block, ir_node * new_rd_Alloc (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, - ir_node *size, type *alloc_type, where_alloc where) + ir_node *size, ir_type *alloc_type, where_alloc where) { ir_node *res; ir_graph *rem = current_ir_graph; @@ -1491,7 +1514,7 @@ new_rd_Alloc (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, ir_node * new_rd_Free (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, - ir_node *ptr, ir_node *size, type *free_type, where_alloc where) + ir_node *ptr, ir_node *size, ir_type *free_type, where_alloc where) { ir_node *res; ir_graph *rem = current_ir_graph; @@ -1504,28 +1527,28 @@ new_rd_Free (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, } ir_node * -new_rd_Sel (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, ir_node *objptr, - int arity, ir_node **in, entity *ent) +new_rd_simpleSel (dbg_info *db, ir_graph *irg, ir_node *block, + ir_node *store, ir_node *objptr, entity *ent) { ir_node *res; ir_graph *rem = current_ir_graph; current_ir_graph = irg; - res = new_bd_Sel(db, block, store, objptr, arity, in, ent); + res = new_bd_Sel(db, block, store, objptr, 0, NULL, ent); current_ir_graph = rem; return res; } ir_node * -new_rd_InstOf (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, - ir_node *objptr, type *ent) +new_rd_Sel (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, ir_node *objptr, + int arity, ir_node **in, entity *ent) { ir_node *res; ir_graph *rem = current_ir_graph; current_ir_graph = irg; - res = new_bd_InstOf(db, block, store, objptr, ent); + res = new_bd_Sel(db, block, store, objptr, arity, in, ent); current_ir_graph = rem; return res; @@ -1533,7 +1556,7 @@ new_rd_InstOf (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, ir_node * new_rd_SymConst_type (dbg_info *db, ir_graph *irg, ir_node *block, symconst_symbol value, - symconst_kind symkind, type *tp) + symconst_kind symkind, ir_type *tp) { ir_node *res; ir_graph *rem = current_ir_graph; @@ -1553,23 +1576,23 @@ new_rd_SymConst (dbg_info *db, ir_graph *irg, ir_node *block, symconst_symbol va return res; } -ir_node *new_rd_SymConst_addr_ent (dbg_info *db, ir_graph *irg, entity *symbol, type *tp) +ir_node *new_rd_SymConst_addr_ent (dbg_info *db, ir_graph *irg, entity *symbol, ir_type *tp) { - symconst_symbol sym = {(type *)symbol}; + symconst_symbol sym = {(ir_type *)symbol}; return new_rd_SymConst_type(db, irg, irg->start_block, sym, symconst_addr_ent, tp); } -ir_node *new_rd_SymConst_addr_name (dbg_info *db, ir_graph *irg, ident *symbol, type *tp) { - symconst_symbol sym = {(type *)symbol}; +ir_node *new_rd_SymConst_addr_name (dbg_info *db, ir_graph *irg, ident *symbol, ir_type *tp) { + symconst_symbol sym = {(ir_type *)symbol}; return new_rd_SymConst_type(db, irg, irg->start_block, sym, symconst_addr_name, tp); } -ir_node *new_rd_SymConst_type_tag (dbg_info *db, ir_graph *irg, type *symbol, type *tp) { +ir_node *new_rd_SymConst_type_tag (dbg_info *db, ir_graph *irg, ir_type *symbol, ir_type *tp) { symconst_symbol sym = {symbol}; return new_rd_SymConst_type(db, irg, irg->start_block, sym, symconst_type_tag, tp); } -ir_node *new_rd_SymConst_size (dbg_info *db, ir_graph *irg, type *symbol, type *tp) { +ir_node *new_rd_SymConst_size (dbg_info *db, ir_graph *irg, ir_type *symbol, ir_type *tp) { symconst_symbol sym = {symbol}; return new_rd_SymConst_type(db, irg, irg->start_block, sym, symconst_size, tp); } @@ -1701,6 +1724,58 @@ new_rd_Mux (dbg_info *db, ir_graph *irg, ir_node *block, return res; } +ir_node *new_rd_CopyB(dbg_info *db, ir_graph *irg, ir_node *block, + ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type) +{ + ir_node *res; + ir_graph *rem = current_ir_graph; + + current_ir_graph = irg; + res = new_bd_CopyB(db, block, store, dst, src, data_type); + current_ir_graph = rem; + + return res; +} + +ir_node * +new_rd_InstOf (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, + ir_node *objptr, ir_type *type) +{ + ir_node *res; + ir_graph *rem = current_ir_graph; + + current_ir_graph = irg; + res = new_bd_InstOf(db, block, store, objptr, type); + current_ir_graph = rem; + + return res; +} + +ir_node * +new_rd_Raise (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, ir_node *obj) +{ + ir_node *res; + ir_graph *rem = current_ir_graph; + + current_ir_graph = irg; + res = new_bd_Raise(db, block, store, obj); + current_ir_graph = rem; + + return res; +} + +ir_node *new_rd_Bound(dbg_info *db, ir_graph *irg, ir_node *block, + ir_node *store, ir_node *idx, ir_node *lower, ir_node *upper) +{ + ir_node *res; + ir_graph *rem = current_ir_graph; + + current_ir_graph = irg; + res = new_bd_Bound(db, block, store, idx, lower, upper); + current_ir_graph = rem; + + return res; +} ir_node *new_r_Block (ir_graph *irg, int arity, ir_node **in) { return new_rd_Block(NULL, irg, arity, in); @@ -1724,10 +1799,6 @@ ir_node *new_r_Return (ir_graph *irg, ir_node *block, ir_node *store, int arity, ir_node **in) { return new_rd_Return(NULL, irg, block, store, arity, in); } -ir_node *new_r_Raise (ir_graph *irg, ir_node *block, - ir_node *store, ir_node *obj) { - return new_rd_Raise(NULL, irg, block, store, obj); -} ir_node *new_r_Const (ir_graph *irg, ir_node *block, ir_mode *mode, tarval *con) { return new_rd_Const(NULL, irg, block, mode, con); @@ -1739,7 +1810,7 @@ ir_node *new_r_Const_long(ir_graph *irg, ir_node *block, } ir_node *new_r_Const_type(ir_graph *irg, ir_node *block, - ir_mode *mode, tarval *con, type *tp) { + ir_mode *mode, tarval *con, ir_type *tp) { return new_rd_Const_type(NULL, irg, block, mode, con, tp); } @@ -1752,13 +1823,9 @@ ir_node *new_r_Sel (ir_graph *irg, ir_node *block, ir_node *store, entity *ent) { return new_rd_Sel(NULL, irg, block, store, objptr, n_index, index, ent); } -ir_node *new_r_InstOf (ir_graph *irg, ir_node *block, ir_node *store, ir_node *objptr, - type *ent) { - return (new_rd_InstOf (NULL, irg, block, store, objptr, ent)); -} ir_node *new_r_Call (ir_graph *irg, ir_node *block, ir_node *store, ir_node *callee, int arity, ir_node **in, - type *tp) { + ir_type *tp) { return new_rd_Call(NULL, irg, block, store, callee, arity, in, tp); } ir_node *new_r_Add (ir_graph *irg, ir_node *block, @@ -1837,7 +1904,7 @@ ir_node *new_r_Conv (ir_graph *irg, ir_node *block, ir_node *op, ir_mode *mode) { return new_rd_Conv(NULL, irg, block, op, mode); } -ir_node *new_r_Cast (ir_graph *irg, ir_node *block, ir_node *op, type *to_tp) { +ir_node *new_r_Cast (ir_graph *irg, ir_node *block, ir_node *op, ir_type *to_tp) { return new_rd_Cast(NULL, irg, block, op, to_tp); } ir_node *new_r_Phi (ir_graph *irg, ir_node *block, int arity, @@ -1853,11 +1920,11 @@ ir_node *new_r_Store (ir_graph *irg, ir_node *block, return new_rd_Store(NULL, irg, block, store, adr, val); } ir_node *new_r_Alloc (ir_graph *irg, ir_node *block, ir_node *store, - ir_node *size, type *alloc_type, where_alloc where) { + ir_node *size, ir_type *alloc_type, where_alloc where) { return new_rd_Alloc(NULL, irg, block, store, size, alloc_type, where); } ir_node *new_r_Free (ir_graph *irg, ir_node *block, ir_node *store, - ir_node *ptr, ir_node *size, type *free_type, where_alloc where) { + ir_node *ptr, ir_node *size, ir_type *free_type, where_alloc where) { return new_rd_Free(NULL, irg, block, store, ptr, size, free_type, where); } ir_node *new_r_Sync (ir_graph *irg, ir_node *block, int arity, ir_node **in) { @@ -1911,7 +1978,22 @@ ir_node *new_r_Mux (ir_graph *irg, ir_node *block, ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode) { return new_rd_Mux(NULL, irg, block, sel, ir_false, ir_true, mode); } - +ir_node *new_r_CopyB(ir_graph *irg, ir_node *block, + ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type) { + return new_rd_CopyB(NULL, irg, block, store, dst, src, data_type); +} +ir_node *new_r_InstOf (ir_graph *irg, ir_node *block, ir_node *store, ir_node *objptr, + ir_type *type) { + return (new_rd_InstOf (NULL, irg, block, store, objptr, type)); +} +ir_node *new_r_Raise (ir_graph *irg, ir_node *block, + ir_node *store, ir_node *obj) { + return new_rd_Raise(NULL, irg, block, store, obj); +} +ir_node *new_r_Bound(ir_graph *irg, ir_node *block, + ir_node *store, ir_node *idx, ir_node *lower, ir_node *upper) { + return new_rd_Bound(NULL, irg, block, store, idx, lower, upper); +} /** ********************/ /** public interfaces */ @@ -1959,7 +2041,7 @@ new_d_Block (dbg_info *db, int arity, ir_node **in) { ir_node *res; int i; - bool has_unknown = false; + int has_unknown = 0; res = new_bd_Block(db, arity, in); @@ -1972,7 +2054,7 @@ new_d_Block (dbg_info *db, int arity, ir_node **in) for (i = arity-1; i >= 0; i--) if (get_irn_op(in[i]) == op_Unknown) { - has_unknown = true; + has_unknown = 1; break; } @@ -2539,7 +2621,7 @@ get_r_frag_value_internal (ir_node *block, ir_node *cfOp, int pos, ir_mode *mode } return res; } -#endif +#endif /* PRECISE_EXC_CONTEXT */ /** computes the predecessors for the real phi node, and then @@ -2568,10 +2650,15 @@ phi_merge (ir_node *block, int pos, ir_mode *mode, ir_node **nin, int ins) (bad, jmp). In this case we call the function needlessly, eventually generating an non existent error. However, this SHOULD NOT HAPPEN, as bad control flow nodes are intercepted - before recuring. + before recurring. */ - if (default_initialize_local_variable) + if (default_initialize_local_variable) { + ir_node *rem = get_cur_block(); + + set_cur_block(block); block->attr.block.graph_arr[pos] = default_initialize_local_variable(current_ir_graph, mode, pos - 1); + set_cur_block(rem); + } else block->attr.block.graph_arr[pos] = new_Const(mode, tarval_bad); /* We don't need to care about exception ops in the start block. @@ -2815,7 +2902,7 @@ new_d_Const_long(dbg_info *db, ir_mode *mode, long value) } ir_node * -new_d_Const_type (dbg_info *db, ir_mode *mode, tarval *con, type *tp) +new_d_Const_type (dbg_info *db, ir_mode *mode, tarval *con, ir_type *tp) { return new_bd_Const_type(db, current_ir_graph->start_block, mode, con, tp); @@ -2855,7 +2942,7 @@ new_d_Conv (dbg_info *db, ir_node *op, ir_mode *mode) } ir_node * -new_d_Cast (dbg_info *db, ir_node *op, type *to_tp) +new_d_Cast (dbg_info *db, ir_node *op, ir_type *to_tp) { return new_bd_Cast(db, current_ir_graph->current_block, op, to_tp); } @@ -3056,7 +3143,7 @@ new_d_Cond (dbg_info *db, ir_node *c) ir_node * new_d_Call (dbg_info *db, ir_node *store, ir_node *callee, int arity, ir_node **in, - type *tp) + ir_type *tp) { ir_node *res; res = new_bd_Call (db, current_ir_graph->current_block, @@ -3075,13 +3162,6 @@ new_d_Return (dbg_info *db, ir_node* store, int arity, ir_node **in) store, arity, in); } -ir_node * -new_d_Raise (dbg_info *db, ir_node *store, ir_node *obj) -{ - return new_bd_Raise (db, current_ir_graph->current_block, - store, obj); -} - ir_node * new_d_Load (dbg_info *db, ir_node *store, ir_node *addr, ir_mode *mode) { @@ -3109,7 +3189,7 @@ new_d_Store (dbg_info *db, ir_node *store, ir_node *addr, ir_node *val) } ir_node * -new_d_Alloc (dbg_info *db, ir_node *store, ir_node *size, type *alloc_type, +new_d_Alloc (dbg_info *db, ir_node *store, ir_node *size, ir_type *alloc_type, where_alloc where) { ir_node *res; @@ -3124,7 +3204,7 @@ new_d_Alloc (dbg_info *db, ir_node *store, ir_node *size, type *alloc_type, ir_node * new_d_Free (dbg_info *db, ir_node *store, ir_node *ptr, - ir_node *size, type *free_type, where_alloc where) + ir_node *size, ir_type *free_type, where_alloc where) { return new_bd_Free (db, current_ir_graph->current_block, store, ptr, size, free_type, where); @@ -3147,14 +3227,7 @@ new_d_Sel (dbg_info *db, ir_node *store, ir_node *objptr, int n_index, ir_node * } ir_node * -new_d_InstOf (dbg_info *db, ir_node *store, ir_node *objptr, type *ent) -{ - return (new_bd_InstOf (db, current_ir_graph->current_block, - store, objptr, ent)); -} - -ir_node * -new_d_SymConst_type (dbg_info *db, symconst_symbol value, symconst_kind kind, type *tp) +new_d_SymConst_type (dbg_info *db, symconst_symbol value, symconst_kind kind, ir_type *tp) { return new_bd_SymConst_type (db, current_ir_graph->start_block, value, kind, tp); @@ -3243,6 +3316,42 @@ new_d_Mux (dbg_info *db, ir_node *sel, ir_node *ir_false, sel, ir_false, ir_true, mode); } +ir_node *new_d_CopyB(dbg_info *db,ir_node *store, + ir_node *dst, ir_node *src, ir_type *data_type) { + ir_node *res; + res = new_bd_CopyB(db, current_ir_graph->current_block, + store, dst, src, data_type); +#if PRECISE_EXC_CONTEXT + allocate_frag_arr(res, op_CopyB, &res->attr.copyb.exc.frag_arr); +#endif + return res; +} + +ir_node * +new_d_InstOf (dbg_info *db, ir_node *store, ir_node *objptr, ir_type *type) +{ + return new_bd_InstOf (db, current_ir_graph->current_block, + store, objptr, type); +} + +ir_node * +new_d_Raise (dbg_info *db, ir_node *store, ir_node *obj) +{ + return new_bd_Raise (db, current_ir_graph->current_block, + store, obj); +} + +ir_node *new_d_Bound(dbg_info *db,ir_node *store, + ir_node *idx, ir_node *lower, ir_node *upper) { + ir_node *res; + res = new_bd_Bound(db, current_ir_graph->current_block, + store, idx, lower, upper); +#if PRECISE_EXC_CONTEXT + allocate_frag_arr(res, op_Bound, &res->attr.bound.exc.frag_arr); +#endif + return res; +} + /* ********************************************************************* */ /* Comfortable interface with automatic Phi node construction. */ /* (Uses also constructors of ?? interface, except new_Block. */ @@ -3362,7 +3471,7 @@ ir_node *get_cur_block(void) { } /* Returns the frame type of the current graph */ -type *get_cur_frame_type(void) { +ir_type *get_cur_frame_type(void) { return get_irg_frame_type(current_ir_graph); } @@ -3416,9 +3525,6 @@ ir_node *new_Cond (ir_node *c) { ir_node *new_Return (ir_node *store, int arity, ir_node *in[]) { return new_d_Return(NULL, store, arity, in); } -ir_node *new_Raise (ir_node *store, ir_node *obj) { - return new_d_Raise(NULL, store, obj); -} ir_node *new_Const (ir_mode *mode, tarval *con) { return new_d_Const(NULL, mode, con); } @@ -3428,7 +3534,7 @@ ir_node *new_Const_long(ir_mode *mode, long value) return new_d_Const_long(NULL, mode, value); } -ir_node *new_Const_type(tarval *con, type *tp) { +ir_node *new_Const_type(tarval *con, ir_type *tp) { return new_d_Const_type(NULL, get_type_mode(tp), con, tp); } @@ -3442,11 +3548,8 @@ ir_node *new_Sel (ir_node *store, ir_node *objptr, int arity, ir_node **in, entity *ent) { return new_d_Sel(NULL, store, objptr, arity, in, ent); } -ir_node *new_InstOf (ir_node *store, ir_node *objptr, type *ent) { - return new_d_InstOf (NULL, store, objptr, ent); -} ir_node *new_Call (ir_node *store, ir_node *callee, int arity, ir_node **in, - type *tp) { + ir_type *tp) { return new_d_Call(NULL, store, callee, arity, in, tp); } ir_node *new_Add (ir_node *op1, ir_node *op2, ir_mode *mode) { @@ -3506,7 +3609,7 @@ ir_node *new_Cmp (ir_node *op1, ir_node *op2) { ir_node *new_Conv (ir_node *op, ir_mode *mode) { return new_d_Conv(NULL, op, mode); } -ir_node *new_Cast (ir_node *op, type *to_tp) { +ir_node *new_Cast (ir_node *op, ir_type *to_tp) { return new_d_Cast(NULL, op, to_tp); } ir_node *new_Phi (int arity, ir_node **in, ir_mode *mode) { @@ -3518,12 +3621,12 @@ ir_node *new_Load (ir_node *store, ir_node *addr, ir_mode *mode) { ir_node *new_Store (ir_node *store, ir_node *addr, ir_node *val) { return new_d_Store(NULL, store, addr, val); } -ir_node *new_Alloc (ir_node *store, ir_node *size, type *alloc_type, +ir_node *new_Alloc (ir_node *store, ir_node *size, ir_type *alloc_type, where_alloc where) { return new_d_Alloc(NULL, store, size, alloc_type, where); } ir_node *new_Free (ir_node *store, ir_node *ptr, ir_node *size, - type *free_type, where_alloc where) { + ir_type *free_type, where_alloc where) { return new_d_Free(NULL, store, ptr, size, free_type, where); } ir_node *new_Sync (int arity, ir_node **in) { @@ -3571,3 +3674,15 @@ ir_node *new_NoMem (void) { ir_node *new_Mux (ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode) { return new_d_Mux(NULL, sel, ir_false, ir_true, mode); } +ir_node *new_CopyB(ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type) { + return new_d_CopyB(NULL, store, dst, src, data_type); +} +ir_node *new_InstOf (ir_node *store, ir_node *objptr, ir_type *ent) { + return new_d_InstOf (NULL, store, objptr, ent); +} +ir_node *new_Raise (ir_node *store, ir_node *obj) { + return new_d_Raise(NULL, store, obj); +} +ir_node *new_Bound(ir_node *store, ir_node *idx, ir_node *lower, ir_node *upper) { + return new_d_Bound(NULL, store, idx, lower, upper); +}