// The TRUE side of x < NAN is unreachable.
if (op2.known_isnan ())
r.set_undefined ();
+ else if (op2.undefined_p ())
+ return false;
else if (build_lt (r, type, op2))
{
r.clear_nan ();
// The TRUE side of NAN < x is unreachable.
if (op1.known_isnan ())
r.set_undefined ();
+ else if (op1.undefined_p ())
+ return false;
else if (build_gt (r, type, op1))
{
r.clear_nan ();
// The TRUE side of x <= NAN is unreachable.
if (op2.known_isnan ())
r.set_undefined ();
+ else if (op2.undefined_p ())
+ return false;
else if (build_le (r, type, op2))
r.clear_nan ();
break;
// The TRUE side of NAN <= x is unreachable.
if (op1.known_isnan ())
r.set_undefined ();
+ else if (op1.undefined_p ())
+ return false;
else if (build_ge (r, type, op1))
r.clear_nan ();
break;
// On the FALSE side of NAN <= x, we know nothing about x.
if (op1.known_isnan ())
r.set_varying (type);
+ else if (op1.undefined_p ())
+ return false;
else
build_lt (r, type, op1);
break;
// The TRUE side of x > NAN is unreachable.
if (op2.known_isnan ())
r.set_undefined ();
+ else if (op2.undefined_p ())
+ return false;
else if (build_gt (r, type, op2))
{
r.clear_nan ();
// On the FALSE side of x > NAN, we know nothing about x.
if (op2.known_isnan ())
r.set_varying (type);
+ else if (op2.undefined_p ())
+ return false;
else
build_le (r, type, op2);
break;
// The TRUE side of NAN > x is unreachable.
if (op1.known_isnan ())
r.set_undefined ();
+ else if (op1.undefined_p ())
+ return false;
else if (build_lt (r, type, op1))
{
r.clear_nan ();
// On The FALSE side of NAN > x, we know nothing about x.
if (op1.known_isnan ())
r.set_varying (type);
+ else if (op1.undefined_p ())
+ return false;
else
build_ge (r, type, op1);
break;
// The TRUE side of x >= NAN is unreachable.
if (op2.known_isnan ())
r.set_undefined ();
+ else if (op2.undefined_p ())
+ return false;
else if (build_ge (r, type, op2))
r.clear_nan ();
break;
// On the FALSE side of x >= NAN, we know nothing about x.
if (op2.known_isnan ())
r.set_varying (type);
+ else if (op2.undefined_p ())
+ return false;
else
build_lt (r, type, op2);
break;
// The TRUE side of NAN >= x is unreachable.
if (op1.known_isnan ())
r.set_undefined ();
+ else if (op1.undefined_p ())
+ return false;
else if (build_le (r, type, op1))
r.clear_nan ();
break;
// On the FALSE side of NAN >= x, we know nothing about x.
if (op1.known_isnan ())
r.set_varying (type);
+ else if (op1.undefined_p ())
+ return false;
else
build_gt (r, type, op1);
break;
case BRS_TRUE:
if (op2.known_isnan ())
r.set_varying (type);
+ else if (op2.undefined_p ())
+ return false;
else
build_lt (r, type, op2);
break;
// impossible for op2 to be a NAN.
if (op2.known_isnan ())
r.set_undefined ();
+ else if (op2.undefined_p ())
+ return false;
else if (build_ge (r, type, op2))
r.clear_nan ();
break;
case BRS_TRUE:
if (op1.known_isnan ())
r.set_varying (type);
+ else if (op1.undefined_p ())
+ return false;
else
build_gt (r, type, op1);
break;
// impossible for op1 to be a NAN.
if (op1.known_isnan ())
r.set_undefined ();
+ else if (op1.undefined_p ())
+ return false;
else if (build_le (r, type, op1))
r.clear_nan ();
break;
case BRS_TRUE:
if (op2.known_isnan ())
r.set_varying (type);
+ else if (op2.undefined_p ())
+ return false;
else
build_le (r, type, op2);
break;
case BRS_TRUE:
if (op1.known_isnan ())
r.set_varying (type);
+ else if (op1.undefined_p ())
+ return false;
else
build_ge (r, type, op1);
break;
// impossible for op1 to be a NAN.
if (op1.known_isnan ())
r.set_undefined ();
+ else if (op1.undefined_p ())
+ return false;
else if (build_lt (r, type, op1))
r.clear_nan ();
break;
case BRS_TRUE:
if (op2.known_isnan ())
r.set_varying (type);
+ else if (op2.undefined_p ())
+ return false;
else
build_gt (r, type, op2);
break;
// impossible for op2 to be a NAN.
if (op2.known_isnan ())
r.set_undefined ();
+ else if (op2.undefined_p ())
+ return false;
else if (build_le (r, type, op2))
r.clear_nan ();
break;
case BRS_TRUE:
if (op1.known_isnan ())
r.set_varying (type);
+ else if (op1.undefined_p ())
+ return false;
else
build_lt (r, type, op1);
break;
// impossible for op1 to be a NAN.
if (op1.known_isnan ())
r.set_undefined ();
+ else if (op1.undefined_p ())
+ return false;
else if (build_ge (r, type, op1))
r.clear_nan ();
break;
case BRS_TRUE:
if (op2.known_isnan ())
r.set_varying (type);
+ else if (op2.undefined_p ())
+ return false;
else
build_ge (r, type, op2);
break;
// impossible for op2 to be a NAN.
if (op2.known_isnan ())
r.set_undefined ();
+ else if (op2.undefined_p ())
+ return false;
else if (build_lt (r, type, op2))
r.clear_nan ();
break;
case BRS_TRUE:
if (op1.known_isnan ())
r.set_varying (type);
+ else if (op1.undefined_p ())
+ return false;
else
build_le (r, type, op1);
break;
// impossible for op1 to be a NAN.
if (op1.known_isnan ())
r.set_undefined ();
+ else if (op1.undefined_p ())
+ return false;
else if (build_gt (r, type, op1))
r.clear_nan ();
break;