X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Fircons.c;h=7966d17a8d56d35230cbe14f8a7695d70a0a0806;hb=8399216d8aebc713bbda04b6e3e250a1d52b20bf;hp=dd9388fb706635218138cf851d421a061aea2001;hpb=9fe9c20a1570729f1bdd21a6f174ec045d2ff986;p=libfirm diff --git a/ir/ir/ircons.c b/ir/ir/ircons.c index dd9388fb7..7966d17a8 100644 --- a/ir/ir/ircons.c +++ b/ir/ir/ircons.c @@ -163,7 +163,7 @@ new_rd_Const_type (dbg_info* db, ir_graph *irg, ir_node *block, ir_mode *mode, t INLINE ir_node * new_rd_Const (dbg_info* db, ir_graph *irg, ir_node *block, ir_mode *mode, tarval *con) { - type *tp = unknown_type; + type *tp = firm_unknown_type; /* removing this somehow causes errors in jack. */ return new_rd_Const_type (db, irg, block, mode, con, tp); } @@ -733,7 +733,7 @@ INLINE ir_node * new_rd_SymConst (dbg_info* db, ir_graph *irg, ir_node *block, symconst_symbol value, symconst_kind symkind) { - ir_node *res = new_rd_SymConst_type(db, irg, block, value, symkind, unknown_type); + ir_node *res = new_rd_SymConst_type(db, irg, block, value, symkind, firm_unknown_type); return res; } @@ -860,13 +860,30 @@ new_rd_Filter (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *arg, ir_mod res = optimize_node(res); IRN_VRFY_IRG(res, irg); return res; +} +INLINE ir_node * +new_rd_NoMem (ir_graph *irg) { + return irg->no_mem; } INLINE ir_node * -new_rd_NoMem (ir_graph *irg) +new_rd_Mux (dbg_info *db, ir_graph *irg, ir_node *block, + ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode) { - return irg->no_mem; + ir_node *in[3]; + ir_node *res; + + in[0] = sel; + in[1] = ir_false; + in[2] = ir_true; + + res = new_ir_node(db, irg, block, op_Mux, mode, 3, in); + assert(res); + + res = optimize_node(res); + IRN_VRFY_IRG(res, irg); + return res; } @@ -1061,6 +1078,10 @@ INLINE ir_node *new_r_Filter (ir_graph *irg, ir_node *block, ir_node *arg, INLINE ir_node *new_r_NoMem (ir_graph *irg) { return new_rd_NoMem(irg); } +INLINE 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); +} /** ********************/ @@ -2369,6 +2390,13 @@ ir_node * return __new_d_NoMem(); } +ir_node * +new_d_Mux (dbg_info *db, ir_node *sel, ir_node *ir_false, + ir_node *ir_true, ir_mode *mode) { + return new_rd_Mux (db, current_ir_graph, current_ir_graph->current_block, + sel, ir_false, ir_true, mode); +} + /* ********************************************************************* */ /* Comfortable interface with automatic Phi node construction. */ /* (Uses also constructors of ?? interface, except new_Block. */ @@ -2678,3 +2706,6 @@ ir_node *new_Filter (ir_node *arg, ir_mode *mode, long proj) { ir_node *new_NoMem (void) { return new_d_NoMem(); } +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); +}