summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2006-06-01 02:39:59 +0000
committerTom Lane2006-06-01 02:39:59 +0000
commitd77df813c956ae4ecfb408aabfac188b60f34648 (patch)
tree74ae2664f8131a804aaafcc405b24ea49f0090c1
parent87e8014d31da23b008aeb14f473b36f236f39265 (diff)
Got tired of waiting for spoonbill's compiler to get fixed. Let's
see if using an intermediate variable avoids the gcc bug.
-rw-r--r--contrib/seg/segparse.y36
1 files 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;