re PR middle-end/21781 (real.c incorrectly values zero with a large exponent)

PR middle-end/21781
	* real.c (real_from_string): If the mantissa is zero, don't bother
	parsing the exponent as the result should always be zero.

	* gcc.dg/real-const-1.c: New test case.

From-SVN: r112136
This commit is contained in:
Roger Sayle 2006-03-16 16:34:05 +00:00 committed by Roger Sayle
parent 349f4ea14a
commit a47564c87c
4 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2006-03-16 Roger Sayle <roger@eyesopen.com>
PR middle-end/21781
* real.c (real_from_string): If the mantissa is zero, don't bother
parsing the exponent as the result should always be zero.
2006-03-16 Andreas Krebbel <krebbel1@de.ibm.com>
* simplify-rtx.c (simplify_plus_minus): Simplify within CONST terms.

View File

@ -1862,6 +1862,11 @@ real_from_string (REAL_VALUE_TYPE *r, const char *str)
str++;
}
}
/* If the mantissa is zero, ignore the exponent. */
if (!cmp_significand_0 (r))
goto underflow;
if (*str == 'p' || *str == 'P')
{
bool exp_neg = false;
@ -1934,6 +1939,10 @@ real_from_string (REAL_VALUE_TYPE *r, const char *str)
}
}
/* If the mantissa is zero, ignore the exponent. */
if (r->cl == rvc_zero)
goto underflow;
if (*str == 'e' || *str == 'E')
{
bool exp_neg = false;

View File

@ -1,3 +1,8 @@
2006-03-16 Roger Sayle <roger@eyesopen.com>
PR middle-end/21781
* gcc.dg/real-const-1.c: New test case.
2006-03-15 Geoffrey Keating <geoffk@apple.com>
* g++.old-deja/g++.other/init18.C: New.

View File

@ -0,0 +1,4 @@
/* PR middle-end/21781. */
/* { dg-do compile } */
int f[.0e200000000 == 0?1:-1];