From d77df813c956ae4ecfb408aabfac188b60f34648 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 1 Jun 2006 02:39:59 +0000 Subject: [PATCH] Got tired of waiting for spoonbill's compiler to get fixed. Let's see if using an intermediate variable avoids the gcc bug. --- contrib/seg/segparse.y | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/contrib/seg/segparse.y b/contrib/seg/segparse.y index d4d739c621..dc56fb580f 100644 --- a/contrib/seg/segparse.y +++ b/contrib/seg/segparse.y @@ -11,15 +11,14 @@ extern int seg_yylex(void); - extern int significant_digits( char *str ); /* defined in seg.c */ + extern int significant_digits(char *str); /* defined in seg.c */ void seg_yyerror(const char *message); int seg_yyparse(void *result); - float seg_atof( char *value ); + static float seg_atof(char *value); - long threshold; - char strbuf[25] = { + static char strbuf[25] = { '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', @@ -108,30 +107,39 @@ range: boundary: SEGFLOAT { - $$.ext = '\0'; - $$.sigd = significant_digits($1); - $$.val = seg_atof($1); + /* temp variable avoids a gcc 3.3.x bug on Sparc64 */ + float val = seg_atof($1); + + $$.ext = '\0'; + $$.sigd = significant_digits($1); + $$.val = val; } | EXTENSION SEGFLOAT { - $$.ext = $1[0]; - $$.sigd = significant_digits($2); - $$.val = seg_atof($2); + /* temp variable avoids a gcc 3.3.x bug on Sparc64 */ + float val = seg_atof($2); + + $$.ext = $1[0]; + $$.sigd = significant_digits($2); + $$.val = val; } ; deviation: SEGFLOAT { - $$.ext = '\0'; - $$.sigd = significant_digits($1); - $$.val = seg_atof($1); + /* temp variable avoids a gcc 3.3.x bug on Sparc64 */ + float val = seg_atof($1); + + $$.ext = '\0'; + $$.sigd = significant_digits($1); + $$.val = val; } ; %% -float +static float seg_atof(char *value) { Datum datum; -- 2.11.0