}
}
-// Build a range that is <= VAL and store it in R.
+// Build a range that is <= VAL and store it in R. Return TRUE if
+// further changes may be needed for R, or FALSE if R is in its final
+// form.
static bool
build_le (frange &r, tree type, const frange &val)
return true;
}
-// Build a range that is < VAL and store it in R.
+// Build a range that is < VAL and store it in R. Return TRUE if
+// further changes may be needed for R, or FALSE if R is in its final
+// form.
static bool
build_lt (frange &r, tree type, const frange &val)
return true;
}
-// Build a range that is >= VAL and store it in R.
+// Build a range that is >= VAL and store it in R. Return TRUE if
+// further changes may be needed for R, or FALSE if R is in its final
+// form.
static bool
build_ge (frange &r, tree type, const frange &val)
return true;
}
-// Build a range that is > VAL and store it in R.
+// Build a range that is > VAL and store it in R. Return TRUE if
+// further changes may be needed for R, or FALSE if R is in its final
+// form.
static bool
build_gt (frange &r, tree type, const frange &val)
// The TRUE side of NAN >= x is unreachable.
if (op1.known_isnan ())
r.set_undefined ();
- else
- {
- build_le (r, type, op1);
- r.clear_nan ();
- }
+ else if (build_le (r, type, op1))
+ r.clear_nan ();
break;
case BRS_FALSE:
break;
case BRS_FALSE:
- build_gt (r, type, op2);
- r.clear_nan ();
+ if (build_gt (r, type, op2))
+ r.clear_nan ();
break;
default:
break;
case BRS_FALSE:
- build_lt (r, type, op1);
- r.clear_nan ();
+ if (build_lt (r, type, op1))
+ r.clear_nan ();
break;
default:
break;
case BRS_FALSE:
- build_le (r, type, op2);
- r.clear_nan ();
+ if (build_le (r, type, op2))
+ r.clear_nan ();
break;
default:
break;
case BRS_FALSE:
- build_ge (r, type, op1);
- r.clear_nan ();
+ if (build_ge (r, type, op1))
+ r.clear_nan ();
break;
default:
break;
case BRS_FALSE:
- build_lt (r, type, op2);
- r.clear_nan ();
+ if (build_lt (r, type, op2))
+ r.clear_nan ();
break;
default:
break;
case BRS_FALSE:
- build_gt (r, type, op1);
- r.clear_nan ();
+ if (build_gt (r, type, op1))
+ r.clear_nan ();
break;
default: