source: trunk/src/gcc/libf2c/changes.netlib@ 1459

Last change on this file since 1459 was 2, checked in by bird, 23 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 114.7 KB
Line 
131 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
115 Sept. 1989:
12 Fixed botch in argument passing of substrings of equivalenced
13variables.
14
1515 Sept. 1989:
16 Warn about incorrect code generated when a character-valued
17function is not declared external and is passed as a parameter
18(in violation of the Fortran 77 standard) before it is invoked.
19Example:
20
21 subroutine foo(a,b)
22 character*10 a,b
23 call goo(a,b)
24 b = a(3)
25 end
26
2718 Sept. 1989:
28 Complain about overlapping initializations.
29
3020 Sept. 1989:
31 Warn about names declared EXTERNAL but never referenced;
32include such names as externs in the generated C (even
33though most C compilers will discard them).
34
3524 Sept. 1989:
36 New option -w8 to suppress complaint when COMMON or EQUIVALENCE
37forces word alignment of a double.
38 Under -A (for ANSI C), ensure that floating constants (terminated
39by 'f') contain either a decimal point or an exponent field.
40 Repair bugs sometimes encountered with CHAR and ICHAR intrinsic
41functions.
42 Restore f77's optimizations for copying and comparing character
43strings of length 1.
44 Always assume floating-point valued routines in libF77 return
45doubles, even under -R.
46 Repair occasional omission of arguments in routines having multiple
47entry points.
48 Repair bugs in computing offsets of character strings involved
49in EQUIVALENCE.
50 Don't omit structure qualification when COMMON variables are used
51as FORMATs or internal files.
52
532 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
56involved in EQUIVALENCE.
57 Treat noncharacter variables initialized (at least partly) with
58character data as though they were equivalenced -- put out a struct
59and #define the variables. This eliminates the hideous and nonportable
60numeric values that were used to initialize such variables.
61 Treat IMPLICIT NONE as IMPLICIT UNDEFINED(A-Z) .
62 Quit when given invalid options.
63
648 Oct. 1989:
65 Modified naming scheme for generated intermediate variables;
66more are recycled, fewer distinct ones used.
67 New option -W nn specifies nn characters/word for Hollerith
68data 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
71i is a scalar integer variable, are now simplified to (const1-const2);
72this leads to simpler translation of some substring expressions.
73 Initialize uninitialized portions of character string arrays to 0
74rather than to blanks.
75
769 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
8010 Oct. 1989:
81 ! recognized as in-line comment delimiter (a la Fortran 88).
82
8324 Oct. 1989:
84 New options to ease coping with systems that want the structs
85that result from COMMON blocks to be defined just once:
86 -E causes uninitialized COMMON blocks to be declared Extern;
87if Extern is undefined, f2c.h #defines it to be extern.
88 -ec causes a separate .c file to be emitted for each
89uninitialized COMMON block: COMMON /ABC/ yields abc_com.c;
90thus one can compile *_com.c into a library to ensure
91precisely one definition.
92 -e1c is similar to -ec, except that everything goes into
93one file, along with comments that give a sed script for
94splitting the file into the pieces that -ec would give.
95This is for use with netlib's "execute f2c" service (for which
96-ec is coerced into -e1c, and the sed script will put everything
97but the COMMON definitions into f2c_out.c ).
98
9928 Oct. 1989:
100 Convert "i = i op ..." into "i op= ...;" even when i is a
101dummy argument.
102
10313 Nov. 1989:
104 Name integer constants (passed as arguments) c__... rather
105than c_... so
106 common /c/stuff
107 call foo(1)
108 ...
109is translated correctly.
110
11119 Nov. 1989:
112 Floating-point constants are now kept as strings unless they
113are involved in constant expressions that get simplified. The
114floating-point constants kept as strings can have arbitrarily
115many significant figures and a very large exponent field (as
116large as long int allows on the machine on which f2c runs).
117Thus, 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
130now 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
139rather 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.,
149epbase, epprec, epemin, epemax, eptiny, ephuge, epmrsp.
150
15122 Nov. 1989:
152 Workarounds for glitches on some Sun systems...
153 libf77: libF77/makefile modified to point out possible need
154to compile libF77/main.c with -Donexit=on_exit .
155 libi77: libI77/wref.c (and libI77/README) modified so non-ANSI
156systems can compile with USE_STRLEN defined, which will cause
157 sprintf(b = buf, "%#.*f", d, x);
158 n = strlen(b) + d1;
159rather than
160 n = sprintf(b = buf, "%#.*f", d, x) + d1;
161to be compiled.
162
16326 Nov. 1989:
164 Longer names are now accepted (up to 50 characters); names may
165contain underscores (in which case they will have two underscores
166appended, to avoid clashes with library names).
167
16828 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
17329 Nov. 1989:
174 Supplied missing semicolon in parameterless subroutines that
175have multiple entry points (all of them parameterless).
176
17730 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"
180rather than "doublereal" (for use with nonstandard C compilers for
181which "double" is IEEE double extended).
182
1831 Dec. 1989:
184 f2c.h updated to eliminate #defines rendered unnecessary (and,
185indeed, dangerous) by change of 26 Nov. to long names possibly
186containing 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
189different types).
190
1912 Dec. 1989:
192 Better error message (than "bad tag") for NAMELIST, which no longer
193inhibits C output.
194
1954 Dec. 1989:
196 Allow capital letters in hex constants (f77 extension; e.g.,
197x'a012BCd', X'A012BCD' and x'a012bcd' are all treated as the integer
198167848909).
199 libi77 further revised: lio.c lio.h lread.c wref.c wrtfmt.c tweaked
200again to allow float and real or double and doublereal to be different.
201
2026 Dec. 1989:
203 Revised f2c.h -- required for the following...
204 Simpler looking translations for abs, min, max, using #defines in
205revised 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
209libi77 gives you a run-time error message if you attempt NAMELIST I/O.
210
2117 Dec. 1989:
212 Fixed bug that prevented local integer variables that appear in DATA
213stmts from being ASSIGNed statement labels.
214 Fillers (for DATA statements initializing EQUIVALENCEd variables and
215variables in COMMON) typed integer rather than doublereal (for slightly
216more portability, e.g. to Crays).
217 libi77: missing return values supplied in a few places; some tests
218reordered for better working on the Cray.
219 libf77: better accuracy for complex divide, complex square root,
220real mod function (casts to double; double temporaries).
221
2229 Dec. 1989:
223 Fixed bug that caused needless (albeit harmless) empty lines to be
224inserted in the C output when a comment line contained trailing blanks.
225 Further tweak to type of fillers: allow doublereal fillers if the
226struct has doublereal data.
227
22811 Dec. 1989:
229 Alteration of rule for producing external (C) names from names that
230contain underscores. Now the external name is always obtained by
231appending a pair of underscores.
232
23312 Dec. 1989:
234 C production inhibited after most errors.
235
23615 Dec. 1989:
237 Fixed bug in headers for subroutines having two or more character
238strings arguments: the length arguments were reversed.
239
24019 Dec. 1989:
241 f2c.h libf77 libi77: adjusted so #undefs in f2c.h should not foil
242compilation 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
24620 Dec. 1989:
247 f2c bugs fixed: In the absence of an err= specifier, the iostat=
248specifier was generally set wrong. Character strings containing
249explicit 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
25329 Dec. 1989:
254 Nested unlabeled DO loops now handled properly; new warning for
255extraneous text at end of FORMAT.
256
25730 Dec. 1989:
258 Fixed bug in translating dble(real(...)), dble(sngl(...)), and
259dble(float(...)), where ... is either of type double complex or
260is an expression requiring assignment to intermediate variables (e.g.,
261dble(real(foo(x+1))), where foo is a function and x is a variable).
262Regard nonblank label fields on continuation lines as an error.
263
2643 Jan. 1990:
265 New option -C++ yields output that should be understood
266by C++ compilers.
267
2686 Jan. 1989:
269 -a now excludes variables that appear in a namelist from those
270that it makes automatic. (As before, it also excludes variables
271that appear in a common, data, equivalence, or save statement.)
272 The syntactically correct Fortran
273 read(*,i) x
274 end
275now yields syntactically correct C (even though both the Fortran
276and C are buggy -- no FORMAT has not been ASSIGNed to i).
277
2787 Jan. 1990:
279 libi77: routines supporting NAMELIST added. Surrounding quotes
280made optional when no ambiguity arises in a list or namelist READ
281of a character-string value.
282
2839 Jan. 1990:
284 f2c.src made available.
285
28616 Jan. 1990:
287 New options -P to produce ANSI C or C++ prototypes for procedures
288defined. Change to -A and -C++: f2c tries to infer prototypes for
289invoked procedures unless the new -!P option is given. New warning
290messages for inconsistent calling sequences among procedures within
291a single file. Most of f2c/src is affected.
292 f2c.h: typedefs for procedure arguments added; netlib's f2c service
293will insert appropriate typedefs for use with older versions of f2c.h.
294
29517 Jan. 1990:
296 f2c/src: defs.h exec.c format.c proc.c putpcc.c version.c xsum0.out
297updated. Castargs and protofile made extern in defs.h; exec.c
298modified so superfluous else clauses are diagnosed; unused variables
299omitted from declarations in format.c proc.c putpcc.c .
300
30121 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;
305such files are assumed to be prototype files, such as produced by
306the -P option. All prototype files are read before any Fortran files
307and apply globally to all Fortran files. Suitable prototypes help f2c
308warn about calling-sequence errors and can tell f2c how to type
309procedures declared external but not explicitly typed; the latter is
310mainly of interest for users of the -A and -C++ options. (Prototype
311arguments are not available to netlib's "execute f2c" service.)
312 New option -it tells f2c to try to infer types of untyped external
313arguments from their use as parameters to prototyped or previously
314defined procedures.
315 f2c/src: many minor cleanups; most modules changed. Individual
316files in f2c/src are now in "bundle" format. The former f2c.1 is
317now f2c.1t; "f2c.1t from f2c" and "f2c.1t from f2c/src" are now the
318same, as are "f2c.1 from f2c" and "f2c.1 from f2c/src". People who
319do not obtain a new copy of "all from f2c/src" should at least add
320 fclose(sortfp);
321after the call on do_init_data(outfile, sortfp) in format_data.c .
322
32322 Jan. 1990:
324 Cleaner man page wording (thanks to Doug McIlroy).
325 -it now also applies to all untyped EXTERNAL procedures, not just
326arguments.
327
32823 Jan. 01:34:00 EST 1990:
329 Bug fixes: under -A and -C++, incorrect C was generated for
330subroutines having multiple entries but no arguments.
331 Under -A -P, subroutines of no arguments were given prototype
332calling sequence () rather than (void).
333 Character-valued functions elicited erroneous warning messages
334about inconsistent calling sequences when referenced by another
335procedure in the same file.
336 f2c.1t: omit first appearance of libF77.a in FILES section;
337load order of libraries is -lF77 -lI77, not vice versa (bug
338introduced in yesterday's edits); define .F macro for those whose
339-man lacks it. (For a while after yesterday's fixes were posted,
340f2c.1t was out of date. Sorry!)
341
34223 Jan. 9:53:24 EST 1990:
343 Character substring expressions involving function calls having
344character arguments (including the intrinsic len function) yielded
345incorrect C.
346 Procedures defined after invocation (in the same file) with
347conflicting argument types also got an erroneous message about
348the wrong number of arguments.
349
35024 Jan. 11:44:00 EST 1990:
351 Bug fixes: -p omitted #undefs; COMMON block names containing
352underscores had their C names incorrectly computed; a COMMON block
353having the name of a previously defined procedure wreaked havoc;
354if all arguments were .P files, f2c tried reading the second as a
355Fortran file.
356 New feature: -P emits comments showing COMMON block lengths, so one
357can get warnings of incompatible COMMON block lengths by having f2c
358read .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
360inconsistent COMMON usage, and COMMON blocks having inconsistent
361lengths will be given the maximum length. (The latter always did
362happen within each input file; now -P lets you extend this behavior
363across files.)
364
36526 Jan. 16:44:00 EST 1990:
366 Option -it made less aggressive: untyped external procedures that
367are invoked are now typed by the rules of Fortran, rather than by
368previous use of procedures to which they are passed as arguments
369before being invoked.
370 Option -P now includes information about references, i.e., called
371procedures, in the prototype files (in the form of special comments).
372This allows iterative invocations of f2c to infer more about untyped
373external names, particularly when multiple Fortran files are involved.
374 As usual, there are some obscure bug fixes:
3751. Repair of erroneous warning messages about inconsistent number of
376arguments that arose when a character dummy parameter was discovered
377to be a function or when multiple entry points involved character
378variables appearing in a previous entry point.
3792. Repair of memory fault after error msg about "adjustable character
380function".
3813. Under -U, allow MAIN_ as a subroutine name (in the same file as a
382main program).
3834. Change for consistency: a known function invoked as a subroutine,
384then as a function elicits a warning rather than an error.
385
38626 Jan. 22:32:00 EST 1990:
387 Fixed two bugs that resulted in incorrect C for substrings, within
388the body of a character-valued function, of the function's name, when
389those substrings were arguments to another function (even implicitly,
390as in character-string assignment).
391
39228 Jan. 18:32:00 EST 1990:
393 libf77, libi77: checksum files added; "make check" looks for
394transmission errors. NAMELIST read modified to allow $ rather than &
395to precede a namelist name, to allow $ rather than / to terminate
396input where the name of another variable would otherwise be expected,
397and to regard all nonprinting ASCII characters <= ' ' as spaces.
398
39929 Jan. 02:11:00 EST 1990:
400 "fc from f2c" added.
401 -it option made the default; -!it turns it off. Type information is
402now updated in a previously missed case.