X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_transform.c;h=7ee6ca64532e05bebb65b1e584aa3802c5e32a1f;hb=cfca4797175eb9f25889a6db5a37d2def39ff3fc;hp=f05463acf74c42de8ce503370fcdfc1c9822d972;hpb=56e73cb16be287a60806893add5c58f8fa63c449;p=libfirm diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index f05463acf..7ee6ca645 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -397,7 +397,7 @@ static ir_node *gen_imm_Add(ia32_transform_env_t *env, ir_node *expr_op, ir_node DEBUG_ONLY(firm_dbg_module_t *mod = env->mod;) /* try to optimize to inc/dec */ - if ((env->cg->opt & IA32_OPT_INCDEC) && tv) { + if ((env->cg->opt & IA32_OPT_INCDEC) && (get_ia32_op_type(const_op) == ia32_Const)) { /* optimize tarvals */ class_tv = classify_tarval(tv); class_negtv = classify_tarval(tarval_neg(tv)); @@ -1472,7 +1472,7 @@ static ir_node *gen_Cond(ia32_transform_env_t *env) { } set_ia32_pncode(res, get_Proj_proj(sel)); - set_ia32_am_support(res, ia32_am_Source); + //set_ia32_am_support(res, ia32_am_Source); } else { /* determine the smallest switch case value */ @@ -2039,6 +2039,7 @@ void ia32_transform_sub_to_neg_add(ir_node *irn, ia32_code_gen_t *cg) { set_ia32_am_support(res, ia32_am_Full); set_ia32_commutative(res); } + set_ia32_res_mode(res, tenv.mode); SET_IA32_ORIG_NODE(res, ia32_get_old_node_name(tenv.cg, irn)); /* copy register */ @@ -2152,6 +2153,7 @@ void ia32_transform_lea_to_add(ir_node *irn, ia32_code_gen_t *cg) { arch_set_irn_register(cg->arch_env, res, out_reg); set_ia32_op_type(res, ia32_Normal); set_ia32_commutative(res); + set_ia32_res_mode(res, tenv.mode); if (imm) { set_ia32_cnst(res, offs);