(yylex): Don't warn about floating point out of range if target

floating-point format is IEEE.

From-SVN: r4213
This commit is contained in:
Richard Kenner 1993-04-25 10:22:15 -04:00
parent 9b553fdbd7
commit 6c54821635

View File

@ -1486,7 +1486,8 @@ yylex ()
case 'f': case 'F': case 'f': case 'F':
type = float_type_node; type = float_type_node;
value = REAL_VALUE_ATOF (token_buffer, TYPE_MODE (type)); value = REAL_VALUE_ATOF (token_buffer, TYPE_MODE (type));
if (REAL_VALUE_ISINF (value) && pedantic) if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT
&& REAL_VALUE_ISINF (value) && pedantic)
pedwarn ("floating point number exceeds range of `float'"); pedwarn ("floating point number exceeds range of `float'");
garbage_chars = -1; garbage_chars = -1;
break; break;
@ -1494,7 +1495,8 @@ yylex ()
case 'l': case 'L': case 'l': case 'L':
type = long_double_type_node; type = long_double_type_node;
value = REAL_VALUE_ATOF (token_buffer, TYPE_MODE (type)); value = REAL_VALUE_ATOF (token_buffer, TYPE_MODE (type));
if (REAL_VALUE_ISINF (value) && pedantic) if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT
&& REAL_VALUE_ISINF (value) && pedantic)
pedwarn ( pedwarn (
"floating point number exceeds range of `long double'"); "floating point number exceeds range of `long double'");
garbage_chars = -1; garbage_chars = -1;
@ -1509,7 +1511,8 @@ yylex ()
default: default:
value = REAL_VALUE_ATOF (token_buffer, TYPE_MODE (type)); value = REAL_VALUE_ATOF (token_buffer, TYPE_MODE (type));
if (REAL_VALUE_ISINF (value) && pedantic) if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT
&& REAL_VALUE_ISINF (value) && pedantic)
pedwarn ("floating point number exceeds range of `double'"); pedwarn ("floating point number exceeds range of `double'");
} }
set_float_handler (NULL_PTR); set_float_handler (NULL_PTR);
@ -1519,8 +1522,9 @@ yylex ()
{ {
/* ERANGE is also reported for underflow, /* ERANGE is also reported for underflow,
so test the value to distinguish overflow from that. */ so test the value to distinguish overflow from that. */
if (REAL_VALUES_LESS (dconst1, value) if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT
|| REAL_VALUES_LESS (value, dconstm1)) && (REAL_VALUES_LESS (dconst1, value)
|| REAL_VALUES_LESS (value, dconstm1)))
{ {
pedwarn ("floating point number exceeds range of `double'"); pedwarn ("floating point number exceeds range of `double'");
exceeds_double = 1; exceeds_double = 1;