+ break;
+ }
+
+ case iro_Div:
+ {
+ tarval *tb = value_of(b = get_Div_right(a));
+ tarval *ta = value_of(a = get_Div_left(a));
+
+ if ((ta != tarval_bad) && (tb != tarval_bad) && (get_irn_mode(a) == get_irn_mode(b))) {
+ if (tb == get_mode_null(get_tarval_mode(tb))) /* div by zero: return tarval_bad */
+ return tarval_bad;
+ if (get_Proj_proj(n)== pn_Div_res)
+ return tarval_div(ta, tb);
+ }
+ break;
+ }
+
+ case iro_Mod:
+ {
+ tarval *tb = value_of(b = get_Mod_right(a));
+ tarval *ta = value_of(a = get_Mod_left(a));
+
+ if ((ta != tarval_bad) && (tb != tarval_bad) && (get_irn_mode(a) == get_irn_mode(b))) {
+ if (tb == get_mode_null(get_tarval_mode(tb))) /* div by zero: return tarval_bad */
+ return tarval_bad;
+ if (get_Proj_proj(n)== pn_Mod_res)
+ return tarval_mod(ta, tb);
+ }
+ break;
+ }
+
+ default:
+ return tarval_bad;