projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
check if load/store can cosume the lea before consuming it
[libfirm]
/
ir
/
be
/
ia32
/
ia32_transform.c
diff --git
a/ir/be/ia32/ia32_transform.c
b/ir/be/ia32/ia32_transform.c
index
f05463a
..
7ee6ca6
100644
(file)
--- 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 */
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));
/* 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_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 */
}
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_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 */
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);
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);
if (imm) {
set_ia32_cnst(res, offs);