|
11 | 11 |
|
12 | 12 | externintseg_yylex(void); |
13 | 13 |
|
14 | | -externintsignificant_digits(char *str );/* defined in seg.c*/ |
| 14 | +externintsignificant_digits(char *str);/* defined in seg.c*/ |
15 | 15 |
|
16 | 16 | voidseg_yyerror(constchar *message); |
17 | 17 | intseg_yyparse(void *result); |
18 | 18 |
|
19 | | -floatseg_atof(char *value); |
| 19 | +staticfloatseg_atof(char *value); |
20 | 20 |
|
21 | | -long threshold; |
22 | | -char strbuf[25] = { |
| 21 | +staticchar strbuf[25] = { |
23 | 22 | '0','0','0','0','0', |
24 | 23 | '0','0','0','0','0', |
25 | 24 | '0','0','0','0','0', |
@@ -108,30 +107,39 @@ range: |
108 | 107 |
|
109 | 108 | boundary: |
110 | 109 | SEGFLOAT { |
111 | | -$$.ext ='\0'; |
112 | | -$$.sigd = significant_digits($1); |
113 | | -$$.val = seg_atof($1); |
| 110 | +/* temp variable avoids a gcc 3.3.x bug on Sparc64*/ |
| 111 | +float val = seg_atof($1); |
| 112 | + |
| 113 | +$$.ext ='\0'; |
| 114 | +$$.sigd = significant_digits($1); |
| 115 | +$$.val = val; |
114 | 116 | } |
115 | 117 | | |
116 | 118 | EXTENSIONSEGFLOAT { |
117 | | -$$.ext =$1[0]; |
118 | | -$$.sigd = significant_digits($2); |
119 | | -$$.val = seg_atof($2); |
| 119 | +/* temp variable avoids a gcc 3.3.x bug on Sparc64*/ |
| 120 | +float val = seg_atof($2); |
| 121 | + |
| 122 | +$$.ext =$1[0]; |
| 123 | +$$.sigd = significant_digits($2); |
| 124 | +$$.val = val; |
120 | 125 | } |
121 | 126 | ; |
122 | 127 |
|
123 | 128 | deviation: |
124 | 129 | SEGFLOAT { |
125 | | -$$.ext ='\0'; |
126 | | -$$.sigd = significant_digits($1); |
127 | | -$$.val = seg_atof($1); |
| 130 | +/* temp variable avoids a gcc 3.3.x bug on Sparc64*/ |
| 131 | +float val = seg_atof($1); |
| 132 | + |
| 133 | +$$.ext ='\0'; |
| 134 | +$$.sigd = significant_digits($1); |
| 135 | +$$.val = val; |
128 | 136 | } |
129 | 137 | ; |
130 | 138 |
|
131 | 139 | %% |
132 | 140 |
|
133 | 141 |
|
134 | | -float |
| 142 | +staticfloat |
135 | 143 | seg_atof(char *value) |
136 | 144 | { |
137 | 145 | Datum datum; |
|