From 547ad557720b58ae1d100072261de35e63dd157e Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Thu, 8 Oct 1992 07:13:12 +0000 Subject: [PATCH] (yylex): For floats, Use REAL_VALUES_LESS to distinguish underflow from overflow. (yylex): For floats, Use REAL_VALUES_LESS to distinguish underflow from overflow. Delete special case for 0.0. From-SVN: r2363 --- gcc/c-lex.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/gcc/c-lex.c b/gcc/c-lex.c index bfbc920..924a22c 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -1370,24 +1370,10 @@ yylex () #ifdef ERANGE if (errno == ERANGE && !flag_traditional && pedantic) { - char *p1 = token_buffer; - /* Check for "0.0" and variants; - SunOS 4 spuriously returns ERANGE for them. */ - while (*p1 == '0') p1++; - if (*p1 == '.') - { - p1++; - while (*p1 == '0') p1++; - } - if (*p1 == 'e' || *p1 == 'E') - { - /* with significand==0, ignore the exponent */ - p1++; - while (*p1 != 0) p1++; - } - /* ERANGE is also reported for underflow, - so test the value to distinguish overflow from that. */ - if (*p1 != 0 && (value > 1.0 || value < -1.0)) + /* ERANGE is also reported for underflow, + so test the value to distinguish overflow from that. */ + if (REAL_VALUES_LESS (dconst1, value) + || REAL_VALUES_LESS (value, dconstm1)) { pedwarn ("floating point number exceeds range of `double'"); exceeds_double = 1; -- 2.7.4