runtime: Use __builtin_{inf,nan} rather than INFINITY/NAN.

From-SVN: r184080
This commit is contained in:
Ian Lance Taylor 2012-02-10 00:40:27 +00:00
parent 9e4f308edd
commit 16d62226d1

View File

@ -35,7 +35,7 @@ matherr (struct exception* e)
n = e->name; n = e->name;
if (__builtin_strcmp (n, "acos") == 0 if (__builtin_strcmp (n, "acos") == 0
|| __builtin_strcmp (n, "asin") == 0) || __builtin_strcmp (n, "asin") == 0)
e->retval = NAN; e->retval = __builtin_nan ("");
else if (__builtin_strcmp (n, "atan2") == 0) else if (__builtin_strcmp (n, "atan2") == 0)
{ {
if (e->arg1 == 0 && e->arg2 == 0) if (e->arg1 == 0 && e->arg2 == 0)
@ -53,11 +53,11 @@ matherr (struct exception* e)
} }
else if (__builtin_strcmp (n, "log") == 0 else if (__builtin_strcmp (n, "log") == 0
|| __builtin_strcmp (n, "log10") == 0) || __builtin_strcmp (n, "log10") == 0)
e->retval = NAN; e->retval = __builtin_nan ("");
else if (__builtin_strcmp (n, "pow") == 0) else if (__builtin_strcmp (n, "pow") == 0)
{ {
if (e->arg1 < 0) if (e->arg1 < 0)
e->retval = NAN; e->retval = __builtin_nan ("");
else if (e->arg1 == 0 && e->arg2 == 0) else if (e->arg1 == 0 && e->arg2 == 0)
e->retval = 1.0; e->retval = 1.0;
else if (e->arg1 == 0 && e->arg2 < 0) else if (e->arg1 == 0 && e->arg2 < 0)
@ -65,9 +65,9 @@ matherr (struct exception* e)
double i; double i;
if (modf (e->arg2, &i) == 0 && ((int64_t) i & 1) == 1) if (modf (e->arg2, &i) == 0 && ((int64_t) i & 1) == 1)
e->retval = copysign (INFINITY, e->arg1); e->retval = copysign (__builtin_inf (), e->arg1);
else else
e->retval = INFINITY; e->retval = __builtin_inf ();
} }
else else
return 0; return 0;
@ -75,7 +75,7 @@ matherr (struct exception* e)
else if (__builtin_strcmp (n, "sqrt") == 0) else if (__builtin_strcmp (n, "sqrt") == 0)
{ {
if (e->arg1 < 0) if (e->arg1 < 0)
e->retval = NAN; e->retval = __builtin_nan ("");
else else
return 0; return 0;
} }