+ if (vrp_left->range_type == VRP_RANGE
+ && vrp_right->range_type == VRP_RANGE) {
+ tarval_int_overflow_mode_t rem = tarval_get_integer_overflow_mode();
+ tarval_set_integer_overflow_mode(TV_OVERFLOW_BAD);
+ ir_tarval *new_top = tarval_sub(vrp_left->range_top, vrp_right->range_top, NULL);
+ ir_tarval *new_bottom = tarval_sub(vrp_left->range_bottom, vrp_right->range_bottom, NULL);
+ tarval_set_integer_overflow_mode(rem);
+
+ if (new_top != tarval_bad && new_bottom != tarval_bad) {
+ new_range_bottom = new_bottom;
+ new_range_top = new_top;
+ new_range_type = VRP_RANGE;
+ } else {
+ /* TODO Implement overflow handling*/
+ new_range_type = VRP_UNDEFINED;
+ }