X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fbe%2Fsparc%2Fsparc_transform.c;h=310f5752a819c8665d7b000a19a48ca532db1e5c;hb=67926613438d531ad6e3c403cb89d902248dce5d;hp=fffa4ceae21c29a7785a18eacd2be9bfe83aae90;hpb=274626e2d58cfa247b88ee05adaca8906b025d93;p=libfirm diff --git a/ir/be/sparc/sparc_transform.c b/ir/be/sparc/sparc_transform.c index fffa4ceae..310f5752a 100644 --- a/ir/be/sparc/sparc_transform.c +++ b/ir/be/sparc/sparc_transform.c @@ -1371,7 +1371,7 @@ static ir_node *create_ftoi(dbg_info *dbgi, ir_node *block, ir_node *op, ir_graph *irg = get_irn_irg(block); ir_node *sp = get_irg_frame(irg); ir_node *nomem = get_irg_no_mem(irg); - ir_node *stf = create_stf(dbgi, block, ftoi, sp, nomem, src_mode, + ir_node *stf = create_stf(dbgi, block, ftoi, sp, nomem, mode_fp, NULL, 0, true); ir_node *ld = new_bd_sparc_Ld_imm(dbgi, block, sp, stf, mode_gp, NULL, 0, true); @@ -1763,15 +1763,18 @@ static void bitcast_float_to_int(dbg_info *dbgi, ir_node *block, (get_tarval_sub_bits(tv, 1) << 8) | (get_tarval_sub_bits(tv, 2) << 16) | (get_tarval_sub_bits(tv, 3) << 24); - result[0] = create_int_const(block, val); + ir_node *valc = create_int_const(block, val); if (bits == 64) { - int32_t val = get_tarval_sub_bits(tv, 4) | + int32_t val2 = get_tarval_sub_bits(tv, 4) | (get_tarval_sub_bits(tv, 5) << 8) | (get_tarval_sub_bits(tv, 6) << 16) | (get_tarval_sub_bits(tv, 7) << 24); - result[1] = create_int_const(block, val); + ir_node *valc2 = create_int_const(block, val2); + result[0] = valc2; + result[1] = valc; } else { assert(bits == 32); + result[0] = valc; result[1] = NULL; } } else { @@ -2272,7 +2275,7 @@ static ir_node *gen_Proj_Div(ir_node *node) case pn_Div_res: return new_r_Proj(new_pred, res_mode, pn_sparc_SDiv_res); case pn_Div_M: - return new_r_Proj(new_pred, mode_gp, pn_sparc_SDiv_M); + return new_r_Proj(new_pred, mode_M, pn_sparc_SDiv_M); default: break; }