From: Götz Lindenmaier Date: Wed, 20 Jun 2001 18:02:58 +0000 (+0000) Subject: added DivMod to constant evaluation. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=8a4b6b96458a1b0c5451d78a4f4a50ddc5cffd00;p=libfirm added DivMod to constant evaluation. [r190] --- diff --git a/ir/ir/iropt.c b/ir/ir/iropt.c index 6aae09fee..4d1cde6b2 100644 --- a/ir/ir/iropt.c +++ b/ir/ir/iropt.c @@ -123,6 +123,7 @@ computed_value (ir_node *n) res = tarval_mod(ta, tb); } break; + /* for iro_DivMod see iro_Proj */ case iro_Abs: if (ta) res = tarval_abs (ta); @@ -221,6 +222,16 @@ computed_value (ir_node *n) res = tarval_from_long (mode_b, get_Proj_proj(n) & irpn_Ne); } } + } else if (get_irn_op(a) == op_DivMod) { + ta = value_of(get_DivMod_left(a)); + tb = value_of(get_DivMod_right(a)); + if (ta && tb && (get_irn_mode(a) == get_irn_mode(b))) { + if (tarval_classify(tb) == 0) {res = NULL; break;} + if (get_Proj_proj(n)== 0) /* Div */ + res = tarval_div(ta, tb); + else /* Mod */ + res = tarval_mod(ta, tb); + } } else { /* printf(" # comp_val: Proj node, not optimized\n"); */ }