* doublest.h: Conditionalize DOUBLEST on PRINTF_HAS_LONG_DOUBLE

also.
	(DOUBLEST_FORMAT): Rename to DOUBLEST_PRINT_FORMAT.
	(DOUBLEST_SCAN_FORMAT): New.
	* ada-lex.l (PRINTF_HAS_LONG_DOUBLE): Remove redefinitions.
	(processReal): Use DOUBLEST_SCAN_FORMAT.
	* c-exp.y (parse_number): Likewise.
	* jv-exp.y (parse_number): Likewise.
	* objc-exp.y (parse_number): Likewise.
	* p-exp.y (parse_number): Likewise.
This commit is contained in:
Daniel Jacobowitz 2006-02-23 18:43:41 +00:00
parent 0f0b8dcdc3
commit a6205f535a
7 changed files with 26 additions and 24 deletions

View File

@ -1,3 +1,16 @@
2006-02-23 Daniel Jacobowitz <dan@codesourcery.com>
* doublest.h: Conditionalize DOUBLEST on PRINTF_HAS_LONG_DOUBLE
also.
(DOUBLEST_FORMAT): Rename to DOUBLEST_PRINT_FORMAT.
(DOUBLEST_SCAN_FORMAT): New.
* ada-lex.l (PRINTF_HAS_LONG_DOUBLE): Remove redefinitions.
(processReal): Use DOUBLEST_SCAN_FORMAT.
* c-exp.y (parse_number): Likewise.
* jv-exp.y (parse_number): Likewise.
* objc-exp.y (parse_number): Likewise.
* p-exp.y (parse_number): Likewise.
2006-02-23 Daniel Jacobowitz <dan@codesourcery.com>
* event-top.c (async_do_nothing, async_disconnect)

View File

@ -432,26 +432,10 @@ processInt (const char *base0, const char *num0, const char *exp0)
return INT;
}
#if defined (PRINTF_HAS_LONG_DOUBLE)
# undef PRINTF_HAS_LONG_DOUBLE
# define PRINTF_HAS_LONG_DOUBLE 1
#else
# define PRINTF_HAS_LONG_DOUBLE 0
#endif
static int
processReal (const char *num0)
{
#if defined (PRINTF_HAS_LONG_DOUBLE)
if (sizeof (DOUBLEST) > sizeof (double))
sscanf (num0, "%Lg", &yylval.typed_val_float.dval);
else
#endif
{
double temp;
sscanf (num0, "%lg", &temp);
yylval.typed_val_float.dval = temp;
}
sscanf (num0, DOUBLEST_SCAN_FORMAT, &yylval.typed_val_float.dval);
yylval.typed_val_float.type = type_float ();
if (sizeof(DOUBLEST) >= TARGET_DOUBLE_BIT / TARGET_CHAR_BIT)

View File

@ -1080,7 +1080,7 @@ parse_number (p, len, parsed_float, putithere)
char saved_char = p[len];
p[len] = 0; /* null-terminate the token */
num = sscanf (p, DOUBLEST_FORMAT "%s",
num = sscanf (p, DOUBLEST_SCAN_FORMAT "%s",
&putithere->typed_val_float.dval, s);
p[len] = saved_char; /* restore the input stream */

View File

@ -48,15 +48,20 @@ struct floatformat;
host's `long double'. In general, we'll probably reduce the precision of
any such values and print a warning. */
#if defined HAVE_LONG_DOUBLE && defined SCANF_HAS_LONG_DOUBLE
#if (defined HAVE_LONG_DOUBLE && defined PRINTF_HAS_LONG_DOUBLE \
&& defined SCANF_HAS_LONG_DOUBLE)
typedef long double DOUBLEST;
# define DOUBLEST_FORMAT "%Lg"
# define DOUBLEST_PRINT_FORMAT "%Lg"
# define DOUBLEST_SCAN_FORMAT "%Lg"
#else
typedef double DOUBLEST;
# define DOUBLEST_FORMAT "%g"
# define DOUBLEST_PRINT_FORMAT "%g"
# define DOUBLEST_SCAN_FORMAT "%lg"
/* If we can't scan or print long double, we don't want to use it
anywhere. */
# undef HAVE_LONG_DOUBLE
# undef PRINTF_HAS_LONG_DOUBLE
# undef SCANF_HAS_LONG_DOUBLE
#endif
extern void floatformat_to_doublest (const struct floatformat *,

View File

@ -713,7 +713,7 @@ parse_number (p, len, parsed_float, putithere)
char saved_char = p[len];
p[len] = 0; /* null-terminate the token */
num = sscanf (p, DOUBLEST_FORMAT "%c",
num = sscanf (p, DOUBLEST_SCAN_FORMAT "%c",
&putithere->typed_val_float.dval, &c);
p[len] = saved_char; /* restore the input stream */
if (num != 1) /* check scanf found ONLY a float ... */

View File

@ -1025,7 +1025,7 @@ parse_number (p, len, parsed_float, putithere)
/* It's a float since it contains a point or an exponent. */
sscanf (p, DOUBLEST_FORMAT "%c",
sscanf (p, DOUBLEST_SCAN_FORMAT "%c",
&putithere->typed_val_float.dval, &c);
/* See if it has `f' or `l' suffix (float or long double). */

View File

@ -799,7 +799,7 @@ parse_number (p, len, parsed_float, putithere)
char saved_char = p[len];
p[len] = 0; /* null-terminate the token */
num = sscanf (p, DOUBLEST_FORMAT "%c",
num = sscanf (p, DOUBLEST_SCAN_FORMAT "%c",
&putithere->typed_val_float.dval, &c);
p[len] = saved_char; /* restore the input stream */
if (num != 1) /* check scanf found ONLY a float ... */