]>
Commit | Line | Data |
---|---|---|
81fea2b1 JL |
1 | 31 Aug. 1989: |
2 | 1. A(min(i,j)) now is translated correctly (where A is an array). | |
3 | 2. 7 and 8 character variable names are allowed (but elicit a | |
4 | complaint under -ext). | |
5 | 3. LOGICAL*1 is treated as LOGICAL, with just one error message | |
6 | per LOGICAL*1 statement (rather than one per variable declared | |
7 | in that statement). [Note that LOGICAL*1 is not in Fortran 77.] | |
8 | Like f77, f2c now allows the format in a read or write statement | |
9 | to be an integer array. | |
10 | ||
11 | 5 Sept. 1989: | |
12 | Fixed botch in argument passing of substrings of equivalenced | |
13 | variables. | |
14 | ||
15 | 15 Sept. 1989: | |
16 | Warn about incorrect code generated when a character-valued | |
17 | function is not declared external and is passed as a parameter | |
18 | (in violation of the Fortran 77 standard) before it is invoked. | |
19 | Example: | |
20 | ||
21 | subroutine foo(a,b) | |
22 | character*10 a,b | |
23 | call goo(a,b) | |
24 | b = a(3) | |
25 | end | |
26 | ||
27 | 18 Sept. 1989: | |
28 | Complain about overlapping initializations. | |
29 | ||
30 | 20 Sept. 1989: | |
31 | Warn about names declared EXTERNAL but never referenced; | |
32 | include such names as externs in the generated C (even | |
33 | though most C compilers will discard them). | |
34 | ||
35 | 24 Sept. 1989: | |
36 | New option -w8 to suppress complaint when COMMON or EQUIVALENCE | |
37 | forces word alignment of a double. | |
38 | Under -A (for ANSI C), ensure that floating constants (terminated | |
39 | by 'f') contain either a decimal point or an exponent field. | |
40 | Repair bugs sometimes encountered with CHAR and ICHAR intrinsic | |
41 | functions. | |
42 | Restore f77's optimizations for copying and comparing character | |
43 | strings of length 1. | |
44 | Always assume floating-point valued routines in libF77 return | |
45 | doubles, even under -R. | |
46 | Repair occasional omission of arguments in routines having multiple | |
47 | entry points. | |
48 | Repair bugs in computing offsets of character strings involved | |
49 | in EQUIVALENCE. | |
50 | Don't omit structure qualification when COMMON variables are used | |
51 | as FORMATs or internal files. | |
52 | ||
53 | 2 Oct. 1989: | |
54 | Warn about variables that appear only in data stmts; don't emit them. | |
55 | Fix bugs in character DATA for noncharacter variables | |
56 | involved in EQUIVALENCE. | |
57 | Treat noncharacter variables initialized (at least partly) with | |
58 | character data as though they were equivalenced -- put out a struct | |
59 | and #define the variables. This eliminates the hideous and nonportable | |
60 | numeric values that were used to initialize such variables. | |
61 | Treat IMPLICIT NONE as IMPLICIT UNDEFINED(A-Z) . | |
62 | Quit when given invalid options. | |
63 | ||
64 | 8 Oct. 1989: | |
65 | Modified naming scheme for generated intermediate variables; | |
66 | more are recycled, fewer distinct ones used. | |
67 | New option -W nn specifies nn characters/word for Hollerith | |
68 | data initializing non-character variables. | |
69 | Bug fix: x(i:min(i+10,j)) used to elicit "Can't handle opcode 31 yet". | |
70 | Integer expressions of the form (i+const1) - (i+const2), where | |
71 | i is a scalar integer variable, are now simplified to (const1-const2); | |
72 | this leads to simpler translation of some substring expressions. | |
73 | Initialize uninitialized portions of character string arrays to 0 | |
74 | rather than to blanks. | |
75 | ||
76 | 9 Oct. 1989: | |
77 | New option -c to insert comments showing original Fortran source. | |
78 | New option -g to insert line numbers of original Fortran source. | |
79 | ||
80 | 10 Oct. 1989: | |
81 | ! recognized as in-line comment delimiter (a la Fortran 88). | |
82 | ||
83 | 24 Oct. 1989: | |
84 | New options to ease coping with systems that want the structs | |
85 | that result from COMMON blocks to be defined just once: | |
86 | -E causes uninitialized COMMON blocks to be declared Extern; | |
87 | if Extern is undefined, f2c.h #defines it to be extern. | |
88 | -ec causes a separate .c file to be emitted for each | |
89 | uninitialized COMMON block: COMMON /ABC/ yields abc_com.c; | |
90 | thus one can compile *_com.c into a library to ensure | |
91 | precisely one definition. | |
92 | -e1c is similar to -ec, except that everything goes into | |
93 | one file, along with comments that give a sed script for | |
94 | splitting the file into the pieces that -ec would give. | |
95 | This is for use with netlib's "execute f2c" service (for which | |
96 | -ec is coerced into -e1c, and the sed script will put everything | |
97 | but the COMMON definitions into f2c_out.c ). | |
98 | ||
99 | 28 Oct. 1989: | |
100 | Convert "i = i op ..." into "i op= ...;" even when i is a | |
101 | dummy argument. | |
102 | ||
103 | 13 Nov. 1989: | |
104 | Name integer constants (passed as arguments) c__... rather | |
105 | than c_... so | |
106 | common /c/stuff | |
107 | call foo(1) | |
108 | ... | |
109 | is translated correctly. | |
110 | ||
111 | 19 Nov. 1989: | |
112 | Floating-point constants are now kept as strings unless they | |
113 | are involved in constant expressions that get simplified. The | |
114 | floating-point constants kept as strings can have arbitrarily | |
115 | many significant figures and a very large exponent field (as | |
116 | large as long int allows on the machine on which f2c runs). | |
117 | Thus, for example, the body of | |
118 | ||
119 | subroutine zot(x) | |
120 | double precision x(6), pi | |
121 | parameter (pi=3.1415926535897932384626433832795028841972) | |
122 | x(1) = pi | |
123 | x(2) = pi+1 | |
124 | x(3) = 9287349823749272.7429874923740978492734D-298374 | |
125 | x(4) = .89 | |
126 | x(5) = 4.0005 | |
127 | x(6) = 10D7 | |
128 | end | |
129 | ||
130 | now gets translated into | |
131 | ||
132 | x[1] = 3.1415926535897932384626433832795028841972; | |
133 | x[2] = 4.1415926535897931; | |
134 | x[3] = 9.2873498237492727429874923740978492734e-298359; | |
135 | x[4] = (float).89; | |
136 | x[5] = (float)4.0005; | |
137 | x[6] = 1e8; | |
138 | ||
139 | rather than the former | |
140 | ||
141 | x[1] = 3.1415926535897931; | |
142 | x[2] = 4.1415926535897931; | |
143 | x[3] = 0.; | |
144 | x[4] = (float)0.89000000000000003; | |
145 | x[5] = (float)4.0004999999999997; | |
146 | x[6] = 100000000.; | |
147 | ||
148 | Recognition of f77 machine-constant intrinsics deleted, i.e., | |
149 | epbase, epprec, epemin, epemax, eptiny, ephuge, epmrsp. | |
150 | ||
151 | 22 Nov. 1989: | |
152 | Workarounds for glitches on some Sun systems... | |
153 | libf77: libF77/makefile modified to point out possible need | |
154 | to compile libF77/main.c with -Donexit=on_exit . | |
155 | libi77: libI77/wref.c (and libI77/README) modified so non-ANSI | |
156 | systems can compile with USE_STRLEN defined, which will cause | |
157 | sprintf(b = buf, "%#.*f", d, x); | |
158 | n = strlen(b) + d1; | |
159 | rather than | |
160 | n = sprintf(b = buf, "%#.*f", d, x) + d1; | |
161 | to be compiled. | |
162 | ||
163 | 26 Nov. 1989: | |
164 | Longer names are now accepted (up to 50 characters); names may | |
165 | contain underscores (in which case they will have two underscores | |
166 | appended, to avoid clashes with library names). | |
167 | ||
168 | 28 Nov. 1989: | |
169 | libi77 updated: | |
170 | 1. Allow 3 (or, on Crays, 4) digit exponents under format Ew.d . | |
171 | 2. Try to get things right on machines where ints have 16 bits. | |
172 | ||
173 | 29 Nov. 1989: | |
174 | Supplied missing semicolon in parameterless subroutines that | |
175 | have multiple entry points (all of them parameterless). | |
176 | ||
177 | 30 Nov. 1989: | |
178 | libf77 and libi77 revised to use types from f2c.h. | |
179 | f2c now types floating-point valued C library routines as "double" | |
180 | rather than "doublereal" (for use with nonstandard C compilers for | |
181 | which "double" is IEEE double extended). | |
182 | ||
183 | 1 Dec. 1989: | |
184 | f2c.h updated to eliminate #defines rendered unnecessary (and, | |
185 | indeed, dangerous) by change of 26 Nov. to long names possibly | |
186 | containing underscores. | |
187 | libi77 further revised: yesterday's change omitted two tweaks to fmt.h | |
188 | (tweaks which only matter if float and real or double and doublereal are | |
189 | different types). | |
190 | ||
191 | 2 Dec. 1989: | |
192 | Better error message (than "bad tag") for NAMELIST, which no longer | |
193 | inhibits C output. | |
194 | ||
195 | 4 Dec. 1989: | |
196 | Allow capital letters in hex constants (f77 extension; e.g., | |
197 | x'a012BCd', X'A012BCD' and x'a012bcd' are all treated as the integer | |
198 | 167848909). | |
199 | libi77 further revised: lio.c lio.h lread.c wref.c wrtfmt.c tweaked | |
200 | again to allow float and real or double and doublereal to be different. | |
201 | ||
202 | 6 Dec. 1989: | |
203 | Revised f2c.h -- required for the following... | |
204 | Simpler looking translations for abs, min, max, using #defines in | |
205 | revised f2c.h . | |
206 | libi77: more corrections to types; additions for NAMELIST. | |
207 | Corrected casts in some I/O calls. | |
208 | Translation of NAMELIST; libi77 must still be revised. Currently | |
209 | libi77 gives you a run-time error message if you attempt NAMELIST I/O. | |
210 | ||
211 | 7 Dec. 1989: | |
212 | Fixed bug that prevented local integer variables that appear in DATA | |
213 | stmts from being ASSIGNed statement labels. | |
214 | Fillers (for DATA statements initializing EQUIVALENCEd variables and | |
215 | variables in COMMON) typed integer rather than doublereal (for slightly | |
216 | more portability, e.g. to Crays). | |
217 | libi77: missing return values supplied in a few places; some tests | |
218 | reordered for better working on the Cray. | |
219 | libf77: better accuracy for complex divide, complex square root, | |
220 | real mod function (casts to double; double temporaries). | |
221 | ||
222 | 9 Dec. 1989: | |
223 | Fixed bug that caused needless (albeit harmless) empty lines to be | |
224 | inserted in the C output when a comment line contained trailing blanks. | |
225 | Further tweak to type of fillers: allow doublereal fillers if the | |
226 | struct has doublereal data. | |
227 | ||
228 | 11 Dec. 1989: | |
229 | Alteration of rule for producing external (C) names from names that | |
230 | contain underscores. Now the external name is always obtained by | |
231 | appending a pair of underscores. | |
232 | ||
233 | 12 Dec. 1989: | |
234 | C production inhibited after most errors. | |
235 | ||
236 | 15 Dec. 1989: | |
237 | Fixed bug in headers for subroutines having two or more character | |
238 | strings arguments: the length arguments were reversed. | |
239 | ||
240 | 19 Dec. 1989: | |
241 | f2c.h libf77 libi77: adjusted so #undefs in f2c.h should not foil | |
242 | compilation of libF77 and libI77. | |
243 | libf77: getenv_ adjusted to work with unsorted environments. | |
244 | libi77: the iostat= specifier should now work right with internal I/O. | |
245 | ||
246 | 20 Dec. 1989: | |
247 | f2c bugs fixed: In the absence of an err= specifier, the iostat= | |
248 | specifier was generally set wrong. Character strings containing | |
249 | explicit nulls (\0) were truncated at the first null. | |
250 | Unlabeled DO loops recognized; must be terminated by ENDDO. | |
251 | (Don't ask for CYCLE, EXIT, named DO loops, or DO WHILE.) | |
252 | ||
253 | 29 Dec. 1989: | |
254 | Nested unlabeled DO loops now handled properly; new warning for | |
255 | extraneous text at end of FORMAT. | |
256 | ||
257 | 30 Dec. 1989: | |
258 | Fixed bug in translating dble(real(...)), dble(sngl(...)), and | |
259 | dble(float(...)), where ... is either of type double complex or | |
260 | is an expression requiring assignment to intermediate variables (e.g., | |
261 | dble(real(foo(x+1))), where foo is a function and x is a variable). | |
262 | Regard nonblank label fields on continuation lines as an error. | |
263 | ||
264 | 3 Jan. 1990: | |
265 | New option -C++ yields output that should be understood | |
266 | by C++ compilers. | |
267 | ||
268 | 6 Jan. 1989: | |
269 | -a now excludes variables that appear in a namelist from those | |
270 | that it makes automatic. (As before, it also excludes variables | |
271 | that appear in a common, data, equivalence, or save statement.) | |
272 | The syntactically correct Fortran | |
273 | read(*,i) x | |
274 | end | |
275 | now yields syntactically correct C (even though both the Fortran | |
276 | and C are buggy -- no FORMAT has not been ASSIGNed to i). | |
277 | ||
278 | 7 Jan. 1990: | |
279 | libi77: routines supporting NAMELIST added. Surrounding quotes | |
280 | made optional when no ambiguity arises in a list or namelist READ | |
281 | of a character-string value. | |
282 | ||
283 | 9 Jan. 1990: | |
284 | f2c.src made available. | |
285 | ||
286 | 16 Jan. 1990: | |
287 | New options -P to produce ANSI C or C++ prototypes for procedures | |
288 | defined. Change to -A and -C++: f2c tries to infer prototypes for | |
289 | invoked procedures unless the new -!P option is given. New warning | |
290 | messages for inconsistent calling sequences among procedures within | |
291 | a single file. Most of f2c/src is affected. | |
292 | f2c.h: typedefs for procedure arguments added; netlib's f2c service | |
293 | will insert appropriate typedefs for use with older versions of f2c.h. | |
294 | ||
295 | 17 Jan. 1990: | |
296 | f2c/src: defs.h exec.c format.c proc.c putpcc.c version.c xsum0.out | |
297 | updated. Castargs and protofile made extern in defs.h; exec.c | |
298 | modified so superfluous else clauses are diagnosed; unused variables | |
299 | omitted from declarations in format.c proc.c putpcc.c . | |
300 | ||
301 | 21 Jan. 1990: | |
302 | No C emitted for procedures declared external but not referenced. | |
303 | f2c.h: more new types added for use with -P. | |
304 | New feature: f2c accepts as arguments files ending in .p or .P; | |
305 | such files are assumed to be prototype files, such as produced by | |
306 | the -P option. All prototype files are read before any Fortran files | |
307 | and apply globally to all Fortran files. Suitable prototypes help f2c | |
308 | warn about calling-sequence errors and can tell f2c how to type | |
309 | procedures declared external but not explicitly typed; the latter is | |
310 | mainly of interest for users of the -A and -C++ options. (Prototype | |
311 | arguments are not available to netlib's "execute f2c" service.) | |
312 | New option -it tells f2c to try to infer types of untyped external | |
313 | arguments from their use as parameters to prototyped or previously | |
314 | defined procedures. | |
315 | f2c/src: many minor cleanups; most modules changed. Individual | |
316 | files in f2c/src are now in "bundle" format. The former f2c.1 is | |
317 | now f2c.1t; "f2c.1t from f2c" and "f2c.1t from f2c/src" are now the | |
318 | same, as are "f2c.1 from f2c" and "f2c.1 from f2c/src". People who | |
319 | do not obtain a new copy of "all from f2c/src" should at least add | |
320 | fclose(sortfp); | |
321 | after the call on do_init_data(outfile, sortfp) in format_data.c . | |
322 | ||
323 | 22 Jan. 1990: | |
324 | Cleaner man page wording (thanks to Doug McIlroy). | |
325 | -it now also applies to all untyped EXTERNAL procedures, not just | |
326 | arguments. | |
327 | ||
328 | 23 Jan. 01:34:00 EST 1990: | |
329 | Bug fixes: under -A and -C++, incorrect C was generated for | |
330 | subroutines having multiple entries but no arguments. | |
331 | Under -A -P, subroutines of no arguments were given prototype | |
332 | calling sequence () rather than (void). | |
333 | Character-valued functions elicited erroneous warning messages | |
334 | about inconsistent calling sequences when referenced by another | |
335 | procedure in the same file. | |
336 | f2c.1t: omit first appearance of libF77.a in FILES section; | |
337 | load order of libraries is -lF77 -lI77, not vice versa (bug | |
338 | introduced in yesterday's edits); define .F macro for those whose | |
339 | -man lacks it. (For a while after yesterday's fixes were posted, | |
340 | f2c.1t was out of date. Sorry!) | |
341 | ||
342 | 23 Jan. 9:53:24 EST 1990: | |
343 | Character substring expressions involving function calls having | |
344 | character arguments (including the intrinsic len function) yielded | |
345 | incorrect C. | |
346 | Procedures defined after invocation (in the same file) with | |
347 | conflicting argument types also got an erroneous message about | |
348 | the wrong number of arguments. | |
349 | ||
350 | 24 Jan. 11:44:00 EST 1990: | |
351 | Bug fixes: -p omitted #undefs; COMMON block names containing | |
352 | underscores had their C names incorrectly computed; a COMMON block | |
353 | having the name of a previously defined procedure wreaked havoc; | |
354 | if all arguments were .P files, f2c tried reading the second as a | |
355 | Fortran file. | |
356 | New feature: -P emits comments showing COMMON block lengths, so one | |
357 | can get warnings of incompatible COMMON block lengths by having f2c | |
358 | read .P (or .p) files. Now by running f2c twice, first with -P -!c | |
359 | (or -P!c), then with *.P among the arguments, you can be warned of | |
360 | inconsistent COMMON usage, and COMMON blocks having inconsistent | |
361 | lengths will be given the maximum length. (The latter always did | |
362 | happen within each input file; now -P lets you extend this behavior | |
363 | across files.) | |
364 | ||
365 | 26 Jan. 16:44:00 EST 1990: | |
366 | Option -it made less aggressive: untyped external procedures that | |
367 | are invoked are now typed by the rules of Fortran, rather than by | |
368 | previous use of procedures to which they are passed as arguments | |
369 | before being invoked. | |
370 | Option -P now includes information about references, i.e., called | |
371 | procedures, in the prototype files (in the form of special comments). | |
372 | This allows iterative invocations of f2c to infer more about untyped | |
373 | external names, particularly when multiple Fortran files are involved. | |
374 | As usual, there are some obscure bug fixes: | |
375 | 1. Repair of erroneous warning messages about inconsistent number of | |
376 | arguments that arose when a character dummy parameter was discovered | |
377 | to be a function or when multiple entry points involved character | |
378 | variables appearing in a previous entry point. | |
379 | 2. Repair of memory fault after error msg about "adjustable character | |
380 | function". | |
381 | 3. Under -U, allow MAIN_ as a subroutine name (in the same file as a | |
382 | main program). | |
383 | 4. Change for consistency: a known function invoked as a subroutine, | |
384 | then as a function elicits a warning rather than an error. | |
385 | ||
386 | 26 Jan. 22:32:00 EST 1990: | |
387 | Fixed two bugs that resulted in incorrect C for substrings, within | |
388 | the body of a character-valued function, of the function's name, when | |
389 | those substrings were arguments to another function (even implicitly, | |
390 | as in character-string assignment). | |
391 | ||
392 | 28 Jan. 18:32:00 EST 1990: | |
393 | libf77, libi77: checksum files added; "make check" looks for | |
394 | transmission errors. NAMELIST read modified to allow $ rather than & | |
395 | to precede a namelist name, to allow $ rather than / to terminate | |
396 | input where the name of another variable would otherwise be expected, | |
397 | and to regard all nonprinting ASCII characters <= ' ' as spaces. | |
398 | ||
399 | 29 Jan. 02:11:00 EST 1990: | |
400 | "fc from f2c" added. | |
401 | -it option made the default; -!it turns it off. Type information is | |
402 | now updated in a previously missed case. | |
403 | -P option tweaked again; message about when rerunning f2c may change | |
404 | prototypes or declarations made more accurate. | |
405 | New option -Ps implies -P and returns exit status 4 if rerunning | |
406 | f2c -P with prototype inputs might change prototypes or declarations. | |
407 | Now you can execute a crude script like | |
408 | ||
409 | cat *.f >zap.F | |
410 | rm -f zap.P | |
411 | while :; do | |
412 | f2c -Ps -!c zap.[FP] | |
413 | case $? in 4) ;; *) break;; esac | |
414 | done | |
415 | ||
416 | to get a file zap.P of the best prototypes f2c can determine for *.f . | |
417 | ||
418 | Jan. 29 07:30:21 EST 1990: | |
419 | Forgot to check for error status when setting return code 4 under -Ps; | |
420 | error status (1, 2, 3, or, for caught signal, 126) now takes precedence. | |
421 | ||
422 | Jan 29 14:17:00 EST 1990: | |
423 | Incorrect handling of | |
424 | open(n,'filename') | |
425 | repaired -- now treated as | |
426 | open(n,file='filename') | |
427 | (and, under -ext, given an error message). | |
428 | New optional source file memset.c for people whose systems don't | |
429 | provide memset, memcmp, and memcpy; #include <string.h> in mem.c | |
430 | changed to #include "string.h" so BSD people can create a local | |
431 | string.h that simply says #include <strings.h> . | |
432 | ||
433 | Jan 30 10:34:00 EST 1990: | |
434 | Fix erroneous warning at end of definition of a procedure with | |
435 | character arguments when the procedure had previously been called with | |
436 | a numeric argument instead of a character argument. (There were two | |
437 | warnings, the second one incorrectly complaining of a wrong number of | |
438 | arguments.) | |
439 | ||
440 | Jan 30 16:29:41 EST 1990: | |
441 | Fix case where -P and -Ps erroneously reported another iteration | |
442 | necessary. (Only harm is the extra iteration.) | |
443 | ||
444 | Feb 3 01:40:00 EST 1990: | |
445 | Supply semicolon occasionally omitted under -c . | |
446 | Try to force correct alignment when numeric variables are initialized | |
447 | with character data (a non-standard and non-portable practice). You | |
448 | must use the -W option if your code has such data statements and is | |
449 | meant to run on a machine with other than 4 characters/word; e.g., for | |
450 | code meant to run on a Cray, you would specify -W8 . | |
451 | Allow parentheses around expressions in output lists (in write and | |
452 | print statements). | |
453 | Rename source files so their names are <= 12 characters long | |
454 | (so there's room to append .Z and still have <= 14 characters); | |
455 | renamed files: formatdata.c niceprintf.c niceprintf.h safstrncpy.c . | |
456 | f2c material made available by anonymous ftp from research.att.com | |
457 | (look in dist/f2c ). | |
458 | ||
459 | Feb 3 03:49:00 EST 1990: | |
460 | Repair memory fault that arose from use (in an assignment or | |
461 | call) of a non-argument variable declared CHARACTER*(*). | |
462 | ||
463 | Feb 9 01:35:43 EST 1990: | |
464 | Fix erroneous error msg about bad types in | |
465 | subroutine foo(a,adim) | |
466 | dimension a(adim) | |
467 | integer adim | |
468 | Fix improper passing of character args (and possible memory fault) | |
469 | in the expression part of a computed goto. | |
470 | Fix botched calling sequences in array references involving | |
471 | functions having character args. | |
472 | Fix memory fault caused by invocation of character-valued functions | |
473 | of no arguments. | |
474 | Fix botched calling sequence of a character*1-valued function | |
475 | assigned to a character*1 variable. | |
476 | Fix bug in error msg for inconsistent number of args in prototypes. | |
477 | Allow generation of C output despite inconsistencies in prototypes, | |
478 | but give exit code 8. | |
479 | Simplify include logic (by removing some bogus logic); never | |
480 | prepend "/usr/include/" to file names. | |
481 | Minor cleanups (that should produce no visible change in f2c's | |
482 | behavior) in intr.c parse.h main.c defs.h formatdata.c p1output.c . | |
483 | ||
484 | Feb 10 00:19:38 EST 1990: | |
485 | Insert (integer) casts when floating-point expressions are used | |
486 | as subscripts. | |
487 | Make SAVE stmt (with no variable list) override -a . | |
488 | Minor cleanups: change field to Field in struct Addrblock (for the | |
489 | benefit of buggy C compilers); omit system("/bin/cp ...") in misc.c . | |
490 | ||
491 | Feb 13 00:39:00 EST 1990: | |
492 | Error msg fix in gram.dcl: change "cannot make %s parameter" | |
493 | to "cannot make into parameter". | |
494 | ||
495 | Feb 14 14:02:00 EST 1990: | |
496 | Various cleanups (invisible on systems with 4-byte ints), thanks | |
497 | to Dave Regan: vaxx.c eliminated; %d changed to %ld various places; | |
498 | external names adjusted for the benefit of stupid systems (that ignore | |
499 | case and recognize only 6 significant characters in external names); | |
500 | buffer shortened in xsum.c (e.g. for MS-DOS); fopen modes distinguish | |
501 | text and binary files; several unused functions eliminated; missing | |
502 | arg supplied to an unlikely fatalstr invocation. | |
503 | ||
504 | Thu Feb 15 19:15:53 EST 1990: | |
505 | More cleanups (invisible on systems with 4 byte ints); casts inserted | |
506 | so most complaints from cyntax(1) and lint(1) go away; a few (int) | |
507 | versus (long) casts corrected. | |
508 | ||
509 | Fri Feb 16 19:55:00 EST 1990: | |
510 | Recognize and translate unnamed Fortran 8x do while statements. | |
511 | Fix bug that occasionally caused improper breaking of character | |
512 | strings. | |
513 | New error message for attempts to provide DATA in a type-declaration | |
514 | statement. | |
515 | ||
516 | Sat Feb 17 11:43:00 EST 1990: | |
517 | Fix infinite loop clf -> Fatal -> done -> clf after I/O error. | |
518 | Change "if (addrp->vclass = CLPROC)" to "if (addrp->vclass == CLPROC)" | |
519 | in p1_addr (in p1output.c); this was probably harmless. | |
520 | Move a misplaced } in lex.c (which slowed initkey()). | |
521 | Thanks to Gary Word for pointing these things out. | |
522 | ||
523 | Sun Feb 18 18:07:00 EST 1990: | |
524 | Detect overlapping initializations of arrays and scalar variables | |
525 | in previously missed cases. | |
526 | Treat logical*2 as logical (after issuing a warning). | |
527 | Don't pass string literals to p1_comment(). | |
528 | Correct a cast (introduced 16 Feb.) in gram.expr; this matters e.g. | |
529 | on a Cray. | |
530 | Attempt to isolate UNIX-specific things in sysdep.c (a new source | |
531 | file). Unless sysdep.c is compiled with SYSTEM_SORT defined, the | |
532 | intermediate files created for DATA statements are now sorted in-core | |
533 | without invoking system(). | |
534 | ||
535 | Tue Feb 20 16:10:35 EST 1990: | |
536 | Move definition of binread and binwrite from init.c to sysdep.c . | |
537 | Recognize Fortran 8x tokens < <= == >= > <> as synonyms for | |
538 | .LT. .LE. .EQ. .GE. .GT. .NE. | |
539 | Minor cleanup in putpcc.c: fully remove simoffset(). | |
540 | More discussion of system dependencies added to libI77/README. | |
541 | ||
542 | Tue Feb 20 21:44:07 EST 1990: | |
543 | Minor cleanups for the benefit of EBCDIC machines -- try to remove | |
544 | the assumption that 'a' through 'z' are contiguous. (Thanks again to | |
545 | Gary Word.) Also, change log2 to log_2 (shouldn't be necessary). | |
546 | ||
547 | Wed Feb 21 06:24:56 EST 1990: | |
548 | Fix botch in init.c introduced in previous change; only matters | |
549 | to non-ASCII machines. | |
550 | ||
551 | Thu Feb 22 17:29:12 EST 1990: | |
552 | Allow several entry points to mention the same array. Protect | |
553 | parameter adjustments with if's (for the case that an array is not | |
554 | an argument to all entrypoints). | |
555 | Under -u, allow | |
556 | subroutine foo(x,n) | |
557 | real x(n) | |
558 | integer n | |
559 | Compute intermediate variables used to evaluate dimension expressions | |
560 | at the right time. Example previously mistranslated: | |
561 | subroutine foo(x,k,m,n) | |
562 | real x(min(k,m,n)) | |
563 | ... | |
564 | write(*,*) x | |
565 | Detect duplicate arguments. (The error msg points to the first | |
566 | executable stmt -- not wonderful, but not worth fixing.) | |
567 | Minor cleanup of min/max computation (sometimes slightly simpler). | |
568 | ||
569 | Sun Feb 25 09:39:01 EST 1990: | |
570 | Minor tweak to multiple entry points: protect parameter adjustments | |
571 | with if's only for (array) args that do not appear in all entry points. | |
572 | Minor tweaks to format.c and io.c (invisible unless your compiler | |
573 | complained at the duplicate #defines of IOSUNIT and IOSFMT or at | |
574 | comparisons of p1gets(...) with NULL). | |
575 | ||
576 | Sun Feb 25 18:40:10 EST 1990: | |
577 | Fix bug introduced Feb. 22: if a subprogram contained DATA and the | |
578 | first executable statement was labeled, then the label got lost. | |
579 | (Just change INEXEC to INDATA in p1output.c; it occurs just once.) | |
580 | ||
581 | Mon Feb 26 17:45:10 EST 1990: | |
582 | Fix bug in handling of " and ' in comments. | |
583 | ||
584 | Wed Mar 28 01:43:06 EST 1990: | |
585 | libI77: | |
586 | 1. Repair nasty I/O bug: opening two files and closing the first | |
587 | (after possibly reading or writing it), then writing the second caused | |
588 | the last buffer of the second to be lost. | |
589 | 2. Formatted reads of logical values treated all letters other than | |
590 | t or T as f (false). | |
591 | libI77 files changed: err.c rdfmt.c Version.c | |
592 | (Request "libi77 from f2c" -- you can't get these files individually.) | |
593 | ||
594 | f2c itself: | |
595 | Repair nasty bug in translation of | |
596 | ELSE IF (condition involving complicated abs, min, or max) | |
597 | -- auxiliary statements were emitted at the wrong place. | |
598 | Supply semicolon previously omitted from the translation of a label | |
599 | (of a CONTINUE) immediately preceding an ELSE IF or an ELSE. This | |
600 | bug made f2c produce invalid C. | |
601 | Correct a memory fault that occurred (on some machines) when the | |
602 | error message "adjustable dimension on non-argument" should be given. | |
603 | Minor tweaks to remove some harmless warnings by overly chatty C | |
604 | compilers. | |
605 | Argument arays having constant dimensions but a variable lower bound | |
606 | (e.g., x(n+1:n+3)) had a * omitted from scalar arguments involved in | |
607 | the array offset computation. | |
608 | ||
609 | Wed Mar 28 18:47:59 EST 1990: | |
610 | libf77: add exit(0) to end of main [return(0) encounters a Cray bug] | |
611 | ||
612 | Sun Apr 1 16:20:58 EDT 1990: | |
613 | Avoid dereferencing null when processing equivalences after an error. | |
614 | ||
615 | Fri Apr 6 08:29:49 EDT 1990: | |
616 | Calls involving alternate return specifiers omitted processing | |
617 | needed for things like min, max, abs, and // (concatenation). | |
618 | INTEGER*2 PARAMETERs were treated as INTEGER*4. | |
619 | Convert some O(n^2) parsing to O(n). | |
620 | ||
621 | Tue Apr 10 20:07:02 EDT 1990: | |
622 | When inconsistent calling sequences involve differing numbers of | |
623 | arguments, report the first differing argument rather than the numbers | |
624 | of arguments. | |
625 | Fix bug under -a: formatted I/O in which either the unit or the | |
626 | format was a local character variable sometimes resulted in invalid C | |
627 | (a static struct initialized with an automatic component). | |
628 | Improve error message for invalid flag after elided -. | |
629 | Complain when literal table overflows, rather than infinitely | |
630 | looping. (The complaint mentions the new and otherwise undocumented | |
631 | -NL option for specifying a larger literal table.) | |
632 | New option -h for forcing strings to word (or, with -hd, double-word) | |
633 | boundaries where possible. | |
634 | Repair a bug that could cause improper splitting of strings. | |
635 | Fix bug (cast of c to doublereal) in | |
636 | subroutine foo(c,r) | |
637 | double complex c | |
638 | double precision r | |
639 | c = cmplx(r,real(c)) | |
640 | end | |
641 | New include file "sysdep.h" has some things from defs.h (and | |
642 | elsewhere) that one may need to modify on some systems. | |
643 | Some large arrays that were previously statically allocated are now | |
644 | dynamically allocated when f2c starts running. | |
645 | f2c/src files changed: | |
646 | README cds.c defs.h f2c.1 f2c.1t format.c formatdata.c init.c | |
647 | io.c lex.c main.c makefile mem.c misc.c names.c niceprintf.c | |
648 | output.c parse_args.c pread.c put.c putpcc.c sysdep.h | |
649 | version.c xsum0.out | |
650 | ||
651 | Wed Apr 11 18:27:12 EDT 1990: | |
652 | Fix bug in argument consistency checking of character, complex, and | |
653 | double complex valued functions. If the same source file contained a | |
654 | definition of such a function with arguments not explicitly typed, | |
655 | then subsequent references to the function might get erroneous | |
656 | warnings of inconsistent calling sequences. | |
657 | Tweaks to sysdep.h for partially ANSI systems. | |
658 | New options -kr and -krd cause f2c to use temporary variables to | |
659 | enforce Fortran evaluation-order rules with pernicious, old-style C | |
660 | compilers that apply the associative law to floating-point operations. | |
661 | ||
662 | Sat Apr 14 15:50:15 EDT 1990: | |
663 | libi77: libI77 adjusted to allow list-directed and namelist I/O | |
664 | of internal files; bug in namelist I/O of logical and character arrays | |
665 | fixed; list input of complex numbers adjusted to permit d or D to | |
666 | denote the start of the exponent field of a component. | |
667 | f2c itself: fix bug in handling complicated lower-bound | |
668 | expressions for character substrings; e.g., min and max did not work | |
669 | right, nor did function invocations involving character arguments. | |
670 | Switch to octal notation, rather than hexadecimal, for nonprinting | |
671 | characters in character and string constants. | |
672 | Fix bug (when neither -A nor -C++ was specified) in typing of | |
673 | external arguments of type complex, double complex, or character: | |
674 | subroutine foo(c) | |
675 | external c | |
676 | complex c | |
677 | now results in | |
678 | /* Complex */ int (*c) (); | |
679 | (as, indeed, it once did) rather than | |
680 | complex (*c) (); | |
681 | ||
682 | Sat Apr 14 22:50:39 EDT 1990: | |
683 | libI77/makefile: updated "make check" to omit lio.c | |
684 | lib[FI]77/makefile: trivial change: define CC = cc, reference $(CC). | |
685 | (Request, e.g., "libi77 from f2c" -- you can't ask for individual | |
686 | files from lib[FI]77.) | |
687 | ||
688 | Wed Apr 18 00:56:37 EDT 1990: | |
689 | Move declaration of atof() from defs.h to sysdep.h, where it is | |
690 | now not declared if stdlib.h is included. (NeXT's stdlib.h has a | |
691 | #define atof that otherwise wreaks havoc.) | |
692 | Under -u, provide a more intelligible error message (than "bad tag") | |
693 | for an attempt to define a function without specifying its type. | |
694 | ||
695 | Wed Apr 18 17:26:27 EDT 1990: | |
696 | Recognize \v (vertical tab) in Hollerith as well as quoted strings; | |
697 | add recognition of \r (carriage return). | |
698 | New option -!bs turns off recognition of escapes in character strings | |
699 | (\0, \\, \b, \f, \n, \r, \t, \v). | |
700 | Move to sysdep.c initialization of some arrays whose initialization | |
701 | assumed ASCII; #define Table_size in sysdep.h rather than using | |
702 | hard-coded 256 in allocating arrays of size 1 << (bits/byte). | |
703 | ||
704 | Thu Apr 19 08:13:21 EDT 1990: | |
705 | Warn when escapes would make Hollerith extend beyond statement end. | |
706 | Omit max() definition from misc.c (should be invisible except on | |
707 | systems that erroneously #define max in stdlib.h). | |
708 | ||
709 | Mon Apr 23 22:24:51 EDT 1990: | |
710 | When producing default-style C (no -A or -C++), cast switch | |
711 | expressions to (int). | |
712 | Move "-lF77 -lI77 -lm -lc" to link_msg, defined in sysdep.c . | |
713 | Add #define scrub(x) to sysdep.h, with invocations in format.c and | |
714 | formatdata.c, so that people who have systems like VMS that would | |
715 | otherwise create multiple versions of intermediate files can | |
716 | #define scrub(x) unlink(x) | |
717 | ||
718 | Tue Apr 24 18:28:36 EDT 1990: | |
719 | Pass string lengths once rather than twice to a function of character | |
720 | arguments involved in comparison of character strings of length 1. | |
721 | ||
722 | Fri Apr 27 13:11:52 EDT 1990: | |
723 | Fix bug that made f2c gag on concatenations involving char(...) on | |
724 | some systems. | |
725 | ||
726 | Sat Apr 28 23:20:16 EDT 1990: | |
727 | Fix control-stack bug in | |
728 | if(...) then | |
729 | else if (complicated condition) | |
730 | else | |
731 | endif | |
732 | (where the complicated condition causes assignment to an auxiliary | |
733 | variable, e.g., max(a*b,c)). | |
734 | ||
735 | Mon Apr 30 13:30:10 EDT 1990: | |
736 | Change fillers for DATA with holes from substructures to arrays | |
737 | (in an attempt to make things work right with C compilers that have | |
738 | funny padding rules for substructures, e.g., Sun C compilers). | |
739 | Minor cleanup of exec.c (should not affect generated C). | |
740 | ||
741 | Mon Apr 30 23:13:51 EDT 1990: | |
742 | Fix bug in handling return values of functions having multiple | |
743 | entry points of differing return types. | |
744 | ||
745 | Sat May 5 01:45:18 EDT 1990: | |
746 | Fix type inference bug in | |
747 | subroutine foo(x) | |
748 | call goo(x) | |
749 | end | |
750 | subroutine goo(i) | |
751 | i = 3 | |
752 | end | |
753 | Instead of warning of inconsistent calling sequences for goo, | |
754 | f2c was simply making i a real variable; now i is correctly | |
755 | typed as an integer variable, and f2c issues an error message. | |
756 | Adjust error messages issued at end of declarations so they | |
757 | don't blame the first executable statement. | |
758 | ||
759 | Sun May 6 01:29:07 EDT 1990: | |
760 | Fix bug in -P and -Ps: warn when the definition of a subprogram adds | |
761 | information that would change prototypes or previous declarations. | |
762 | ||
763 | Thu May 10 18:09:15 EDT 1990: | |
764 | Fix further obscure bug with (default) -it: inconsistent calling | |
765 | sequences and I/O statements could interact to cause a memory fault. | |
766 | Example: | |
767 | SUBROUTINE FOO | |
768 | CALL GOO(' Something') ! Forgot integer first arg | |
769 | END | |
770 | SUBROUTINE GOO(IUNIT,MSG) | |
771 | CHARACTER*(*)MSG | |
772 | WRITE(IUNIT,'(1X,A)') MSG | |
773 | END | |
774 | ||
775 | Fri May 11 16:49:11 EDT 1990: | |
776 | Under -!c, do not delete any .c files (when there are errors). | |
777 | Avoid dereferencing 0 when a fatal error occurs while reading | |
778 | Fortran on stdin. | |
779 | ||
780 | Wed May 16 18:24:42 EDT 1990: | |
781 | f2c.ps made available. | |
782 | ||
783 | Mon Jun 4 12:53:08 EDT 1990: | |
784 | Diagnose I/O units of invalid type. | |
785 | Add specific error msg about dummy arguments in common. | |
786 | ||
787 | Wed Jun 13 12:43:17 EDT 1990: | |
788 | Under -A, supply a missing "[1]" for CHARACTER*1 variables that appear | |
789 | both in a DATA statement and in either COMMON or EQUIVALENCE. | |
790 | ||
791 | Mon Jun 18 16:58:31 EDT 1990: | |
792 | Trivial updates to f2c.ps . ("Fortran 8x" --> "Fortran 90"; omit | |
793 | "(draft)" from "(draft) ANSI C".) | |
794 | ||
795 | Tue Jun 19 07:36:32 EDT 1990: | |
796 | Fix incorrect code generated for ELSE IF(expression involving | |
797 | function call passing non-constant substring). | |
798 | Under -h, preserve the property that strings are null-terminated | |
799 | where possible. | |
800 | Remove spaces between # and define in lex.c output.c parse.h . | |
801 | ||
802 | Mon Jun 25 07:22:59 EDT 1990: | |
803 | Minor tweak to makefile to reduce unnecessary recompilations. | |
804 | ||
805 | Tue Jun 26 11:49:53 EDT 1990: | |
806 | Fix unintended truncation of some integer constants on machines | |
807 | where casting a long to (int) may change the value. E.g., when f2c | |
808 | ran on machines with 16-bit ints, "i = 99999" was being translated | |
809 | to "i = -31073;". | |
810 | ||
811 | Wed Jun 27 11:05:32 EDT 1990: | |
812 | Arrange for CHARACTER-valued PARAMETERs to honor their length | |
813 | specifications. Allow CHAR(nn) in expressions defining such PARAMETERs. | |
814 | ||
815 | Fri Jul 20 09:17:30 EDT 1990: | |
816 | Avoid dereferencing 0 when a FORMAT statement has no label. | |
817 | ||
818 | Thu Jul 26 11:09:39 EDT 1990: | |
819 | Remarks about VOID and binread,binwrite added to README. | |
820 | Tweaks to parse_args: should be invisible unless your compiler | |
821 | complained at (short)*store. | |
822 | ||
823 | Thu Aug 2 02:07:58 EDT 1990: | |
824 | f2c.ps: change the first line of page 5 from | |
825 | include stuff | |
826 | to | |
827 | include 'stuff' | |
828 | ||
829 | Tue Aug 14 13:21:24 EDT 1990: | |
830 | libi77: libI77 adjusted to treat tabs as spaces in list input. | |
831 | ||
832 | Fri Aug 17 07:24:53 EDT 1990: | |
833 | libi77: libI77 adjusted so a blank='ZERO' clause (upper case Z) | |
834 | in an open of a currently open file works right. | |
835 | ||
836 | Tue Aug 28 01:56:44 EDT 1990: | |
837 | Fix bug in warnings of inconsistent calling sequences: if an | |
838 | argument to a subprogram was never referenced, then a previous | |
839 | invocation of the subprogram (in the same source file) that | |
840 | passed something of the wrong type for that argument did not | |
841 | elicit a warning message. | |
842 | ||
843 | Thu Aug 30 09:46:12 EDT 1990: | |
844 | libi77: prevent embedded blanks in list output of complex values; | |
845 | omit exponent field in list output of values of magnitude between | |
846 | 10 and 1e8; prevent writing stdin and reading stdout or stderr; | |
847 | don't close stdin, stdout, or stderr when reopening units 5, 6, 0. | |
848 | ||
849 | Tue Sep 4 12:30:57 EDT 1990: | |
850 | Fix bug in C emitted under -I2 or -i2 for INTEGER*4 FUNCTION. | |
851 | Warn of missing final END even if there are previous errors. | |
852 | ||
853 | Fri Sep 7 13:55:34 EDT 1990: | |
854 | Remark about "make xsum.out" and "make f2c" added to README. | |
855 | ||
856 | Tue Sep 18 23:50:01 EDT 1990: | |
857 | Fix null dereference (and, on some systems, writing of bogus *_com.c | |
858 | files) under -ec or -e1c when a prototype file (*.p or *.P) describes | |
859 | COMMON blocks that do not appear in the Fortran source. | |
860 | libi77: | |
861 | Add some #ifdef lines (#ifdef MSDOS, #ifndef MSDOS) to avoid | |
862 | references to stat and fstat on non-UNIX systems. | |
863 | On UNIX systems, add component udev to unit; decide that old | |
864 | and new files are the same iff both the uinode and udev components | |
865 | of unit agree. | |
866 | When an open stmt specifies STATUS='OLD', use stat rather than | |
867 | access (on UNIX systems) to check the existence of the file (in case | |
868 | directories leading to the file have funny permissions and this is | |
869 | a setuid or setgid program). | |
870 | ||
871 | Thu Sep 27 16:04:09 EDT 1990: | |
872 | Supply missing entry for Impldoblock in blksize array of cpexpr | |
873 | (in expr.c). No examples are known where this omission caused trouble. | |
874 | ||
875 | Tue Oct 2 22:58:09 EDT 1990: | |
876 | libf77: test signal(...) == SIG_IGN rather than & 01 in main(). | |
877 | libi77: adjust rewind.c so two successive rewinds after a write | |
878 | don't clobber the file. | |
879 | ||
880 | Thu Oct 11 18:00:14 EDT 1990: | |
881 | libi77: minor cleanups: add #include "fcntl.h" to endfile.c, err.c, | |
882 | open.c; adjust g_char in util.c for segmented memories; in f_inqu | |
883 | (inquire.c), define x appropriately when MSDOS is defined. | |
884 | ||
885 | Mon Oct 15 20:02:11 EDT 1990: | |
886 | Add #ifdef MSDOS pointer adjustments to mem.c; treat NAME= as a | |
887 | synonym for FILE= in OPEN statements. | |
888 | ||
889 | Wed Oct 17 16:40:37 EDT 1990: | |
890 | libf77, libi77: minor cleanups: _cleanup() and abort() invocations | |
891 | replaced by invocations of sig_die in main.c; some error messages | |
892 | previously lost in buffers will now appear. | |
893 | ||
894 | Mon Oct 22 16:11:27 EDT 1990: | |
895 | libf77: separate sig_die from main (for folks who don't want to use | |
896 | the main in libF77). | |
897 | libi77: minor tweak to comments in README. | |
898 | ||
899 | Fri Nov 2 13:49:35 EST 1990: | |
900 | Use two underscores rather than one in generated temporary variable | |
901 | names to avoid conflict with COMMON names. f2c.ps updated to reflect | |
902 | this change and the NAME= extension introduced 15 Oct. | |
903 | Repair a rare memory fault in io.c . | |
904 | ||
905 | Mon Nov 5 16:43:55 EST 1990: | |
906 | libi77: changes to open.c (and err.c): complain if an open stmt | |
907 | specifies new= and the file already exists (as specified by Fortrans 77 | |
908 | and 90); allow file= to be omitted in open stmts and allow | |
909 | status='replace' (Fortran 90 extensions). | |
910 | ||
911 | Fri Nov 30 10:10:14 EST 1990: | |
912 | Adjust malloc.c for unusual systems whose sbrk() can return values | |
913 | not properly aligned for doubles. | |
914 | Arrange for slightly more helpful and less repetitive warnings for | |
915 | non-character variables initialized with character data; these warnings | |
916 | are (still) suppressed by -w66. | |
917 | ||
918 | Fri Nov 30 15:57:59 EST 1990: | |
919 | Minor tweak to README (about changing VOID in f2c.h). | |
920 | ||
921 | Mon Dec 3 07:36:20 EST 1990: | |
922 | Fix spelling of "character" in f2c.1t. | |
923 | ||
924 | Tue Dec 4 09:48:56 EST 1990: | |
925 | Remark about link_msg and libf2c added to f2c/README. | |
926 | ||
927 | Thu Dec 6 08:33:24 EST 1990: | |
928 | Under -U, render label nnn as L_nnn rather than Lnnn. | |
929 | ||
930 | Fri Dec 7 18:05:00 EST 1990: | |
931 | Add more names from f2c.h (e.g. integer, real) to the c_keywords | |
932 | list of names to which an underscore is appended to avoid confusion. | |
933 | ||
934 | Mon Dec 10 19:11:15 EST 1990: | |
935 | Minor tweaks to makefile (./xsum) and README (binread/binwrite). | |
936 | libi77: a few modifications for POSIX systems; meant to be invisible | |
937 | elsewhere. | |
938 | ||
939 | Sun Dec 16 23:03:16 EST 1990: | |
940 | Fix null dereference caused by unusual erroneous input, e.g. | |
941 | call foo('abc') | |
942 | end | |
943 | subroutine foo(msg) | |
944 | data n/3/ | |
945 | character*(*) msg | |
946 | end | |
947 | (Subroutine foo is illegal because the character statement comes after a | |
948 | data statement.) | |
949 | Use decimal rather than hex constants in xsum.c (to prevent | |
950 | erroneous warning messages about constant overflow). | |
951 | ||
952 | Mon Dec 17 12:26:40 EST 1990: | |
953 | Fix rare extra underscore in character length parameters passed | |
954 | for multiple entry points. | |
955 | ||
956 | Wed Dec 19 17:19:26 EST 1990: | |
957 | Allow generation of C despite error messages about bad alignment | |
958 | forced by equivalence. | |
959 | Allow variable-length concatenations in I/O statements, such as | |
960 | open(3, file=bletch(1:n) // '.xyz') | |
961 | ||
962 | Fri Dec 28 17:08:30 EST 1990: | |
963 | Fix bug under -p with formats and internal I/O "units" in COMMON, | |
964 | as in | |
965 | COMMON /FIGLEA/F | |
966 | CHARACTER*20 F | |
967 | F = '(A)' | |
968 | WRITE (*,FMT=F) 'Hello, world!' | |
969 | END | |
970 | ||
971 | Tue Jan 15 12:00:24 EST 1991: | |
972 | Fix bug when two equivalence groups are merged, the second with | |
973 | nonzero offset, and the result is then merged into a common block. | |
974 | Example: | |
975 | INTEGER W(3), X(3), Y(3), Z(3) | |
976 | COMMON /ZOT/ Z | |
977 | EQUIVALENCE (W(1),X(1)), (X(2),Y(1)), (Z(3),X(1)) | |
978 | ***** W WAS GIVEN THE WRONG OFFSET | |
979 | Recognize Fortran 90's optional NML= in NAMELIST READs and WRITEs. | |
980 | (Currently NML= and FMT= are treated as synonyms -- there's no | |
981 | error message if, e.g., NML= specifies a format.) | |
982 | libi77: minor adjustment to allow internal READs from character | |
983 | string constants in read-only memory. | |
984 | ||
985 | Fri Jan 18 22:56:15 EST 1991: | |
986 | Add comment to README about needing to comment out the typedef of | |
987 | size_t in sysdep.h on some systems, e.g. Sun 4.1. | |
988 | Fix misspelling of "statement" in an error message in lex.c | |
989 | ||
990 | Wed Jan 23 00:38:48 EST 1991: | |
991 | Allow hex, octal, and binary constants to have the qualifying letter | |
992 | (z, x, o, or b) either before or after the quoted string containing the | |
993 | digits. For now this change will not be reflected in f2c.ps . | |
994 | ||
995 | Tue Jan 29 16:23:45 EST 1991: | |
996 | Arrange for character-valued statement functions to give results of | |
997 | the right length (that of the statement function's name). | |
998 | ||
999 | Wed Jan 30 07:05:32 EST 1991: | |
1000 | More tweaks for character-valued statement functions: an error | |
1001 | check and an adjustment so a right-hand side of nonconstant length | |
1002 | (e.g., a substring) is handled right. | |
1003 | ||
1004 | Wed Jan 30 09:49:36 EST 1991: | |
1005 | Fix p1_head to avoid printing (char *)0 with %s. | |
1006 | ||
1007 | Thu Jan 31 13:53:44 EST 1991: | |
1008 | Add a test after the cleanup call generated for I/O statements with | |
1009 | ERR= or END= clauses to catch the unlikely event that the cleanup | |
1010 | routine encounters an error. | |
1011 | ||
1012 | Mon Feb 4 08:00:58 EST 1991: | |
1013 | Minor cleanup: omit unneeded jumps and labels from code generated for | |
1014 | some NAMELIST READs and WRITEs with IOSTAT=, ERR=, and/or END=. | |
1015 | ||
1016 | Tue Feb 5 01:39:36 EST 1991: | |
1017 | Change Mktemp to mktmp (for the benefit of systems so brain-damaged | |
1018 | that they do not distinguish case in external names -- and that for | |
1019 | some reason want to load mktemp). Try to get xsum0.out right this | |
1020 | time (it somehow didn't get updated on 4 Feb. 1991). | |
1021 | Add note to libi77/README about adjusting the interpretation of | |
1022 | RECL= specifiers in OPENs for direct unformatted I/O. | |
1023 | ||
1024 | Thu Feb 7 17:24:42 EST 1991: | |
1025 | New option -r casts values of REAL functions, including intrinsics, | |
1026 | to REAL. This only matters for unportable code like | |
1027 | real r | |
1028 | r = asin(1.) | |
1029 | if (r .eq. asin(1.)) ... | |
1030 | [The behavior of such code varies with the Fortran compiler used -- | |
1031 | and sometimes is affected by compiler options.] For now, the man page | |
1032 | at the end of f2c.ps is the only part of f2c.ps that reflects this new | |
1033 | option. | |
1034 | ||
1035 | Fri Feb 8 18:12:51 EST 1991: | |
1036 | Cast pointer differences passed as arguments to the appropriate type. | |
1037 | This matters, e.g., with MSDOS compilers that yield a long pointer | |
1038 | difference but have int == short. | |
1039 | Disallow nonpositive dimensions. | |
1040 | ||
1041 | Fri Feb 15 12:24:15 EST 1991: | |
1042 | Change %d to %ld in sprintf call in putpower in putpcc.c. | |
1043 | Free more memory (e.g. allowing translation of larger Fortran | |
1044 | files under MS-DOS). | |
1045 | Recognize READ (character expression) and WRITE (character expression) | |
1046 | as formatted I/O with the format given by the character expression. | |
1047 | Update year in Notice. | |
1048 | ||
1049 | Sat Feb 16 00:42:32 EST 1991: | |
1050 | Recant recognizing WRITE(character expression) as formatted output | |
1051 | -- Fortran 77 is not symmetric in its syntax for READ and WRITE. | |
1052 | ||
1053 | Mon Mar 4 15:19:42 EST 1991: | |
1054 | Fix bug in passing the real part of a complex argument to an intrinsic | |
1055 | function. Omit unneeded parentheses in nested calls to intrinsics. | |
1056 | Example: | |
1057 | subroutine foo(x, y) | |
1058 | complex y | |
1059 | x = exp(sin(real(y))) + exp(imag(y)) | |
1060 | end | |
1061 | ||
1062 | Fri Mar 8 15:05:42 EST 1991: | |
1063 | Fix a comment in expr.c; omit safstrncpy.c (which had bugs in | |
1064 | cases not used by f2c). | |
1065 | ||
1066 | Wed Mar 13 02:27:23 EST 1991: | |
1067 | Initialize firstmemblock->next in mem_init in mem.c . [On most | |
1068 | systems it was fortuituously 0, but with System V, -lmalloc could | |
1069 | trip on this missed initialization.] | |
1070 | ||
1071 | Wed Mar 13 11:47:42 EST 1991: | |
1072 | Fix a reference to freed memory. | |
1073 | ||
1074 | Wed Mar 27 00:42:19 EST 1991: | |
1075 | Fix a memory fault caused by such illegal Fortran as | |
1076 | function foo | |
1077 | x = 3 | |
1078 | logical foo ! declaration among executables | |
1079 | foo=.false. ! used to suffer memory fault | |
1080 | end | |
1081 | ||
1082 | Fri Apr 5 08:30:31 EST 1991: | |
1083 | Fix loss of % in some format expressions, e.g. | |
1084 | write(*,'(1h%)') | |
1085 | Fix botch introduced 27 March 1991 that caused subroutines with | |
1086 | multiple entry points to have extraneous declarations of ret_val. | |
1087 | ||
1088 | Fri Apr 5 12:44:02 EST 1991 | |
1089 | Try again to omit extraneous ret_val declarations -- this morning's | |
1090 | fix was sometimes wrong. | |
1091 | ||
1092 | Mon Apr 8 13:47:06 EDT 1991: | |
1093 | Arrange for s_rnge to have the right prototype under -A -C . | |
1094 | ||
1095 | Wed Apr 17 13:36:03 EDT 1991: | |
1096 | New fatal error message for apparent invocation of a recursive | |
1097 | statement function. | |
1098 | ||
1099 | Thu Apr 25 15:13:37 EDT 1991: | |
1100 | F2c and libi77 adjusted so NAMELIST works with -i2. (I forgot | |
1101 | about -i2 when adding NAMELIST.) This required a change to f2c.h | |
1102 | (that only affects NAMELIST I/O under -i2.) Man-page description of | |
1103 | -i2 adjusted to reflect that -i2 stores array lengths in short ints. | |
1104 | ||
1105 | Fri Apr 26 02:54:41 EDT 1991: | |
1106 | Libi77: fix some bugs in NAMELIST reading of multi-dimensional arrays | |
1107 | (file rsne.c). | |
1108 | ||
1109 | Thu May 9 02:13:51 EDT 1991: | |
1110 | Omit a trailing space in expr.c (could cause a false xsum value if | |
1111 | a mailer drops the trailing blank). | |
1112 | ||
1113 | Thu May 16 13:14:59 EDT 1991: | |
1114 | Libi77: increase LEFBL in lio.h to overcome a NeXT bug. | |
1115 | Tweak for compilers that recognize "nested" comments: inside comments, | |
1116 | turn /* into /+ (as well as */ into +/). | |
1117 | ||
1118 | Sat May 25 11:44:25 EDT 1991: | |
1119 | libf77: s_rnge: declare line long int rather than int. | |
1120 | ||
1121 | Fri May 31 07:51:50 EDT 1991: | |
1122 | libf77: system_: officially return status. | |
1123 | ||
1124 | Mon Jun 17 16:52:53 EDT 1991: | |
1125 | Minor tweaks: omit unnecessary declaration of strcmp (that caused | |
1126 | trouble on a system where strcmp was a macro) from misc.c; add | |
1127 | SHELL = /bin/sh to makefiles. | |
1128 | Fix a dereference of null when a CHARACTER*(*) declaration appears | |
1129 | (illegally) after DATA. Complain only once per subroutine about | |
1130 | declarations appearing after DATA. | |
1131 | ||
1132 | Mon Jul 1 00:28:13 EDT 1991: | |
1133 | Add test and error message for illegal use of subroutine names, e.g. | |
1134 | SUBROUTINE ZAP(A) | |
1135 | ZAP = A | |
1136 | END | |
1137 | ||
1138 | Mon Jul 8 21:49:20 EDT 1991: | |
1139 | Issue a warning about things like | |
1140 | integer i | |
1141 | i = 'abc' | |
1142 | (which is treated as i = ichar('a')). [It might be nice to treat 'abc' | |
1143 | as an integer initialized (in a DATA statement) with 'abc', but | |
1144 | other matters have higher priority.] | |
1145 | Render | |
1146 | i = ichar('A') | |
1147 | as | |
1148 | i = 'A'; | |
1149 | rather than | |
1150 | i = 65; | |
1151 | (which assumes ASCII). | |
1152 | ||
1153 | Fri Jul 12 07:41:30 EDT 1991: | |
1154 | Note added to README about erroneous definitions of __STDC__ . | |
1155 | ||
1156 | Sat Jul 13 13:38:54 EDT 1991: | |
1157 | Fix bugs in double type convesions of complex values, e.g. | |
1158 | sngl(real(...)) or dble(real(...)) (where ... is complex). | |
1159 | ||
1160 | Mon Jul 15 13:21:42 EDT 1991: | |
1161 | Fix bug introduced 8 July 1991 that caused erroneous warnings | |
1162 | "ichar([first char. of] char. string) assumed for conversion to numeric" | |
1163 | when a subroutine had an array of character strings as an argument. | |
1164 | ||
1165 | Wed Aug 28 01:12:17 EDT 1991: | |
1166 | Omit an unused function in format.c, an unused variable in proc.c . | |
1167 | Under -r8, promote complex to double complex (as the man page claims). | |
1168 | ||
1169 | Fri Aug 30 17:19:17 EDT 1991: | |
1170 | f2c.ps updated: slightly expand description of intrinsics and,or,xor, | |
1171 | not; add mention of intrinsics lshift, rshift; add note about f2c | |
1172 | accepting Fortran 90 inline comments (starting with !); update Cobalt | |
1173 | Blue address. | |
1174 | ||
1175 | Tue Sep 17 07:17:33 EDT 1991: | |
1176 | libI77: err.c and open.c modified to use modes "rb" and "wb" | |
1177 | when (f)opening unformatted files; README updated to point out | |
1178 | that it may be necessary to change these modes to "r" and "w" | |
1179 | on some non-ANSI systems. | |
1180 | ||
1181 | Tue Oct 15 10:25:49 EDT 1991: | |
1182 | Minor tweaks that make some PC compilers happier: insert some | |
1183 | casts, add args to signal functions. | |
1184 | Change -g to emit uncommented #line lines -- and to emit more of them; | |
1185 | update fc, f2c.1, f2c.1t, f2c.ps to reflect this. | |
1186 | Change uchar to Uchar in xsum.c . | |
1187 | Bring gram.c up to date. | |
1188 | ||
1189 | Thu Oct 17 09:22:05 EDT 1991: | |
1190 | libi77: README, fio.h, sue.c, uio.c changed so the length field | |
1191 | in unformatted sequential records has type long rather than int | |
1192 | (unless UIOLEN_int is #defined). This is for systems where sizeof(int) | |
1193 | can vary, depending on the compiler or compiler options. | |
1194 | ||
1195 | Thu Oct 17 13:42:59 EDT 1991: | |
1196 | libi77: inquire.c: when MSDOS is defined, don't strcmp units[i].ufnm | |
1197 | when it is NULL. | |
1198 | ||
1199 | Fri Oct 18 15:16:00 EDT 1991: | |
1200 | Correct xsum0.out in "all from f2c/src" (somehow botched on 15 Oct.). | |
1201 | ||
1202 | Tue Oct 22 18:12:56 EDT 1991: | |
1203 | Fix memory fault when a character*(*) argument is used (illegally) | |
1204 | as a dummy variable in the definition of a statement function. (The | |
1205 | memory fault occurred when the statement function was invoked.) | |
1206 | Complain about implicit character*(*). | |
1207 | ||
1208 | Thu Nov 14 08:50:42 EST 1991: | |
1209 | libi77: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c; this change | |
1210 | should be invisible unless you're running a brain-damaged system. | |
1211 | ||
1212 | Mon Nov 25 19:04:40 EST 1991: | |
1213 | libi77: correct botches introduced 17 Oct. 1991 and 14 Nov. 1991 | |
1214 | (change uint to Uint in lwrite.c; other changes that only matter if | |
1215 | sizeof(int) != sizeof(long)). | |
1216 | Add a more meaningful error message when bailing out due to an attempt | |
1217 | to invoke a COMMON variable as a function. | |
1218 | ||
1219 | Sun Dec 1 19:29:24 EST 1991: | |
1220 | libi77: uio.c: add test for read failure (seq. unformatted reads); | |
1221 | adjust an error return from EOF to off end of record. | |
1222 | ||
1223 | Tue Dec 10 17:42:28 EST 1991: | |
1224 | Add tests to prevent memory faults with bad uses of character*(*). | |
1225 | ||
1226 | Thu Dec 12 11:24:41 EST 1991: | |
1227 | libi77: fix bug with internal list input that caused the last | |
1228 | character of each record to be ignored; adjust error message in | |
1229 | internal formatted input from "end-of-file" to "off end of record" | |
1230 | if the format specifies more characters than the record contains. | |
1231 | ||
1232 | Wed Dec 18 17:48:11 EST 1991: | |
1233 | Fix bug in translating nonsensical ichar invocations involving | |
1234 | concatenations. | |
1235 | Fix bug in passing intrinsics lle, llt, lge, lgt as arguments; | |
1236 | hl_le was being passed rather than l_le, etc. | |
1237 | libf77: adjust length parameters from long to ftnlen, for | |
1238 | compiling with f2c_i2 defined. | |
1239 | ||
1240 | Sat Dec 21 15:30:57 EST 1991: | |
1241 | Allow DO nnn ... to end with an END DO statement labelled nnn. | |
1242 | ||
1243 | Tue Dec 31 13:53:47 EST 1991: | |
1244 | Fix bug in handling dimension a(n**3,2) -- pow_ii was called | |
1245 | incorrectly. | |
1246 | Fix bug in translating | |
1247 | subroutine x(abc,n) | |
1248 | character abc(n) | |
1249 | write(abc,'(i10)') 123 | |
1250 | end | |
1251 | (omitted declaration and initialiation of abc_dim1). | |
1252 | Complain about dimension expressions of such invalid types | |
1253 | as complex and logical. | |
1254 | ||
1255 | Fri Jan 17 11:54:20 EST 1992: | |
1256 | Diagnose some illegal uses of main program name (rather than | |
1257 | memory faulting). | |
1258 | libi77: (1) In list and namelist input, treat "r* ," and "r*," | |
1259 | alike (where r is a positive integer constant), and fix a bug in | |
1260 | handling null values following items with repeat counts (e.g., | |
1261 | 2*1,,3). (2) For namelist reading of a numeric array, allow a new | |
1262 | name-value subsequence to terminate the current one (as though the | |
1263 | current one ended with the right number of null values). | |
1264 | (3) [lio.h, lwrite.c]: omit insignificant zeros in list and namelist | |
1265 | output. (Compile with -DOld_list_output to get the old behavior.) | |
1266 | ||
1267 | Sat Jan 18 15:58:01 EST 1992: | |
1268 | libi77: make list output consistent with F format by printing .1 | |
1269 | rather than 0.1 (introduced yesterday). | |
1270 | ||
1271 | Wed Jan 22 08:32:43 EST 1992: | |
1272 | libi77: add comment to README pointing out preconnection of | |
1273 | Fortran units 5, 6, 0 to stdin, stdout, stderr (respectively). | |
1274 | ||
1275 | Mon Feb 3 11:57:53 EST 1992: | |
1276 | libi77: fix namelist read bug that caused the character following | |
1277 | a comma to be ignored. | |
1278 | ||
1279 | Fri Feb 28 01:04:26 EST 1992: | |
1280 | libf77: fix buggy z_sqrt.c (double precision square root), which | |
1281 | misbehaved for arguments in the southwest quadrant. | |
1282 | ||
1283 | Thu Mar 19 15:05:18 EST 1992: | |
1284 | Fix bug (introduced 17 Jan 1992) in handling multiple entry points | |
1285 | of differing types (with implicitly typed entries appearing after | |
1286 | the first executable statement). | |
1287 | Fix memory fault in the following illegal Fortran: | |
1288 | double precision foo(i) | |
1289 | * illegal: above should be "double precision function foo(i)" | |
1290 | foo = i * 3.2 | |
1291 | entry moo(i) | |
1292 | end | |
1293 | Note about ANSI_Libraries (relevant, e.g., to IRIX 4.0.1 and AIX) | |
1294 | added to README. | |
1295 | Abort zero divides during constant simplification. | |
1296 | ||
1297 | Sat Mar 21 01:27:09 EST 1992: | |
1298 | Tweak ckalloc (misc.c) for systems where malloc(0) = 0; this matters | |
1299 | for subroutines with multiple entry points but no arguments. | |
1300 | Add "struct memblock;" to init.c (irrelevant to most compilers). | |
1301 | ||
1302 | Wed Mar 25 13:31:05 EST 1992: | |
1303 | Fix bug with IMPLICIT INTEGER*4(...): under -i2 or -I2, the *4 was | |
1304 | ignored. | |
1305 | ||
1306 | Tue May 5 09:53:55 EDT 1992: | |
1307 | Tweaks to README; e.g., ANSI_LIbraries changed to ANSI_Libraries . | |
1308 | ||
1309 | Wed May 6 23:49:07 EDT 1992 | |
1310 | Under -A and -C++, have subroutines return 0 (even if they have | |
1311 | no * arguments). | |
1312 | Adjust libi77 (rsne.c and lread.c) for systems where ungetc is | |
1313 | a macro. Tweak lib[FI]77/makefile to use unique intermediate file | |
1314 | names (for parallel makes). | |
1315 | ||
1316 | Tue May 19 09:03:05 EDT 1992: | |
1317 | Adjust libI77 to make err= work with internal list and formatted I/O. | |
1318 | ||
1319 | Sat May 23 18:17:42 EDT 1992: | |
1320 | Under -A and -C++, supply "return 0;" after the code generated for | |
1321 | a STOP statement -- the C compiler doesn't know that s_stop won't | |
1322 | return. | |
1323 | New (mutually exclusive) options: | |
1324 | -f treats all input lines as free-format lines, | |
1325 | honoring text that appears after column 72 | |
1326 | and not padding lines shorter than 72 characters | |
1327 | with blanks (which matters if a character string | |
1328 | is continued across 2 or more lines). | |
1329 | -72 treats text appearing after column 72 as an error. | |
1330 | ||
1331 | Sun May 24 09:45:37 EDT 1992: | |
1332 | Tweak description of -f in f2c.1 and f2c.1t; update f2c.ps . | |
1333 | ||
1334 | Fri May 29 01:17:15 EDT 1992: | |
1335 | Complain about externals used as variables. Example | |
1336 | subroutine foo(a,b) | |
1337 | external b | |
1338 | a = a*b ! illegal use of b; perhaps should be b() | |
1339 | end | |
1340 | ||
1341 | Mon Jun 15 11:15:27 EDT 1992: | |
1342 | Fix bug in handling namelists with names that have underscores. | |
1343 | ||
1344 | Sat Jun 27 17:30:59 EDT 1992: | |
1345 | Under -A and -C++, end Main program aliases with "return 0;". | |
1346 | Under -A and -C++, use .P files and usage in previous subprograms | |
1347 | in the current file to give prototypes for functions declared EXTERNAL | |
1348 | but not invoked. | |
1349 | Fix memory fault under -d1 -P . | |
1350 | Under -A and -C++, cast arguments to the right types in calling | |
1351 | a function that has been defined in the current file or in a .P file. | |
1352 | Fix bug in handling multi-dimensional arrays with array references | |
1353 | in their leading dimensions. | |
1354 | Fix bug in the intrinsic cmplx function when the first argument | |
1355 | involves an expression for which f2c generates temporary variables, | |
1356 | e.g. cmplx(abs(real(a)),1.) . | |
1357 | ||
1358 | Sat Jul 18 07:36:58 EDT 1992: | |
1359 | Fix buglet with -e1c (invisible on most systems) temporary file | |
1360 | f2c_functions was unlinked before being closed. | |
1361 | libf77: fix bugs in evaluating m**n for integer n < 0 and m an | |
1362 | integer different from 1 or a real or double precision 0. | |
1363 | Catch SIGTRAP (to print "Trace trap" before aborting). Programs | |
1364 | that previously erroneously computed 1 for 0**-1 may now fault. | |
1365 | Relevant routines: main.c pow_di.c pow_hh.c pow_ii.c pow_ri.c . | |
1366 | ||
1367 | Sat Jul 18 08:40:10 EDT 1992: | |
1368 | libi77: allow namelist input to end with & (e.g. &end). | |
1369 | ||
1370 | Thu Jul 23 00:14:43 EDT 1992 | |
1371 | Append two underscores rather than one to C keywords used as | |
1372 | local variables to avoid conflicts with similarly named COMMON blocks. | |
1373 | ||
1374 | Thu Jul 23 11:20:55 EDT 1992: | |
1375 | libf77, libi77 updated to assume ANSI prototypes unless KR_headers | |
1376 | is #defined. | |
1377 | libi77 now recognizes a Z format item as in Fortran 90; | |
1378 | the implementation assumes 8-bit bytes and botches character strings | |
1379 | on little-endian machines (by printing their bytes from right to | |
1380 | left): expect this bug to persist; fixing it would require a | |
1381 | change to the I/O calling sequences. | |
1382 | ||
1383 | Tue Jul 28 15:18:33 EDT 1992: | |
1384 | libi77: insert missed "#ifdef KR_headers" lines around getnum | |
1385 | header in rsne.c. Version not updated. | |
1386 | ||
1387 | NOTE: "index from f2c" now ends with current timestamps of files in | |
1388 | "all from f2c/src", sorted by time. To bring your source up to date, | |
1389 | obtain source files with a timestamp later than the time shown in your | |
1390 | version.c. | |
1391 | ||
1392 | Fri Aug 14 08:07:09 EDT 1992: | |
1393 | libi77: tweak wrt_E in wref.c to avoid signing NaNs. | |
1394 | ||
1395 | Sun Aug 23 19:05:22 EDT 1992: | |
1396 | fc: supply : after O in getopt invocation (for -O1 -O2 -O3). | |
1397 | ||
1398 | Mon Aug 24 18:37:59 EDT 1992: | |
1399 | Recant above tweak to fc: getopt is dumber than I thought; | |
1400 | it's necessary to say -O 1 (etc.). | |
1401 | libF77/README: add comments about ABORT, ERF, DERF, ERFC, DERFC, | |
1402 | GETARG, GETENV, IARGC, SIGNAL, and SYSTEM. | |
1403 | ||
1404 | Tue Oct 27 01:57:42 EST 1992: | |
1405 | libf77, libi77: | |
1406 | 1. Fix botched indirection in signal_.c. | |
1407 | 2. Supply missing l_eof = 0 assignment to s_rsne() in rsne.c (so | |
1408 | end-of-file on other files won't confuse namelist reads of external | |
1409 | files). | |
1410 | 3. Prepend f__ to external names that are only of internal | |
1411 | interest to lib[FI]77. | |
1412 | ||
1413 | Thu Oct 29 12:37:18 EST 1992: | |
1414 | libf77: Fix botch in signal_.c when KR_headers is #defined; | |
1415 | add CFLAGS to makefile. | |
1416 | libi77: trivial change to makefile for consistency with | |
1417 | libF77/makefile. | |
1418 | ||
1419 | Wed Feb 3 02:05:16 EST 1993: | |
1420 | Recognize types INTEGER*1, LOGICAL*1, LOGICAL*2, INTEGER*8. | |
1421 | INTEGER*8 is not well tested and will only work reasonably on | |
1422 | systems where int = 4 bytes, long = 8 bytes; on such systems, | |
1423 | you'll have to modify f2c.h appropriately, changing integer | |
1424 | from long to int and adding typedef long longint. You'll also | |
1425 | have to compile libI77 with Allow_TYQUAD #defined and adjust | |
1426 | libF77/makefile to compile pow_qq.c. In the f2c source, changes | |
1427 | for INTEGER*8 are delimited by #ifdef TYQUAD ... #endif. You | |
1428 | can omit the INTEGER*8 changes by compiling with NO_TYQUAD | |
1429 | #defined. Otherwise, the new command-line option -!i8 | |
1430 | disables recognition of INTEGER*8. | |
1431 | libf77: add pow_qq.c | |
1432 | libi77: add #ifdef Allow_TYQUAD stuff. Changes for INTEGER*1, | |
1433 | LOGICAL*1, and LOGICAL*2 came last 23 July 1992. Fix bug in | |
1434 | backspace (that only bit when the last character of the second | |
1435 | or subsequent buffer read was the previous newline). Guard | |
1436 | against L_tmpnam being too small in endfile.c. For MSDOS, | |
1437 | close and reopen files when copying to truncate. Lengthen | |
1438 | LINTW (buffer size in lwrite.c). | |
1439 | Add \ to the end of #define lines that get broken. | |
1440 | Fix bug in handling NAMELIST of items in EQUIVALENCE. | |
1441 | Under -h (or -hd), convert Hollerith to integer in general expressions | |
1442 | (e.g., assignments), not just when they're passed as arguments, and | |
1443 | blank-pad rather than 0-pad the Hollerith to a multiple of | |
1444 | sizeof(integer) or sizeof(doublereal). | |
1445 | Add command-line option -s, which instructs f2c preserve multi- | |
1446 | dimensional subscripts (by emitting and using appropriate #defines). | |
1447 | Fix glitch (with default type inferences) in examples like | |
1448 | call foo('abc') | |
1449 | end | |
1450 | subroutine foo(goo) | |
1451 | end | |
1452 | This gave two warning messages: | |
1453 | Warning on line 4 of y.f: inconsistent calling sequences for foo: | |
1454 | here 1, previously 2 args and string lengths. | |
1455 | Warning on line 4 of y.f: inconsistent calling sequences for foo: | |
1456 | here 2, previously 1 args and string lengths. | |
1457 | Now the second Warning is suppressed. | |
1458 | Complain about all inconsistent arguments, not just the first. | |
1459 | Switch to automatic creation of "all from f2c/src". For folks | |
1460 | getting f2c source via ftp, this means f2c/src/all.Z is now an | |
1461 | empty file rather than a bundle. | |
1462 | Separate -P and -A: -P no longer implies -A. | |
1463 | ||
1464 | Thu Feb 4 00:32:20 EST 1993: | |
1465 | Fix some glitches (introduced yesterday) with -h . | |
1466 | ||
1467 | Fri Feb 5 01:40:38 EST 1993: | |
1468 | Fix bug in types conveyed for namelists (introduced 3 Feb. 1993). | |
1469 | ||
1470 | Fri Feb 5 21:26:43 EST 1993: | |
1471 | libi77: tweaks to NAMELIST and open (after comments by Harold | |
1472 | Youngren): | |
1473 | 1. Reading a ? instead of &name (the start of a namelist) causes | |
1474 | the namelist being sought to be written to stdout (unit 6); | |
1475 | to omit this feature, compile rsne.c with -DNo_Namelist_Questions. | |
1476 | 2. Reading the wrong namelist name now leads to an error message | |
1477 | and an attempt to skip input until the right namelist name is found; | |
1478 | to omit this feature, compile rsne.c with -DNo_Bad_Namelist_Skip. | |
1479 | 3. Namelist writes now insert newlines before each variable; to omit | |
1480 | this feature, compile xwsne.c with -DNo_Extra_Namelist_Newlines. | |
1481 | 4. For OPEN of sequential files, ACCESS='APPEND' (or | |
1482 | access='anything else starting with "A" or "a"') causes the file to | |
1483 | be positioned at end-of-file, so a write will append to the file. | |
1484 | (This is nonstandard, but does not require modifying data | |
1485 | structures.) | |
1486 | ||
1487 | Mon Feb 8 14:40:37 EST 1993: | |
1488 | Increase number of continuation lines allowed from 19 to 99, | |
1489 | and allow changing this limit with -NC (e.g. -NC200 for 200 lines). | |
1490 | Treat control-Z (at the beginning of a line) as end-of-file: see | |
1491 | the new penultimate paragraph of README. | |
1492 | Fix a rarely seen glitch that could make an error messages to say | |
1493 | "line 0". | |
1494 | ||
1495 | Tue Feb 9 02:05:40 EST 1993 | |
1496 | libi77: change some #ifdef MSDOS lines to #ifdef NON_UNIX_STDIO, | |
1497 | and, in err.c under NON_UNIX_STDIO, avoid close(creat(name,0666)) | |
1498 | when the unit has another file descriptor for name. | |
1499 | ||
1500 | Tue Feb 9 17:12:49 EST 1993 | |
1501 | libi77: more tweaks for NON_UNIX_STDIO: use stdio routines | |
1502 | rather than open, close, creat, seek, fdopen (except for f__isdev). | |
1503 | ||
1504 | Fri Feb 12 15:49:33 EST 1993 | |
1505 | Update src/gram.c (which was forgotten in the recent updates). | |
1506 | Most folks regenerate it anyway (wity yacc or bison). | |
1507 | ||
1508 | Thu Mar 4 17:07:38 EST 1993 | |
1509 | Increase default max labels in computed gotos and alternate returns | |
1510 | to 257, and allow -Nl1234 to specify this number. | |
1511 | Tweak put.c to check p->tag == TADDR in realpart() and imagpart(). | |
1512 | Adjust fc script to allow .r (RATFOR) files and -C (check subscripts). | |
1513 | Avoid declaring strchr in niceprintf.c under -DANSI_Libraries . | |
1514 | gram.c updated again. | |
1515 | libi77: err.c, open.c: take declaration of fdopen from rawio.h. | |
1516 | ||
1517 | Sat Mar 6 07:09:11 EST 1993 | |
1518 | libi77: uio.c: adjust off-end-of-record test for sequential | |
1519 | unformatted reads to respond to err= rather than end= . | |
1520 | ||
1521 | Sat Mar 6 16:12:47 EST 1993 | |
1522 | Treat scalar arguments of the form (v) and v+0, where v is a variable, | |
1523 | as expressions: assign to a temporary variable, and pass the latter. | |
1524 | gram.c updated. | |
1525 | ||
1526 | Mon Mar 8 09:35:38 EST 1993 | |
1527 | "f2c.h from f2c" updated to add types logical1 and integer1 for | |
1528 | LOGICAL*1 and INTEGER*1. ("f2c.h from f2c" is supposed to be the | |
1529 | same as "f2c.h from f2c/src", which was updated 3 Feb. 1993.) | |
1530 | ||
1531 | Mon Mar 8 17:57:55 EST 1993 | |
1532 | Fix rarely seen bug that could cause strange casts in function | |
1533 | invocations (revealed by an example with msdos/f2c.exe). | |
1534 | msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). | |
1535 | ||
1536 | Fri Mar 12 12:37:01 EST 1993 | |
1537 | Fix bug with -s in handling subscripts involving min, max, and | |
1538 | complicated expressions requiring temporaries. | |
1539 | Fix bug in handling COMMONs that need padding by a char array. | |
1540 | msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). | |
1541 | ||
1542 | Fri Mar 12 17:16:16 EST 1993 | |
1543 | libf77, libi77: updated for compiling under C++. | |
1544 | ||
1545 | Mon Mar 15 16:21:37 EST 1993 | |
1546 | libi77: more minor tweaks (for -DKR_headers); Version.c not changed. | |
1547 | ||
1548 | Thu Mar 18 12:37:30 EST 1993 | |
1549 | Flag -r (for discarding carriage-returns on systems that end lines | |
1550 | with carriage-return/newline pairs, e.g. PCs) added to xsum, and | |
1551 | xsum.c converted to ANSI/ISO syntax (with K&R syntax available with | |
1552 | -DKR_headers). [When time permits, the f2c source will undergo a | |
1553 | similar conversion.] | |
1554 | libi77: tweaks to #includes in endfile.c, err.c, open.c, rawio.h; | |
1555 | Version.c not changed. | |
1556 | f2c.ps updated (to pick up revision of 2 Feb. 1993 to f2c.1). | |
1557 | ||
1558 | Fri Mar 19 09:19:26 EST 1993 | |
1559 | libi77: add (char *) casts to malloc and realloc invocations | |
1560 | in err.c, open.c; Version.c not changed. | |
1561 | ||
1562 | Tue Mar 30 07:17:15 EST 1993 | |
1563 | Fix bug introduced 6 March 1993: possible memory corruption when | |
1564 | loops in data statements involve constant subscripts, as in | |
1565 | DATA (GUNIT(1,I),I=0,14)/15*-1/ | |
1566 | ||
1567 | Tue Mar 30 16:17:42 EST 1993 | |
1568 | Fix bug with -s: (floating-point array item)*(complex item) | |
1569 | generates an _subscr() reference for the floating-point array, | |
1570 | but a #define for the _subscr() was omitted. | |
1571 | ||
1572 | Tue Apr 6 12:11:22 EDT 1993 | |
1573 | libi77: adjust error returns for formatted inputs to flush the current | |
1574 | input line when err= is specified. To restore the old behavior (input | |
1575 | left mid-line), either adjust the #definition of errfl in fio.h or omit | |
1576 | the invocation of f__doend in err__fl (in err.c). | |
1577 | ||
1578 | Tue Apr 6 13:30:04 EDT 1993 | |
1579 | Fix bug revealed in | |
1580 | subroutine foo(i) | |
1581 | call goo(int(i)) | |
1582 | end | |
1583 | which now passes a copy of i, rather than i itself. | |
1584 | ||
1585 | Sat Apr 17 11:41:02 EDT 1993 | |
1586 | Adjust appending of underscores to conform with f2c.ps ("A Fortran | |
1587 | to C Converter"): names that conflict with C keywords or f2c type | |
1588 | names now have just one underscore appended (rather than two); add | |
1589 | "integer1", "logical1", "longint" to the keyword list. | |
1590 | Append underscores to names that appear in EQUIVALENCE and are | |
1591 | component names in a structure declared in f2c.h, thus avoiding a | |
1592 | problem caused by the #defines emitted for equivalences. Example: | |
1593 | complex a | |
1594 | equivalence (i,j) | |
1595 | a = 1 ! a.i went awry because of #define i | |
1596 | j = 2 | |
1597 | write(*,*) a, i | |
1598 | end | |
1599 | Adjust line-breaking logic to avoid splitting very long constants | |
1600 | (and names). Example: | |
1601 | ! The next line starts with tab and thus is a free-format line. | |
1602 | a=.012345689012345689012345689012345689012345689012345689012345689012345689 | |
1603 | end | |
1604 | Omit extraneous "return 0;" from entry stubs emitted for multiple | |
1605 | entry points of type character, complex, or double complex. | |
1606 | ||
1607 | Sat Apr 17 14:35:05 EDT 1993 | |
1608 | Fix bug (introduced 4 Feb.) in separating -P from -A that kept f2c | |
1609 | from re-reading a .P file written without -A or -C++ describing a | |
1610 | routine with an external argument. [See the just-added note about | |
1611 | separating -P from -A in the changes above for 3 Feb. 1993.] | |
1612 | Fix bug (type UNKNOWN for V in the example below) revealed by | |
1613 | subroutine a() | |
1614 | external c | |
1615 | call b(c) | |
1616 | end | |
1617 | subroutine b(v) | |
1618 | end | |
1619 | ||
1620 | Sun Apr 18 19:55:26 EDT 1993 | |
1621 | Fix wrong calling sequence for mem() in yesterday's addition to | |
1622 | equiv.c . | |
1623 | ||
1624 | Wed Apr 21 17:39:46 EDT 1993 | |
1625 | Fix bug revealed in | |
1626 | ||
1627 | ASSIGN 10 TO L1 | |
1628 | GO TO 20 | |
1629 | 10 ASSIGN 30 TO L2 | |
1630 | STOP 10 | |
1631 | ||
1632 | 20 ASSIGN 10 TO L2 ! Bug here because 10 had been assigned | |
1633 | ! to another label, then defined. | |
1634 | GO TO L2 | |
1635 | 30 END | |
1636 | ||
1637 | Fri Apr 23 18:38:50 EDT 1993 | |
1638 | Fix bug with -h revealed in | |
1639 | CHARACTER*9 FOO | |
1640 | WRITE(FOO,'(I6)') 1 | |
1641 | WRITE(FOO,'(I6)') 2 ! struct icilist io___3 botched | |
1642 | END | |
1643 | ||
1644 | Tue Apr 27 16:08:28 EDT 1993 | |
1645 | Tweak to makefile: remove "size f2c". | |
1646 | ||
1647 | Tue May 4 23:48:20 EDT 1993 | |
1648 | libf77: tweak signal_ line of f2ch.add . | |
1649 | ||
1650 | Tue Jun 1 13:47:13 EDT 1993 | |
1651 | Fix bug introduced 3 Feb. 1993 in handling multiple entry | |
1652 | points with differing return types -- the postfix array in proc.c | |
1653 | needed a new entry for integer*8 (which resulted in wrong | |
1654 | Multitype suffixes for non-integral types). | |
1655 | For (default) K&R C, generate VOID rather than int functions for | |
1656 | functions of Fortran type character, complex, and double complex. | |
1657 | msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). | |
1658 | ||
1659 | Tue Jun 1 23:11:15 EDT 1993 | |
1660 | f2c.h: add Multitype component g and commented type longint. | |
1661 | proc.c: omit "return 0;" from stubs for complex and double complex | |
1662 | entries (when entries have multiple types); add test to avoid memory | |
1663 | fault with illegal combinations of entry types. | |
1664 | ||
1665 | Mon Jun 7 12:00:47 EDT 1993 | |
1666 | Fix memory fault in | |
1667 | common /c/ m | |
1668 | integer m(1) | |
1669 | data m(1)/1/, m(2)/2/ ! one too many initializers | |
1670 | end | |
1671 | msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). | |
1672 | ||
1673 | Fri Jun 18 13:55:51 EDT 1993 | |
1674 | libi77: change type of signal_ in f2ch.add; change type of il in | |
1675 | union Uint from long to integer (for machines like the DEC Alpha, | |
1676 | where integer should be the same as int). Version.c not changed. | |
1677 | Tweak gram.dcl and gram.head: add semicolons after some rules that | |
1678 | lacked them, and remove an extraneous semicolon. These changes are | |
1679 | completely transparent to our local yacc programs, but apparently | |
1680 | matter on some VMS systems. | |
1681 | ||
1682 | Wed Jun 23 01:02:56 EDT 1993 | |
1683 | Update "fc" shell script, and bring f2c.1 and f2c.1t up to date: | |
1684 | they're meant to be linked with (i.e., the same as) src/f2c.1 and | |
1685 | src/f2c.1t . [In the last update of f2c.1* (2 Feb. 1993), only | |
1686 | src/f2c.1 and src/f2c.1t got changed -- a mistake.] | |
1687 | ||
1688 | Wed Jun 23 09:04:31 EDT 1993 | |
1689 | libi77: fix bug in format reversions for internal writes. | |
1690 | Example: | |
1691 | character*60 lines(2) | |
1692 | write(lines,"('n =',i3,2(' more text',i3))") 3, 4, 5, 6 | |
1693 | write(*,*) 'lines(1) = ', lines(1) | |
1694 | write(*,*) 'lines(2) = ', lines(2) | |
1695 | end | |
1696 | gave an error message that began "iio: off end of record", rather | |
1697 | than giving the correct output: | |
1698 | ||
1699 | lines(1) = n = 3 more text 4 more text 5 | |
1700 | lines(2) = more text 6 more text | |
1701 | ||
1702 | Thu Aug 5 11:31:14 EDT 1993 | |
1703 | libi77: lread.c: fix bug in handling repetition counts for logical | |
1704 | data (during list or namelist input). Change struct f__syl to | |
1705 | struct syl (for buggy compilers). | |
1706 | ||
1707 | Sat Aug 7 16:05:30 EDT 1993 | |
1708 | libi77: lread.c (again): fix bug in namelist reading of incomplete | |
1709 | logical arrays. | |
1710 | Fix minor calling-sequence errors in format.c, output.c, putpcc.c: | |
1711 | should be invisible. | |
1712 | ||
1713 | Mon Aug 9 09:12:38 EDT 1993 | |
1714 | Fix erroneous cast under -A in translating | |
1715 | character*(*) function getc() | |
1716 | getc(2:3)=' ' !wrong cast in first arg to s_copy | |
1717 | end | |
1718 | libi77: lread.c: fix bug in namelist reading of an incomplete array | |
1719 | of numeric data followed by another namelist item whose name starts | |
1720 | with 'd', 'D', 'e', or 'E'. | |
1721 | ||
1722 | Fri Aug 20 13:22:10 EDT 1993 | |
1723 | Fix bug in do while revealed by | |
1724 | subroutine skdig (line, i) | |
1725 | character line*(*), ch*1 | |
1726 | integer i | |
1727 | logical isdigit | |
1728 | isdigit(ch) = ch.ge.'0' .and. ch.le.'9' | |
1729 | do while (isdigit(line(i:i))) ! ch__1[0] was set before | |
1730 | ! "while(...) {...}" | |
1731 | i = i + 1 | |
1732 | enddo | |
1733 | end | |
1734 | ||
1735 | Fri Aug 27 08:22:54 EDT 1993 | |
1736 | Add #ifdefs to avoid declaring atol when it is a macro; version.c | |
1737 | not updated. | |
1738 | ||
1739 | Wed Sep 8 12:24:26 EDT 1993 | |
1740 | libi77: open.c: protect #include "sys/..." with | |
1741 | #ifndef NON_UNIX_STDIO; Version date not changed. | |
1742 | ||
1743 | Thu Sep 9 08:51:21 EDT 1993 | |
1744 | Adjust "include" to interpret file names relative to the directory | |
1745 | of the file that contains the "include". | |
1746 | ||
1747 | Fri Sep 24 00:56:12 EDT 1993 | |
1748 | Fix offset error resulting from repeating the same equivalence | |
1749 | statement twice. Example: | |
1750 | real a(2), b(2) | |
1751 | equivalence (a(2), b(2)) | |
1752 | equivalence (a(2), b(2)) | |
1753 | end | |
1754 | Increase MAXTOKENLEN (to roughly the largest allowed by ANSI C). | |
1755 | ||
1756 | Mon Sep 27 08:55:09 EDT 1993 | |
1757 | libi77: endfile.c: protect #include "sys/types.h" with | |
1758 | #ifndef NON_UNIX_STDIO; Version.c not changed. | |
1759 | ||
1760 | Fri Oct 15 15:37:26 EDT 1993 | |
1761 | Fix rarely seen parsing bug illustrated by | |
1762 | subroutine foo(xabcdefghij) | |
1763 | character*(*) xabcdefghij | |
1764 | IF (xabcdefghij.NE.'##') GOTO 40 | |
1765 | 40 end | |
1766 | in which the spacing in the IF line is crucial. | |
1767 | ||
1768 | Thu Oct 21 13:55:11 EDT 1993 | |
1769 | Give more meaningful error message (then "unexpected character in | |
1770 | cds") when constant simplification leads to Infinity or NaN. | |
1771 | ||
1772 | Wed Nov 10 15:01:05 EST 1993 | |
1773 | libi77: backspace.c: adjust, under -DMSDOS, to cope with MSDOS | |
1774 | text files, as handled by some popular PC C compilers. Beware: | |
1775 | the (defective) libraries associated with these compilers assume lines | |
1776 | end with \r\n (conventional MS-DOS text files) -- and ftell (and | |
1777 | hence the current implementation of backspace) screws up if lines with | |
1778 | just \n. | |
1779 | ||
1780 | Thu Nov 18 09:37:47 EST 1993 | |
1781 | Give a better error (than "control stack empty") for an extraneous | |
1782 | ENDDO. Example: | |
1783 | enddo | |
1784 | end | |
1785 | Update comments about ftp in "readme from f2c". | |
1786 | ||
1787 | Sun Nov 28 17:26:50 EST 1993 | |
1788 | Change format of time stamp in version.c to yyyymmdd. | |
1789 | Sort parameter adjustments (or complain of impossible dependencies) | |
1790 | so that dummy arguments are referenced only after being adjusted. | |
1791 | Example: | |
1792 | subroutine foo(a,b) | |
1793 | integer a(2) ! a must be adjusted before b | |
1794 | double precision b(a(1),a(2)) | |
1795 | call goo(b(3,4)) | |
1796 | end | |
1797 | Adjust structs for initialized common blocks and equivalence classes | |
1798 | to omit the trailing struct component added to force alignment when | |
1799 | padding already forces the desired alignment. Example: | |
1800 | PROGRAM TEST | |
1801 | COMMON /Z/ A, CC | |
1802 | CHARACTER*4 CC | |
1803 | DATA cc /'a'/ | |
1804 | END | |
1805 | now gives | |
1806 | struct { | |
1807 | integer fill_1[1]; | |
1808 | char e_2[4]; | |
1809 | } z_ = { {0}, {'a', ' ', ' ', ' '} }; | |
1810 | rather than | |
1811 | struct { | |
1812 | integer fill_1[1]; | |
1813 | char e_2[4]; | |
1814 | real e_3; | |
1815 | } z_ = { {0}, {'a', ' ', ' ', ' '}, (float)0. }; | |
1816 | ||
1817 | Wed Dec 8 16:24:43 EST 1993 | |
1818 | Adjust lex.c to recognize # nnn "filename" lines emitted by cpp; | |
1819 | this affects the file names and line numbers in error messages and | |
1820 | the #line lines emitted under -g. | |
1821 | Under -g, arrange for a file that starts with an executable | |
1822 | statement to have the first #line line indicate line 1, rather | |
1823 | than the line number of the END statement ending the main program. | |
1824 | Adjust fc script to run files ending in .F through /lib/cpp. | |
1825 | Fix bug ("Impossible tag 2") in | |
1826 | if (t .eq. (0,2)) write(*,*) 'Bug!' | |
1827 | end | |
1828 | libi77: iio.c: adjust internal formatted reads to treat short records | |
1829 | as though padded with blanks (rather than causing an "off end of record" | |
1830 | error). | |
1831 | ||
1832 | Wed Dec 15 15:19:15 EST 1993 | |
1833 | fc: adjusted for .F files to pass -D and -I options to cpp. | |
1834 | ||
1835 | Fri Dec 17 20:03:38 EST 1993 | |
1836 | Fix botch introduced 28 Nov. 1993 in vax.c; change "version of" | |
1837 | to "version". | |
1838 | ||
1839 | Tue Jan 4 15:39:52 EST 1994 | |
1840 | msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). | |
1841 | ||
1842 | Wed Jan 19 08:55:19 EST 1994 | |
1843 | Arrange to accept | |
1844 | integer Nx, Ny, Nz | |
1845 | parameter (Nx = 10, Ny = 20) | |
1846 | parameter (Nz = max(Nx, Ny)) | |
1847 | integer c(Nz) | |
1848 | call foo(c) | |
1849 | end | |
1850 | rather than complaining "Declaration error for c: adjustable dimension | |
1851 | on non-argument". The necessary changes cause some hitherto unfolded | |
1852 | constant expressions to be folded. | |
1853 | Accept BYTE as a synonym for INTEGER*1. | |
1854 | ||
1855 | Thu Jan 27 08:57:40 EST 1994 | |
1856 | Fix botch in changes of 19 Jan. 1994 that broke entry points with | |
1857 | multi-dimensional array arguments that did not appear in the subprogram | |
1858 | argument list and whose leading dimensions depend on arguments. | |
1859 | ||
1860 | Mon Feb 7 09:24:30 EST 1994 | |
1861 | Remove artifact in "fc" script that caused -O to be ignored: | |
1862 | 87c87 | |
1863 | < # lcc ignores -O... | |
1864 | --- | |
1865 | > CFLAGS="$CFLAGS $O" | |
1866 | ||
1867 | Sun Feb 20 17:04:58 EST 1994 | |
1868 | Fix bugs reading .P files for routines with arguments of type | |
1869 | INTEGER*1, INTEGER*8, LOGICAL*2. | |
1870 | Fix glitch in reporting inconsistent arguments for routines involving | |
1871 | character arguments: "arg n" had n too large by the number of | |
1872 | character arguments. | |
1873 | ||
1874 | Tue Feb 22 20:50:08 EST 1994 | |
1875 | Trivial changes to data.c format.c main.c niceprintf.c output.h and | |
1876 | sysdep.h (consistency improvements). | |
1877 | libI77: lread.c: check for NULL return from realloc. | |
1878 | ||
1879 | Fri Feb 25 23:56:08 EST 1994 | |
1880 | output.c, sysdep.h: arrange for -DUSE_DTOA to use dtoa.c and g_fmt.c | |
1881 | for correctly rounded decimal values on IEEE-arithmetic machines | |
1882 | (plus machines with VAX and IBM-mainframe arithmetic). These | |
1883 | routines are available from netlib's fp directory. | |
1884 | msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only); the | |
1885 | former uses -DUSE_DTOA to keep 12 from printing as 12.000000000000001. | |
1886 | vax.c: fix wrong arguments to badtag and frchain introduced | |
1887 | 28 Nov. 1993. | |
1888 | Source for f2c converted to ANSI/ISO format, with the K&R format | |
1889 | available by compilation with -DKR_headers . | |
1890 | Arrange for (double precision expression) relop (single precision | |
1891 | constant) to retain the single-precision nature of the constant. | |
1892 | Example: | |
1893 | double precision t | |
1894 | if (t .eq. 0.3) ... | |
1895 | ||
1896 | Mon Feb 28 11:40:24 EST 1994 | |
1897 | README updated to reflect a modification just made to netlib's | |
1898 | "dtoa.c from fp": | |
1899 | 96a97,105 | |
1900 | > Also add the rule | |
1901 | > | |
1902 | > dtoa.o: dtoa.c | |
1903 | > $(CC) -c $(CFLAGS) -DMALLOC=ckalloc -DIEEE... dtoa.c | |
1904 | > | |
1905 | > (without the initial tab) to the makefile, where IEEE... is one of | |
1906 | > IEEE_MC68k, IEEE_8087, VAX, or IBM, depending on your machine's | |
1907 | > arithmetic. See the comments near the start of dtoa.c. | |
1908 | > | |
1909 | ||
1910 | Sat Mar 5 09:41:52 EST 1994 | |
1911 | Complain about functions with the name of a previously declared | |
1912 | common block (which is illegal). | |
1913 | New option -d specifies the directory for output .c and .P files; | |
1914 | f2c.1 and f2c.1t updated. The former undocumented debug option -dnnn | |
1915 | is now -Dnnn. | |
1916 | ||
1917 | Thu Mar 10 10:21:44 EST 1994 | |
1918 | libf77: add #undef min and #undef max lines to s_paus.c s_stop.c | |
1919 | and system_.c; Version.c not changed. | |
1920 | libi77: add -DPad_UDread lines to uio.c and explanation to README: | |
1921 | Some buggy Fortran programs use unformatted direct I/O to write | |
1922 | an incomplete record and later read more from that record than | |
1923 | they have written. For records other than the last, the unwritten | |
1924 | portion of the record reads as binary zeros. The last record is | |
1925 | a special case: attempting to read more from it than was written | |
1926 | gives end-of-file -- which may help one find a bug. Some other | |
1927 | Fortran I/O libraries treat the last record no differently than | |
1928 | others and thus give no help in finding the bug of reading more | |
1929 | than was written. If you wish to have this behavior, compile | |
1930 | uio.c with -DPad_UDread . | |
1931 | Version.c not changed. | |
1932 | ||
1933 | Tue Mar 29 17:27:54 EST 1994 | |
1934 | Adjust make_param so dimensions involving min, max, and other | |
1935 | complicated constant expressions do not provoke error messages | |
1936 | about adjustable dimensions on non-arguments. | |
1937 | Fix botch introduced 19 Jan 1994: "adjustable dimension on non- | |
1938 | argument" messages could cause some things to be freed twice. | |
1939 | ||
1940 | Tue May 10 07:55:12 EDT 1994 | |
1941 | Trivial changes to exec.c, p1output.c, parse_args.c, proc.c, | |
1942 | and putpcc.c: change arguments from | |
1943 | type foo[] | |
1944 | to | |
1945 | type *foo | |
1946 | for consistency with defs.h. For most compilers, this makes no | |
1947 | difference. | |
1948 | ||
1949 | Thu Jun 2 12:18:18 EDT 1994 | |
1950 | Fix bug in handling FORMAT statements that have adjacent character | |
1951 | (or Hollerith) strings: an extraneous \002 appeared between the | |
1952 | strings. | |
1953 | libf77: under -DNO_ONEXIT, arrange for f_exit to be called just | |
1954 | once; previously, upon abnormal termination (including stop statements), | |
1955 | it was called twice. | |
1956 | ||
1957 | Mon Jun 6 15:52:57 EDT 1994 | |
1958 | libf77: Avoid references to SIGABRT and SIGIOT if neither is defined; | |
1959 | Version.c not changed. | |
1960 | libi77: Add cast to definition of errfl() in fio.h; this only matters | |
1961 | on systems with sizeof(int) < sizeof(long). Under -DNON_UNIX_STDIO, | |
1962 | use binary mode for direct formatted files (to avoid any confusion | |
1963 | connected with \n characters). | |
1964 | ||
1965 | Fri Jun 10 16:47:31 EDT 1994 | |
1966 | Fix bug under -A in handling unreferenced (and undeclared) | |
1967 | external arguments in subroutines with multiple entry points. Example: | |
1968 | subroutine m(fcn,futil) | |
1969 | external fcn,futil | |
1970 | call fcn | |
1971 | entry mintio(i1) ! (D_fp)0 rather than (U_fp)0 for futil | |
1972 | end | |
1973 | ||
1974 | Wed Jun 15 10:38:14 EDT 1994 | |
1975 | Allow char(constant expression) function in parameter declarations. | |
1976 | (This was probably broken in the changes of 29 March 1994.) | |
1977 | ||
1978 | Fri Jul 1 23:54:00 EDT 1994 | |
1979 | Minor adjustments to makefile (rule for f2c.1 commented out) and | |
1980 | sysdep.h (#undef KR_headers if __STDC__ is #defined, and base test | |
1981 | for ANSI_Libraries and ANSI_Prototypes on KR_headers rather than | |
1982 | __STDC__); version.c touched but not changed. | |
1983 | libi77: adjust fp.h so local.h is only needed under -DV10; | |
1984 | Version.c not changed. | |
1985 | ||
1986 | Tue Jul 5 03:05:46 EDT 1994 | |
1987 | Fix segmentation fault in | |
1988 | subroutine foo(a,b,k) | |
1989 | data i/1/ | |
1990 | double precision a(k,1) ! sequence error: must precede data | |
1991 | b = a(i,1) | |
1992 | end | |
1993 | libi77: Fix bug (introduced 6 June 1994?) in reopening files under | |
1994 | NON_UNIX_STDIO. | |
1995 | Fix some error messages caused by illegal Fortran. Examples: | |
1996 | * 1. | |
1997 | x(i) = 0 !Missing declaration for array x | |
1998 | call f(x) !Said Impossible storage class 8 in routine mkaddr | |
1999 | end !Now says invalid use of statement function x | |
2000 | * 2. | |
2001 | f = g !No declaration for g; by default it's a real variable | |
2002 | call g !Said invalid class code 2 for function g | |
2003 | end !Now says g cannot be called | |
2004 | * 3. | |
2005 | intrinsic foo !Invalid intrinsic name | |
2006 | a = foo(b) !Said intrcall: bad intrgroup 0 | |
2007 | end !Now just complains about line 1 | |
2008 | ||
2009 | Tue Jul 5 11:14:26 EDT 1994 | |
2010 | Fix glitch in handling erroneous statement function declarations. | |
2011 | Example: | |
2012 | a(j(i) - i) = a(j(i) - i) + 1 ! bad statement function | |
2013 | call foo(a(3)) ! Said Impossible type 0 in routine mktmpn | |
2014 | end ! Now warns that i and j are not used | |
2015 | ||
2016 | Wed Jul 6 17:31:25 EDT 1994 | |
2017 | Tweak test for statement functions that (illegally) call themselves; | |
2018 | f2c will now proceed to check for other errors, rather than bailing | |
2019 | out at the first recursive statement function reference. | |
2020 | Warn about but retain divisions by 0 (instead of calling them | |
2021 | "compiler errors" and quiting). On IEEE machines, this permits | |
2022 | double precision nan, ninf, pinf | |
2023 | nan = 0.d0/0.d0 | |
2024 | pinf = 1.d0/0.d0 | |
2025 | ninf = -1.d0/0.d0 | |
2026 | write(*,*) 'nan, pinf, ninf = ', nan, pinf, ninf | |
2027 | end | |
2028 | to print | |
2029 | nan, pinf, ninf = NaN Infinity -Infinity | |
2030 | libi77: wref.c: protect with #ifdef GOOD_SPRINTF_EXPONENT an | |
2031 | optimization that requires exponents to have 2 digits when 2 digits | |
2032 | suffice. lwrite.c wsfe.c (list and formatted external output): | |
2033 | omit ' ' carriage-control when compiled with -DOMIT_BLANK_CC . | |
2034 | Off-by-one bug fixed in character count for list output of character | |
2035 | strings. Omit '.' in list-directed printing of Nan, Infinity. | |
2036 | ||
2037 | Mon Jul 11 13:05:33 EDT 1994 | |
2038 | src/gram.c updated. | |
2039 | ||
2040 | Tue Jul 12 10:24:42 EDT 1994 | |
2041 | libi77: wrtfmt.c: under G11.4, write 0. as " .0000 " rather | |
2042 | than " .0000E+00". | |
2043 | ||
2044 | Thu Jul 14 17:55:46 EDT 1994 | |
2045 | Fix glitch in changes of 6 July 1994 that could cause erroneous | |
2046 | "division by zero" warnings (or worse). Example: | |
2047 | subroutine foo(a,b) | |
2048 | y = b | |
2049 | a = a / y ! erroneous warning of division by zero | |
2050 | end | |
2051 | ||
2052 | Mon Aug 1 16:45:17 EDT 1994 | |
2053 | libi77: lread.c rsne.c: for benefit of systems with a buggy stdio.h, | |
2054 | declare ungetc when neither KR_headers nor ungetc is #defined. | |
2055 | Version.c not changed. | |
2056 | ||
2057 | Wed Aug 3 01:53:00 EDT 1994 | |
2058 | libi77: lwrite.c (list output): do not insert a newline when | |
2059 | appending an oversize item to an empty line. | |
2060 | ||
2061 | Mon Aug 8 00:51:01 EDT 1994 | |
2062 | Fix bug (introduced 3 Feb. 1993) that, under -i2, kept LOGICAL*2 | |
2063 | variables from appearing in INQUIRE statements. Under -I2, allow | |
2064 | LOGICAL*4 variables to appear in INQUIRE. Fix intrinsic function | |
2065 | LEN so it returns a short value under -i2, a long value otherwise. | |
2066 | exec.c: fix obscure memory fault possible with bizarre (and highly | |
2067 | erroneous) DO-loop syntax. | |
2068 | ||
2069 | Fri Aug 12 10:45:57 EDT 1994 | |
2070 | libi77: fix glitch that kept ERR= (in list- or format-directed input) | |
2071 | from working after a NAMELIST READ. | |
2072 | ||
2073 | Thu Aug 25 13:58:26 EDT 1994 | |
2074 | Suppress -s when -C is specified. | |
2075 | Give full pathname (netlib@research.att.com) for netlib in readme and | |
2076 | src/README. | |
2077 | ||
2078 | Wed Sep 7 22:13:20 EDT 1994 | |
2079 | libi77: typesize.c: adjust to allow types LOGICAL*1, LOGICAL*2, | |
2080 | INTEGER*1, and (under -DAllow_TYQUAD) INTEGER*8 in NAMELISTs. | |
2081 | ||
2082 | Fri Sep 16 17:50:18 EDT 1994 | |
2083 | Change name adjustment for reserved words: instead of just appending | |
2084 | "_" (a single underscore), append "_a_" to local variable names to avoid | |
2085 | trouble when a common block is named a reserved word and the same | |
2086 | reserved word is also a local variable name. Example: | |
2087 | common /const/ a,b,c | |
2088 | real const(3) | |
2089 | equivalence (const(1),a) | |
2090 | a = 1.234 | |
2091 | end | |
2092 | Arrange for ichar() to treat characters as unsigned. | |
2093 | libf77: s_cmp.c: treat characters as unsigned in comparisons. | |
2094 | These changes for unsignedness only matter for strings that contain | |
2095 | non-ASCII characters. Now ichar() should always be >= 0. | |
2096 | ||
2097 | Sat Sep 17 11:19:32 EDT 1994 | |
2098 | fc: set rc=$? before exit (to get exit code right in trap code). | |
2099 | ||
2100 | Mon Sep 19 17:49:43 EDT 1994 | |
2101 | libf77: s_paus.c: flush stderr after PAUSE; add #ifdef MSDOS stuff. | |
2102 | libi77: README: point out general need for -DMSDOS under MS-DOS. | |
2103 | ||
2104 | Tue Sep 20 11:42:30 EDT 1994 | |
2105 | Fix bug in comparing identically named common blocks, in which | |
2106 | all components have the same names and types, but at least one is | |
2107 | dimensioned (1) and the other is not dimensioned. Example: | |
2108 | subroutine foo | |
2109 | common /ab/ a | |
2110 | a=1. !!! translated correctly to ab_1.a = (float)1.; | |
2111 | end | |
2112 | subroutine goo | |
2113 | common /ab/ a(1) | |
2114 | a(1)=2. !!! translated erroneously to ab_1.a[0] = (float)2. | |
2115 | end | |
2116 | ||
2117 | Tue Sep 27 23:47:34 EDT 1994 | |
2118 | Fix bug introduced 16 Sept. 1994: don't add _a_ to C keywords | |
2119 | used as external names. In fact, return to earlier behavior of | |
2120 | appending __ to C keywords unless they are used as external names, | |
2121 | in which case they get just one underscore appended. | |
2122 | Adjust constant handling so integer and logical PARAMETERs retain | |
2123 | type information, particularly under -I2. Example: | |
2124 | SUBROUTINE FOO | |
2125 | INTEGER I | |
2126 | INTEGER*1 I1 | |
2127 | INTEGER*2 I2 | |
2128 | INTEGER*4 I4 | |
2129 | LOGICAL L | |
2130 | LOGICAL*1 L1 | |
2131 | LOGICAL*2 L2 | |
2132 | LOGICAL*4 L4 | |
2133 | PARAMETER (L=.FALSE., L1=.FALSE., L2=.FALSE., L4=.FALSE.) | |
2134 | PARAMETER (I=0,I1=0,I2=0,I4=0) | |
2135 | CALL DUMMY(I, I1, I2, I4, L, L1, L2, L4) | |
2136 | END | |
2137 | f2c.1t: Change f\^2c to f2c (omit half-narrow space) in line following | |
2138 | ".SH NAME" for benefit of systems that cannot cope with troff commands | |
2139 | in this context. | |
2140 | ||
2141 | Wed Sep 28 12:45:19 EDT 1994 | |
2142 | libf77: s_cmp.c fix glitch in -DKR_headers version introduced | |
2143 | 12 days ago. | |
2144 | ||
2145 | Thu Oct 6 09:46:53 EDT 1994 | |
2146 | libi77: util.c: omit f__mvgbt (which is never used). | |
2147 | f2c.h: change "long" to "long int" to facilitate the adjustments | |
2148 | by means of sed described above. Comment out unused typedef of Long. | |
2149 | ||
2150 | Fri Oct 21 18:02:24 EDT 1994 | |
2151 | libf77: add s_catow.c and adjust README to point out that changing | |
2152 | "s_cat.o" to "s_catow.o" in the makefile will permit the target of a | |
2153 | concatenation to appear on its right-hand side (contrary to the | |
2154 | Fortran 77 Standard and at the cost of some run-time efficiency). | |
2155 | ||
2156 | Wed Nov 2 00:03:58 EST 1994 | |
2157 | Adjust -g output to contain only one #line line per statement, | |
2158 | inserting \ before the \n ending lines broken because of their | |
2159 | length [this insertion was recanted 10 Dec. 1994]. This change | |
2160 | accommodates an idiocy in the ANSI/ISO C standard, which leaves | |
2161 | undefined the behavior of #line lines that occur within the arguments | |
2162 | to a macro call. | |
2163 | ||
2164 | Wed Nov 2 14:44:27 EST 1994 | |
2165 | libi77: under compilation with -DALWAYS_FLUSH, flush buffers at | |
2166 | the end of each write statement, and test (via the return from | |
2167 | fflush) for write failures, which can be caught with an ERR= | |
2168 | specifier in the write statement. This extra flushing slows | |
2169 | execution, but can abort execution or alter the flow of control | |
2170 | when a disk fills up. | |
2171 | f2c/src/io.c: Add ERR= test to e_wsle invocation (end of | |
2172 | list-directed external output) to catch write failures when libI77 | |
2173 | is compiled with -DALWAYS_FLUSH. | |
2174 | ||
2175 | Thu Nov 3 10:59:13 EST 1994 | |
2176 | Fix bug in handling dimensions involving certain intrinsic | |
2177 | functions of constant expressions: the expressions, rather than | |
2178 | pointers to them, were passed. Example: | |
2179 | subroutine subtest(n,x) | |
2180 | real x(2**n,n) ! pow_ii(2,n) was called; now it's pow_ii(&c__2,n) | |
2181 | x(2,2)=3. | |
2182 | end | |
2183 | ||
2184 | Tue Nov 8 23:56:30 EST 1994 | |
2185 | malloc.c: remove assumption that only malloc calls sbrk. This | |
2186 | appears to make malloc.c useful on RS6000 systems. | |
2187 | ||
2188 | Sun Nov 13 13:09:38 EST 1994 | |
2189 | Turn off constant folding of integers used in floating-point | |
2190 | expressions, so the assignment in | |
2191 | subroutine foo(x) | |
2192 | double precision x | |
2193 | x = x*1000000*500000 | |
2194 | end | |
2195 | is rendered as | |
2196 | *x = *x * 1000000 * 500000; | |
2197 | rather than as | |
2198 | *x *= 1783793664; | |
2199 | ||
2200 | Sat Dec 10 16:31:40 EST 1994 | |
2201 | Supply a better error message (than "Impossible type 14") for | |
2202 | subroutine foo | |
2203 | foo = 3 | |
2204 | end | |
2205 | Under -g, convey name of included files to #line lines. | |
2206 | Recant insertion of \ introduced (under -g) 2 Nov. 1994. | |
2207 | ||
2208 | Thu Dec 15 14:33:55 EST 1994 | |
2209 | New command-line option -Idir specifies directories in which to | |
2210 | look for non-absolute include files (after looking in the directory | |
2211 | of the current input file). There can be several -Idir options, each | |
2212 | specifying one directory. All -Idir options are considered, from | |
2213 | left to right, until a suitably named file is found. The -I2 and -I4 | |
2214 | command-line options have precedence, so directories named 2 or 4 | |
2215 | must be spelled by some circumlocation, such as -I./2 . | |
2216 | f2c.ps updated to mention the new -Idir option, correct a typo, | |
2217 | and bring the man page at the end up to date. | |
2218 | lex.c: fix bug in reading line numbers in #line lines. | |
2219 | fc updated to pass -Idir options to f2c. | |
2220 | ||
2221 | Thu Dec 29 09:48:03 EST 1994 | |
2222 | Fix bug (e.g., addressing fault) in diagnosing inconsistency in | |
2223 | the type of function eta in the following example: | |
2224 | function foo(c1,c2) | |
2225 | double complex foo,c1,c2 | |
2226 | double precision eta | |
2227 | foo = eta(c1,c2) | |
2228 | end | |
2229 | function eta(c1,c2) | |
2230 | double complex eta,c1,c2 | |
2231 | eta = c1*c2 | |
2232 | end | |
2233 | ||
2234 | Mon Jan 2 13:27:26 EST 1995 | |
2235 | Retain casts for SNGL (or FLOAT) that were erroneously optimized | |
2236 | away. Example: | |
2237 | subroutine foo(a,b) | |
2238 | double precision a,b | |
2239 | a = float(b) ! now rendered as *a = (real) (*b); | |
2240 | end | |
2241 | Use float (rather than double) temporaries in certain expressions | |
2242 | of type complex. Example: the temporary for sngl(b) in | |
2243 | complex a | |
2244 | double precision b | |
2245 | a = sngl(b) - (3.,4.) | |
2246 | is now of type float. | |
2247 | ||
2248 | Fri Jan 6 00:00:27 EST 1995 | |
2249 | Adjust intrinsic function cmplx to act as dcmplx (returning | |
2250 | double complex rather than complex) if either of its args is of | |
2251 | type double precision. The double temporaries used prior to 2 Jan. | |
2252 | 1995 previously gave it this same behavior. | |
2253 | ||
2254 | Thu Jan 12 12:31:35 EST 1995 | |
2255 | Adjust -krd to use double temporaries in some calculations of | |
2256 | type complex. | |
2257 | libf77: pow_[dhiqrz][hiq].c: adjust x**i to work on machines | |
2258 | that sign-extend right shifts when i is the most negative integer. | |
2259 | ||
2260 | Wed Jan 25 00:14:42 EST 1995 | |
2261 | Fix memory fault in handling overlapping initializations in | |
2262 | block data | |
2263 | common /zot/ d | |
2264 | double precision d(3) | |
2265 | character*6 v(4) | |
2266 | real r(2) | |
2267 | equivalence (d(3),r(1)), (d(1),v(1)) | |
2268 | data v/'abcdef', 'ghijkl', 'mnopqr', 'stuvwx'/ | |
2269 | data r/4.,5./ | |
2270 | end | |
2271 | names.c: add "far", "huge", "near" to c_keywords (causing them | |
2272 | to have __ appended when used as local variables). | |
2273 | libf77: add s_copyow.c, an alternative to s_copy.c for handling | |
2274 | (illegal) character assignments where the right- and left-hand | |
2275 | sides overlap, as in a(2:4) = a(1\1a:3). | |
2276 | ||
2277 | Thu Jan 26 14:21:19 EST 1995 | |
2278 | libf77: roll s_catow.c and s_copyow.c into s_cat.c and s_copy.c, | |
2279 | respectively, allowing the left-hand side of a character assignment | |
2280 | to appear on its right-hand side unless s_cat.c and s_copy.c are | |
2281 | compiled with -DNO_OVERWRITE (which is a bit more efficient). | |
2282 | Fortran 77 forbids the left-hand side from participating in the | |
2283 | right-hand side (of a character assignment), but Fortran 90 allows it. | |
2284 | libi77: wref.c: fix glitch in printing the exponent of 0 when | |
2285 | GOOD_SPRINTF_EXPONENT is not #defined. | |
2286 | ||
2287 | Fri Jan 27 12:25:41 EST 1995 | |
2288 | Under -C++ -ec (or -C++ -e1c), surround struct declarations with | |
2289 | #ifdef __cplusplus | |
2290 | extern "C" { | |
2291 | #endif | |
2292 | and | |
2293 | #ifdef __cplusplus | |
2294 | } | |
2295 | #endif | |
2296 | (This isn't needed with cfront, but apparently is necessary with | |
2297 | some other C++ compilers.) | |
2298 | libf77: minor tweak to s_copy.c: copy forward whenever possible | |
2299 | (for better cache behavior). | |
2300 | ||
2301 | Wed Feb 1 10:26:12 EST 1995 | |
2302 | Complain about parameter statements that assign values to dummy | |
2303 | arguments, as in | |
2304 | subroutine foo(x) | |
2305 | parameter(x = 3.4) | |
2306 | end | |
2307 | ||
2308 | Sat Feb 4 20:22:02 EST 1995 | |
2309 | fc: omit "lib=/lib/num/lib.lo". | |
2310 | ||
2311 | Wed Feb 8 08:41:14 EST 1995 | |
2312 | Minor changes to exec.c, putpcc.c to avoid "bad tag" or "error | |
2313 | in frexpr" with certain invalid Fortran. | |
2314 | ||
2315 | Sat Feb 11 08:57:39 EST 1995 | |
2316 | Complain about integer overflows, both in simplifying integer | |
2317 | expressions, and in converting integers from decimal to binary. | |
2318 | Fix a memory fault in putcx1() associated with invalid input. | |
2319 | ||
2320 | Thu Feb 23 11:20:59 EST 1995 | |
2321 | Omit MAXTOKENLEN; realloc token if necessary (to handle very long | |
2322 | strings). | |
2323 | ||
2324 | Fri Feb 24 11:02:00 EST 1995 | |
2325 | libi77: iio.c: z_getc: insert (unsigned char *) to allow internal | |
2326 | reading of characters with high-bit set (on machines that sign-extend | |
2327 | characters). | |
2328 | ||
2329 | Tue Mar 14 18:22:42 EST 1995 | |
2330 | Fix glitch (in io.c) in handling 0-length strings in format | |
2331 | statements, as in | |
2332 | write(*,10) | |
2333 | 10 format(' ab','','cd') | |
2334 | libi77: lread.c and rsfe.c: adjust s_rsle and s_rsfe to check for | |
2335 | end-of-file (to prevent infinite loops with empty read statements). | |
2336 | ||
2337 | Wed Mar 22 10:01:46 EST 1995 | |
2338 | f2c.ps: adjust discussion of -P on p. 7 to reflect a change made | |
2339 | 3 Feb. 1993: -P no longer implies -A. | |
2340 | ||
2341 | Fri Apr 21 18:35:00 EDT 1995 | |
2342 | fc script: remove absolute paths (since PATH specifies only standard | |
2343 | places). On most systems, it's still necessary to adjust the PATH | |
2344 | assignment at the start of fc to fit the local conventions. | |
2345 | ||
2346 | Fri May 26 10:03:17 EDT 1995 | |
2347 | fc script: add recognition of -P and .P files. | |
2348 | libi77: iio.c: z_wnew: fix bug in handling T format items in internal | |
2349 | writes whose last item is written to an earlier position than some | |
2350 | previous item. | |
2351 | ||
2352 | Wed May 31 11:39:48 EDT 1995 | |
2353 | libf77: added subroutine exit(rc) (with integer return code rc), | |
2354 | which works like a stop statement but supplies rc as the program's | |
2355 | return code. | |
2356 | ||
2357 | Fri Jun 2 11:56:50 EDT 1995 | |
2358 | Fix memory fault in | |
2359 | parameter (x=2.) | |
2360 | data x /2./ | |
2361 | end | |
2362 | This now elicits two error messages; the second ("too many | |
2363 | initializers"), though not desirable, seems hard to eliminate | |
2364 | without considerable hassle. | |
2365 | ||
2366 | Mon Jul 17 23:24:20 EDT 1995 | |
2367 | Fix botch in simplifying constants in certain complex | |
2368 | expressions. Example: | |
2369 | subroutine foo(s,z) | |
2370 | double complex z | |
2371 | double precision s, M, P | |
2372 | parameter ( M = 100.d0, P = 2.d0 ) | |
2373 | z = M * M / s * dcmplx (1.d0, P/M) | |
2374 | *** The imaginary part of z was miscomputed *** | |
2375 | end | |
2376 | Under -ext, complain about nonintegral dimensions. | |
2377 | ||
2378 | Fri Jul 21 11:18:36 EDT 1995 | |
2379 | Fix glitch on line 159 of init.c: change | |
2380 | "(shortlogical *)0)", | |
2381 | to | |
2382 | "(shortlogical *)0", | |
2383 | This affects multiple entry points when some but not all have | |
2384 | arguments of type logical*2. | |
2385 | libi77: adjust lwrite.c, wref.c, wrtfmt.c so compiling with | |
2386 | -DWANT_LEAD_0 causes formatted writes of floating-point numbers of | |
2387 | magnitude < 1 to have an explicit 0 before the decimal point (if the | |
2388 | field-width permits it). Note that the Fortran 77 Standard leaves it | |
2389 | up to the implementation whether to supply these superfluous zeros. | |
2390 | ||
2391 | Tue Aug 1 09:25:56 EDT 1995 | |
2392 | Permit real (or double precision) parameters in dimension expressions. | |
2393 | ||
2394 | Mon Aug 7 08:04:00 EDT 1995 | |
b93be35b | 2395 | Append "_eqv" rather than just "_" to names that that appear in |
81fea2b1 JL |
2396 | EQUIVALENCE statements as well as structs in f2c.h (to avoid a |
2397 | conflict when these names also name common blocks). | |
2398 | ||
2399 | Tue Aug 8 12:49:02 EDT 1995 | |
2400 | Modify yesterday's change: merge st_fields with c_keywords, to | |
2401 | cope with equivalences introduced to permit initializing numeric | |
2402 | variables with character data. DATA statements causing these | |
2403 | equivalences can appear after executable statements, so the only | |
2404 | safe course is to rename all local variable with names in the | |
2405 | former st_fields list. This has the unfortunate side effect that | |
2406 | the common local variable "i" will henceforth be renamed "i__". | |
2407 | ||
2408 | Wed Aug 30 00:19:32 EDT 1995 | |
2409 | libf77: add F77_aloc, now used in s_cat and system_ (to allocate | |
2410 | memory and check for failure in so doing). | |
2411 | libi77: improve MSDOS logic in backspace.c. | |
2412 | ||
2413 | Wed Sep 6 09:06:19 EDT 1995 | |
2414 | libf77: Fix return type of system_ (integer) under -DKR_headers. | |
2415 | libi77: Move some f_init calls around for people who do not use | |
2416 | libF77's main(); now open and namelist read statements that are the | |
2417 | first I/O statements executed should work right in that context. | |
2418 | Adjust namelist input to treat a subscripted name whose subscripts do | |
2419 | not involve colons similarly to the name without a subscript: accept | |
2420 | several values, stored in successive elements starting at the | |
2421 | indicated subscript. Adjust namelist output to quote character | |
2422 | strings (avoiding confusion with arrays of character strings). | |
2423 | ||
2424 | Thu Sep 7 00:36:04 EDT 1995 | |
2425 | Fix glitch in integer*8 exponentiation function: it's pow_qq, not | |
2426 | pow_qi. | |
2427 | libi77: fix some bugs with -DAllow_TYQUAD (for integer*8); when | |
2428 | looking for the &name that starts NAMELIST input, treat lines whose | |
2429 | first nonblank character is something other than &, $, or ? as | |
2430 | comment lines (i.e., ignore them), unless rsne.c is compiled with | |
2431 | -DNo_Namelist_Comments. | |
2432 | ||
2433 | Thu Sep 7 09:05:40 EDT 1995 | |
2434 | libi77: rdfmt.c: one more tweak for -DAllow_TYQUAD. | |
2435 | ||
2436 | Tue Sep 19 00:03:02 EDT 1995 | |
2437 | Adjust handling of floating-point subscript bounds (a questionable | |
2438 | f2c extension) so subscripts in the generated C are of integral type. | |
2439 | Move #define of roundup to proc.c (where its use is commented out); | |
2440 | version.c left at 19950918. | |
2441 | ||
2442 | Wed Sep 20 17:24:19 EDT 1995 | |
2443 | Fix bug in handling ichar() under -h. | |
2444 | ||
2445 | Thu Oct 5 07:52:56 EDT 1995 | |
2446 | libi77: wrtfmt.c: fix bug with t editing (f__cursor was not always | |
2447 | zeroed in mv_cur). | |
2448 | ||
2449 | Tue Oct 10 10:47:54 EDT 1995 | |
2450 | Under -ext, warn about X**-Y and X**+Y. Following the original f77, | |
2451 | f2c treats these as X**(-Y) and X**(+Y), respectively. (They are not | |
2452 | allowed by the official Fortran 77 Standard.) Some Fortran compilers | |
2453 | give a bizarre interpretation to larger contexts, making multiplication | |
2454 | noncommutative: they treat X**-Y*Z as X**(-Y*Z) rather than X**(-Y)*Z, | |
2455 | which, following the rules of Fortran 77, is the same as (X**(-Y))*Z. | |
2456 | ||
2457 | Wed Oct 11 13:27:05 EDT 1995 | |
2458 | libi77: move defs of f__hiwater, f__svic, f__icptr from wrtfmt.c | |
2459 | to err.c. This should work around a problem with buggy loaders and | |
2460 | sometimes leads to smaller executable programs. | |
2461 | ||
2462 | Sat Oct 21 23:54:22 EDT 1995 | |
2463 | Under -h, fix bug in the treatment of ichar('0') in arithmetic | |
2464 | expressions. | |
2465 | Demote to -dneg (a new command-line option not mentioned in the | |
2466 | man page) imitation of the original f77's treatment of unary minus | |
2467 | applied to a REAL operand (yielding a DOUBLE PRECISION result). | |
2468 | Previously this imitation (which was present for debugging) occurred | |
2469 | under (the default) -!R. It is still suppressed by -R. | |
2470 | ||
2471 | Tue Nov 7 23:52:57 EST 1995 | |
2472 | Adjust assigned GOTOs to honor SAVE declarations. | |
2473 | Add comments about ranlib to lib[FI]77/README and makefile. | |
2474 | ||
2475 | Tue Dec 19 22:54:06 EST 1995 | |
2476 | libf77: s_cat.c: fix bug when 2nd or later arg overlaps lhs. | |
2477 | ||
2478 | Tue Jan 2 17:54:00 EST 1996 | |
2479 | libi77: rdfmt.c: move #include "ctype.h" up before "stdlib.h"; no | |
2480 | change to Version.c. | |
2481 | ||
2482 | Sun Feb 25 22:20:20 EST 1996 | |
2483 | Adjust expr.c to permit raising the integer constants 1 and -1 to | |
2484 | negative constant integral powers. | |
2485 | Avoid faulting when -T and -d are not followed by a directory name | |
2486 | (immediately, without intervening spaces). | |
2487 | ||
2488 | Wed Feb 28 12:49:01 EST 1996 | |
2489 | Fix a glitch in handling complex parameters assigned a "wrong" type. | |
2490 | Example: | |
2491 | complex d, z | |
2492 | parameter(z = (0d0,0d0)) | |
2493 | data d/z/ ! elicited "non-constant initializer" | |
2494 | call foo(d) | |
2495 | end | |
2496 | ||
2497 | Thu Feb 29 00:53:12 EST 1996 | |
2498 | Fix bug in handling character parameters assigned a char() value. | |
2499 | Example: | |
2500 | character*2 b,c | |
2501 | character*1 esc | |
2502 | parameter(esc = char(27)) | |
2503 | integer i | |
2504 | data (b(i:i),i=1,2)/esc,'a'/ | |
2505 | data (c(i:i),i=1,2)/esc,'b'/ ! memory fault | |
2506 | call foo(b,c) | |
2507 | end | |
2508 | ||
2509 | Fri Mar 1 23:44:51 EST 1996 | |
2510 | Fix glitch in evaluating .EQ. and .NE. when both operands are | |
2511 | logical constants (.TRUE. or .FALSE.). | |
2512 | ||
2513 | Fri Mar 15 17:29:54 EST 1996 | |
2514 | libi77: lread.c, rsfe.c: honor END= in READ stmts with empty iolist. | |
2515 | ||
2516 | Tue Mar 19 23:08:32 EST 1996 | |
2517 | lex.c: arrange for a "statement" consisting of a single short bogus | |
2518 | keyword to elicit an error message showing the whole keyword. The | |
2519 | error message formerly omitted the last letter of the bad keyword. | |
2520 | libf77: s_cat.c: supply missing break after overlap detection. | |
2521 | ||
2522 | Mon May 13 23:35:26 EDT 1996 | |
2523 | Recognize Fortran 90's /= as a synonym for .NE.. (<> remains a | |
2524 | synonym for .NE..) | |
2525 | Emit an empty int function of no arguments to supply an external | |
2526 | name to named block data subprograms (so they can be called somewhere | |
2527 | to force them to be loaded from a library). | |
2528 | Fix bug (memory fault) in handling the following illegal Fortran: | |
2529 | parameter(i=1) | |
2530 | equivalence(i,j) | |
2531 | end | |
2532 | Treat cdabs, cdcos, cdexp, cdlog, cdsin, and cdsqrt as synonyms for | |
2533 | the double complex intrinsics zabs, zcos, zexp, zlog, zsin, and zsqrt, | |
2534 | respectively, unless -cd is specified. | |
2535 | Recognize the Fortran 90 bit-manipulation intrinsics btest, iand, | |
2536 | ibclr, ibits, ibset, ieor, ior, ishft, and ishftc, unless -i90 is | |
2537 | specified. Note that iand, ieor, and ior are thus now synonyms for | |
2538 | "and", "xor", and "or", respectively. | |
2539 | Add three macros (bit_test, bit_clear, bit_set) to f2c.h for use | |
2540 | with btest, ibclr, and ibset, respectively. Add new functions | |
2541 | [lq]bit_bits, [lq]bit_shift, and [lq]_bit_cshift to libF77 for | |
2542 | use with ibits, ishft, and ishftc, respectively. | |
2543 | Add integer function ftell(unit) (returning -1 on error) and | |
2544 | subroutine fseek(unit, offset, whence, *) to libI77 (with branch to | |
2545 | label * on error). | |
2546 | ||
2547 | Tue May 14 23:21:12 EDT 1996 | |
2548 | Fix glitch (possible memory fault, or worse) in handling multiple | |
2549 | entry points with names over 28 characters long. | |
2550 | ||
2551 | Mon Jun 10 01:20:16 EDT 1996 | |
2552 | Update netlib E-mail and ftp addresses in f2c/readme and | |
2553 | f2c/src/readme (which are different files) -- to reflect the upcoming | |
2554 | breakup of AT&T. | |
2555 | libf77: trivial tweaks to F77_aloc.c and system_.c; Version.c not | |
2556 | changed. | |
2557 | libi77: Adjust rsli.c and lread.c so internal list input with too | |
2558 | few items in the input string will honor end= . | |
2559 | ||
2560 | Mon Jun 10 22:59:57 EDT 1996 | |
2561 | Add Bits_per_Byte to sysdep.h and adjust definition of Table_size | |
2562 | to depend on Bits_per_Byte (forcing Table_size to be a power of 2); in | |
2563 | lex.c, change "comstart[c & 0xfff]" to "comstart[c & (Table_size-1)]" | |
2564 | to avoid an out-of-range subscript on end-of-file. | |
2565 | ||
2566 | Wed Jun 12 00:24:28 EDT 1996 | |
2567 | Fix bug in output.c (dereferencing a freed pointer) revealed in | |
2568 | print * !np in out_call in output.c clobbered by free | |
2569 | end !during out_expr. | |
2570 | ||
2571 | Wed Jun 19 08:12:47 EDT 1996 | |
2572 | f2c.h: add types uinteger, ulongint (for libF77); add qbit_clear | |
2573 | and qbit_set macros (in a commented-out section) for integer*8. | |
2574 | For integer*8, use qbit_clear and qbit_set for ibclr and ibset. | |
2575 | libf77: add casts to unsigned in [lq]bitshft.c. | |
2576 | ||
2577 | Thu Jun 20 13:30:43 EDT 1996 | |
2578 | Complain at character*(*) in common (rather than faulting). | |
2579 | Fix bug in recognizing hex constants that start with "16#" (e.g., | |
2580 | 16#1234abcd, which is a synonym for z'1234abcd'). | |
2581 | Fix bugs in constant folding of expressions involving btest, ibclr, | |
2582 | and ibset. | |
2583 | Fix bug in constant folding of rshift(16#80000000, -31) (on a 32-bit | |
2584 | machine; more generally, the bug was in constant folding of | |
2585 | rshift(ibset(0,NBITS-1), 1-NBITS) when f2c runs on a machine with | |
2586 | long ints having NBITS bits. | |
2587 | ||
2588 | Mon Jun 24 07:58:53 EDT 1996 | |
2589 | Adjust struct Literal and newlabel() function to accommodate huge | |
2590 | source files (with more than 32767 newlabel() invocations). | |
2591 | Omit .c file when the .f file has a missing final end statement. | |
2592 | ||
2593 | Wed Jun 26 14:00:02 EDT 1996 | |
2594 | libi77: Add discussion of MXUNIT (highest allowed Fortran unit number) | |
2595 | to libI77/README. | |
2596 | ||
2597 | Fri Jun 28 14:16:11 EDT 1996 | |
2598 | Fix glitch with -onetrip: the temporary variable used for nonconstant | |
2599 | initial loop variable values was recycled too soon. Example: | |
2600 | do i = j+1, k | |
2601 | call foo(i+1) ! temp for j+1 was reused here | |
2602 | enddo | |
2603 | end | |
2604 | ||
2605 | Tue Jul 2 16:11:27 EDT 1996 | |
2606 | formatdata.c: add a 0 to the end of the basetype array (for TYBLANK) | |
2607 | (an omission that was harmless on most machines). | |
2608 | expr.c: fix a dereference of NULL that was only possible with buggy | |
2609 | input, such as | |
2610 | subroutine $sub(s) ! the '$' is erroneous | |
2611 | character s*(*) | |
2612 | s(1:) = ' ' | |
2613 | end | |
2614 | ||
2615 | Sat Jul 6 00:44:56 EDT 1996 | |
2616 | Fix glitch in the intrinsic "real" function when applied to a | |
2617 | complex (or double complex) variable and passed as an argument to | |
2618 | some intrinsic functions. Example: | |
2619 | complex a | |
2620 | b = sqrt(a) | |
2621 | end | |
2622 | Fix glitch (only visible if you do not use f2c's malloc and the | |
2623 | malloc you do use is defective in the sense that malloc(0) returns 0) | |
2624 | in handling include files that end with another include (perhaps | |
2625 | followed by comments). | |
2626 | Fix glitch with character*(*) arguments named "h" and "i" when | |
2627 | the body of the subroutine invokes the intrinsic LEN function. | |
2628 | Arrange that after a previous "f2c -P foo.f" has produced foo.P, | |
2629 | running "f2c foo.P foo.f" will produce valid C when foo.f contains | |
2630 | call sub('1234') | |
2631 | end | |
2632 | subroutine sub(msg) | |
2633 | end | |
2634 | Specifically, the length argument in "call sub" is now suppressed. | |
2635 | With or without foo.P, it is also now suppressed when the order of | |
2636 | subprograms in file foo.f is reversed: | |
2637 | subroutine sub(msg) | |
2638 | end | |
2639 | call sub('1234') | |
2640 | end | |
2641 | Adjust copyright notices to reflect AT&T breakup. | |
2642 | ||
2643 | Wed Jul 10 09:25:49 EDT 1996 | |
2644 | Fix bug (possible memory fault) in handling erroneously placed | |
2645 | and inconsistent declarations. Example that faulted: | |
2646 | character*1 w(8) | |
2647 | call foo(w) | |
2648 | end | |
2649 | subroutine foo(m) | |
2650 | data h /0.5/ | |
2651 | integer m(2) ! should be before data | |
2652 | end | |
2653 | Fix bug (possible fault) in handling illegal "if" constructions. | |
2654 | Example (that faulted): | |
2655 | subroutine foo(i,j) | |
2656 | if (i) then ! bug: i is integer, not logical | |
2657 | else if (j) then ! bug: j is integer, not logical | |
2658 | endif | |
2659 | end | |
2660 | Fix glitch with character*(*) argument named "ret_len" to a | |
2661 | character*(*) function. | |
2662 | ||
2663 | Wed Jul 10 23:04:16 EDT 1996 | |
2664 | Fix more glitches in the intrinsic "real" function when applied to a | |
2665 | complex (or double complex) variable and passed as an argument to | |
2666 | some intrinsic functions. Example: | |
2667 | complex a, b | |
2668 | r = sqrt(real(conjg(a))) + sqrt(real(a*b)) | |
2669 | end | |
2670 | ||
2671 | Thu Jul 11 17:27:16 EDT 1996 | |
2672 | Fix a memory fault associated with complicated, illegal input. | |
2673 | Example: | |
2674 | subroutine goo | |
2675 | character a | |
2676 | call foo(a) ! inconsistent with subsequent def and call | |
2677 | end | |
2678 | subroutine foo(a) | |
2679 | end | |
2680 | call foo(a) | |
2681 | end | |
2682 | ||
2683 | Wed Jul 17 19:18:28 EDT 1996 | |
2684 | Fix yet another case of intrinsic "real" applied to a complex | |
2685 | argument. Example: | |
2686 | complex a(3) | |
2687 | x = sqrt(real(a(2))) ! gave error message about bad tag | |
2688 | end | |
2689 | ||
2690 | Mon Aug 26 11:28:57 EDT 1996 | |
2691 | Tweak sysdep.c for non-Unix systems in which process ID's can be | |
2692 | over 5 digits long. | |
2693 | ||
2694 | Tue Aug 27 08:31:32 EDT 1996 | |
2695 | Adjust the ishft intrinsic to use unsigned right shifts. (Previously, | |
2696 | a negative constant second operand resulted in a possibly signed shift.) | |
2697 | ||
2698 | Thu Sep 12 14:04:07 EDT 1996 | |
2699 | equiv.c: fix glitch with -DKR_headers. | |
2700 | libi77: fmtlib.c: fix bug in printing the most negative integer. | |
2701 | ||
2702 | Fri Sep 13 08:54:40 EDT 1996 | |
2703 | Diagnose some illegal appearances of substring notation. | |
2704 | ||
2705 | Tue Sep 17 17:48:09 EDT 1996 | |
2706 | Fix fault in handling some complex parameters. Example: | |
2707 | subroutine foo(a) | |
2708 | double complex a, b | |
2709 | parameter(b = (0,1)) | |
2710 | a = b ! f2c faulted here | |
2711 | end | |
2712 | ||
2713 | Thu Sep 26 07:47:10 EDT 1996 | |
2714 | libi77: fmt.h: for formatted writes of negative integer*1 values, | |
2715 | make ic signed on ANSI systems. If formatted writes of integer*1 | |
2716 | values trouble you when using a K&R C compiler, switch to an ANSI | |
2717 | compiler or use a compiler flag that makes characters signed. | |
2718 | ||
2719 | Tue Oct 1 14:41:36 EDT 1996 | |
2720 | Give a better error message when dummy arguments appear in data | |
2721 | statements. | |
2722 | ||
2723 | Thu Oct 17 13:37:22 EDT 1996 | |
2724 | Fix bug in typechecking arguments to character and complex (or | |
2725 | double complex) functions; the bug could cause length arguments | |
2726 | for character arguments to be omitted on invocations appearing | |
2727 | textually after the first invocation. For example, in | |
2728 | subroutine foo | |
2729 | character c | |
2730 | complex zot | |
2731 | call goo(zot(c), zot(c)) | |
2732 | end | |
2733 | the length was omitted from the second invocation of zot, and | |
2734 | there was an erroneous error message about inconsistent calling | |
2735 | sequences. | |
2736 | ||
2737 | Wed Dec 4 13:59:14 EST 1996 | |
2738 | Fix bug revealed by | |
2739 | subroutine test(cdum,rdum) | |
2740 | complex cdum | |
2741 | rdum=cos(real(cdum)) ! "Unexpected tag 3 in opconv_fudge" | |
2742 | end | |
2743 | Fix glitch in parsing "DO 10 D0 = 1, 10". | |
2744 | Fix glitch in parsing | |
2745 | real*8 x | |
2746 | real*8 x ! erroneous "incompatible type" message | |
2747 | call foo(x) | |
2748 | end | |
2749 | ||
2750 | Mon Dec 9 23:15:02 EST 1996 | |
2751 | Fix glitch in parameter adjustments for arrays whose lower | |
2752 | bound depends on a scalar argument. Example: | |
2753 | subroutine bug(p,z,m,n) | |
2754 | integer z(*),m,n | |
2755 | double precision p(z(m):z(m) + n) ! p_offset botched | |
2756 | call foo(p(0), p(n)) | |
2757 | end | |
2758 | libi77: complain about non-positive rec= in direct read and write | |
2759 | statements. | |
2760 | libf77: trivial adjustments; Version.c not changed. | |
2761 | ||
2762 | Wed Feb 12 00:18:03 EST 1997 | |
2763 | output.c: fix (seldom problematic) glitch in out_call: put parens | |
2764 | around the ... in a test of the form "if (q->tag == TADDR && ...)". | |
2765 | vax.c: fix bug revealed in the "psi_offset =" assignment in the | |
2766 | following example: | |
2767 | subroutine foo(psi,m) | |
2768 | integer z(100),m | |
2769 | common /a/ z | |
2770 | double precision psi(z(m):z(m) + 10) | |
2771 | call foo(m+1, psi(0),psi(10)) | |
2772 | end | |
2773 | ||
2774 | Mon Feb 24 23:44:54 EST 1997 | |
2775 | For consistency with f2c's current treatment of adjacent character | |
2776 | strings in FORMAT statements, recognize a Hollerith string following | |
2777 | a string (and merge adjacent strings in FORMAT statements). | |
2778 | ||
2779 | Wed Feb 26 13:41:11 EST 1997 | |
2780 | New libf2c.zip, a combination of the libf77 and libi77 bundles (and | |
2781 | available only by ftp). | |
2782 | libf77: adjust functions with a complex output argument to permit | |
2783 | aliasing it with input arguments. (For now, at least, this is just | |
2784 | for possible benefit of g77.) | |
2785 | libi77: tweak to ftell_.c for systems with strange definitions of | |
2786 | SEEK_SET, etc. | |
2787 | ||
2788 | Tue Apr 8 20:57:08 EDT 1997 | |
2789 | libf77: [cz]_div.c: tweaks invisible on most systems (that may | |
2790 | improve things slightly with optimized compilation on systems that use | |
2791 | gratuitous extra precision). | |
2792 | libi77: fmt.c: adjust to complain at missing numbers in formats | |
2793 | (but still treat missing ".nnn" as ".0"). | |
2794 | ||
2795 | Fri Apr 11 14:05:57 EDT 1997 | |
2796 | libi77: err.c: attempt to make stderr line buffered rather than | |
2797 | fully buffered. (Buffering is needed for format items T and TR.) | |
2798 | ||
2799 | Thu Apr 17 22:42:43 EDT 1997 | |
2800 | libf77: add F77_aloc.o to makefile (and makefile.u in libf2c.zip). | |
2801 | ||
2802 | Fri Apr 25 19:32:09 EDT 1997 | |
2803 | libf77: add [de]time_.c (which may give trouble on some systems). | |
2804 | ||
2805 | Tue May 27 09:18:52 EDT 1997 | |
2806 | libi77: ftell_.c: fix typo that caused the third argument to be | |
2807 | treated as 2 on some systems. | |
2808 | ||
2809 | Mon Jun 9 00:04:37 EDT 1997 | |
2810 | libi77 (and libf2c.zip): adjust include order in err.c lread.c wref.c | |
2811 | rdfmt.c to include fmt.h (etc.) after system includes. Version.c not | |
2812 | changed. | |
2813 | ||
2814 | Mon Jul 21 16:04:54 EDT 1997 | |
2815 | proc.c: fix glitch in logic for "nonpositive dimension" message. | |
2816 | libi77: inquire.c: always include string.h (for possible use with | |
2817 | -DNON_UNIX_STDIO); Version.c not changed. | |
2818 | ||
2819 | Thu Jul 24 17:11:23 EDT 1997 | |
2820 | Tweak "Notice" to reflect the AT&T breakup -- we missed it when | |
2821 | updating the copyright notices in the source files last summer. | |
2822 | Adjust src/makefile so malloc.o is not used by default, but can | |
2823 | be specified with "make MALLOC=malloc.o". | |
2824 | Add comments to src/README about the "CRAY" T3E. | |
2825 | ||
2826 | Tue Aug 5 14:53:25 EDT 1997 | |
2827 | Add definition of calloc to malloc.c; this makes f2c's malloc | |
2828 | work on some systems where trouble hitherto arose because references | |
2829 | to calloc brought in the system's malloc. (On sensible systems, | |
2830 | calloc is defined separately from malloc. To avoid confusion on | |
2831 | other systems, f2c/malloc.c now defines calloc.) | |
2832 | libi77: lread.c: adjust to accord with a change to the Fortran 8X | |
2833 | draft (in 1990 or 1991) that rescinded permission to elide quote marks | |
2834 | in namelist input of character data; to get the old behavior, compile | |
2835 | with F8X_NML_ELIDE_QUOTES #defined. wrtfmt.o: wrt_G: tweak to print | |
2836 | the right number of 0's for zero under G format. | |
2837 | ||
2838 | Sat Aug 16 05:45:32 EDT 1997 | |
2839 | libi77: iio.c: fix bug in internal writes to an array of character | |
2840 | strings that sometimes caused one more array element than required by | |
2841 | the format to be blank-filled. Example: format(1x). | |
2842 | ||
2843 | Wed Sep 17 00:39:29 EDT 1997 | |
2844 | libi77: fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines | |
2845 | with 64-bit pointers and 32-bit ints that did not 64-bit align | |
2846 | struct syl (e.g., Linux on the DEC Alpha). This change should be | |
2847 | invisible on other machines. | |
2848 | ||
2849 | Sun Sep 21 22:05:19 EDT 1997 | |
2850 | libf77: [de]time_.c (Unix systems only): change return type to double. | |
a843efa0 CB |
2851 | |
2852 | Thu Dec 4 22:10:09 EST 1997 | |
2853 | Fix bug with handling large blocks of comments (over 4k); parts of the | |
2854 | second and subsequent blocks were likely to be lost (not copied into | |
2855 | comments in the resulting C). Allow comment lines to be longer before | |
2856 | breaking them. | |
2857 | ||
2858 | Mon Jan 19 17:19:27 EST 1998 | |
2859 | makefile: change the rule for making gram.c to one for making gram1.c; | |
2860 | henceforth, asking netlib to "send all from f2c/src" will bring you a | |
2861 | working gram.c. Nowadays there are simply too many broken versions of | |
2862 | yacc floating around. | |
2863 | libi77: backspace.c: for b->ufmt==0, change sizeof(int) to | |
2864 | sizeof(uiolen). On machines where this would make a difference, it is | |
2865 | best for portability to compile libI77 with -DUIOLEN_int, which will | |
2866 | render the change invisible. | |
2867 | ||
2868 | Tue Feb 24 08:35:33 EST 1998 | |
2869 | makefile: remove gram.c from the "make clean" rule. | |
2870 | ||
2871 | Wed Feb 25 08:29:39 EST 1998 | |
2872 | makefile: change CFLAGS assignment to -O; add "veryclean" rule. | |
2873 | ||
2874 | Wed Mar 4 13:13:21 EST 1998 | |
2875 | libi77: open.c: fix glitch in comparing file names under | |
2876 | -DNON_UNIX_STDIO. | |
2877 | ||
2878 | Mon Mar 9 23:56:56 EST 1998 | |
2879 | putpcc.c: omit an unnecessary temporary variable in computing | |
2880 | (expr)**3. | |
2881 | libf77, libi77: minor tweaks to make some C++ compilers happy; | |
2882 | Version.c not changed. | |
2883 | ||
2884 | Wed Mar 18 18:08:47 EST 1998 | |
2885 | libf77: minor tweaks to [ed]time_.c; Version.c not changed. | |
2886 | libi77: endfile.c, open.c: acquire temporary files from tmpfile(), | |
2887 | unless compiled with -DNON_ANSI_STDIO, which uses mktemp(). | |
2888 | New buffering scheme independent of NON_UNIX_STDIO for handling T | |
2889 | format items. Now -DNON_UNIX_STDIO is no longer be necessary for | |
2890 | Linux, and libf2c no longer causes stderr to be buffered -- the former | |
2891 | setbuf or setvbuf call for stderr was to make T format items work. | |
2892 | open.c: use the Posix access() function to check existence or | |
2893 | nonexistence of files, except under -DNON_POSIX_STDIO, where trial | |
2894 | fopen calls are used. In open.c, fix botch in changes of 19980304. | |
2895 | libf2c.zip: the PC makefiles are now set for NT/W95, with comments | |
2896 | about changes for DOS. | |
2897 | ||
2898 | Fri Apr 3 17:22:12 EST 1998 | |
2899 | Adjust fix of 19960913 to again permit substring notation on | |
2900 | character variables in data statements. | |
2901 | ||
2902 | Sun Apr 5 19:26:50 EDT 1998 | |
2903 | libi77: wsfe.c: make $ format item work: this was lost in the changes | |
2904 | of 17 March 1998. | |
b93be35b DL |
2905 | |
2906 | Sat May 16 19:08:51 EDT 1998 | |
2907 | Adjust output of ftnlen constants: rather than appending L, | |
2908 | prepend (ftnlen). This should make the resulting C more portable, | |
2909 | e.g., to systems (such as DEC Alpha Unix systems) on which long | |
2910 | may be longer than ftnlen. | |
2911 | Adjust -r so it also casts REAL expressions passed to intrinsic | |
2912 | functions to REAL. | |
2913 | ||
2914 | Wed May 27 16:02:35 EDT 1998 | |
2915 | libf2c.zip: tweak description of compiling libf2c for INTEGER*8 | |
2916 | to accord with makefile.u rather than libF77/makefile. | |
2917 | ||
2918 | Thu May 28 22:45:59 EDT 1998 | |
2919 | libi77: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c: | |
2920 | set f__curunit sooner so various error messages will correctly | |
2921 | identify the I/O unit involved. | |
2922 | libf2c.zip: above, plus tweaks to PC makefiles: for some purposes, | |
2923 | it's still best to compile with -DMSDOS (even for use with NT). | |
2924 | ||
2925 | Thu Jun 18 01:22:52 EDT 1998 | |
2926 | libi77: lread.c: modified so floating-point numbers (containing | |
2927 | either a decimal point or an exponent field) are treated as errors | |
2928 | when they appear as list input for integer data. Compile lread.c with | |
2929 | -DALLOW_FLOAT_IN_INTEGER_LIST_INPUT to restore the old behavior. |