| 31 Aug. 1989: |
| 1. A(min(i,j)) now is translated correctly (where A is an array). |
| 2. 7 and 8 character variable names are allowed (but elicit a |
| complaint under -ext). |
| 3. LOGICAL*1 is treated as LOGICAL, with just one error message |
| per LOGICAL*1 statement (rather than one per variable declared |
| in that statement). [Note that LOGICAL*1 is not in Fortran 77.] |
| Like f77, f2c now allows the format in a read or write statement |
| to be an integer array. |
| |
| 5 Sept. 1989: |
| Fixed botch in argument passing of substrings of equivalenced |
| variables. |
| |
| 15 Sept. 1989: |
| Warn about incorrect code generated when a character-valued |
| function is not declared external and is passed as a parameter |
| (in violation of the Fortran 77 standard) before it is invoked. |
| Example: |
| |
| subroutine foo(a,b) |
| character*10 a,b |
| call goo(a,b) |
| b = a(3) |
| end |
| |
| 18 Sept. 1989: |
| Complain about overlapping initializations. |
| |
| 20 Sept. 1989: |
| Warn about names declared EXTERNAL but never referenced; |
| include such names as externs in the generated C (even |
| though most C compilers will discard them). |
| |
| 24 Sept. 1989: |
| New option -w8 to suppress complaint when COMMON or EQUIVALENCE |
| forces word alignment of a double. |
| Under -A (for ANSI C), ensure that floating constants (terminated |
| by 'f') contain either a decimal point or an exponent field. |
| Repair bugs sometimes encountered with CHAR and ICHAR intrinsic |
| functions. |
| Restore f77's optimizations for copying and comparing character |
| strings of length 1. |
| Always assume floating-point valued routines in libF77 return |
| doubles, even under -R. |
| Repair occasional omission of arguments in routines having multiple |
| entry points. |
| Repair bugs in computing offsets of character strings involved |
| in EQUIVALENCE. |
| Don't omit structure qualification when COMMON variables are used |
| as FORMATs or internal files. |
| |
| 2 Oct. 1989: |
| Warn about variables that appear only in data stmts; don't emit them. |
| Fix bugs in character DATA for noncharacter variables |
| involved in EQUIVALENCE. |
| Treat noncharacter variables initialized (at least partly) with |
| character data as though they were equivalenced -- put out a struct |
| and #define the variables. This eliminates the hideous and nonportable |
| numeric values that were used to initialize such variables. |
| Treat IMPLICIT NONE as IMPLICIT UNDEFINED(A-Z) . |
| Quit when given invalid options. |
| |
| 8 Oct. 1989: |
| Modified naming scheme for generated intermediate variables; |
| more are recycled, fewer distinct ones used. |
| New option -W nn specifies nn characters/word for Hollerith |
| data initializing non-character variables. |
| Bug fix: x(i:min(i+10,j)) used to elicit "Can't handle opcode 31 yet". |
| Integer expressions of the form (i+const1) - (i+const2), where |
| i is a scalar integer variable, are now simplified to (const1-const2); |
| this leads to simpler translation of some substring expressions. |
| Initialize uninitialized portions of character string arrays to 0 |
| rather than to blanks. |
| |
| 9 Oct. 1989: |
| New option -c to insert comments showing original Fortran source. |
| New option -g to insert line numbers of original Fortran source. |
| |
| 10 Oct. 1989: |
| ! recognized as in-line comment delimiter (a la Fortran 88). |
| |
| 24 Oct. 1989: |
| New options to ease coping with systems that want the structs |
| that result from COMMON blocks to be defined just once: |
| -E causes uninitialized COMMON blocks to be declared Extern; |
| if Extern is undefined, f2c.h #defines it to be extern. |
| -ec causes a separate .c file to be emitted for each |
| uninitialized COMMON block: COMMON /ABC/ yields abc_com.c; |
| thus one can compile *_com.c into a library to ensure |
| precisely one definition. |
| -e1c is similar to -ec, except that everything goes into |
| one file, along with comments that give a sed script for |
| splitting the file into the pieces that -ec would give. |
| This is for use with netlib's "execute f2c" service (for which |
| -ec is coerced into -e1c, and the sed script will put everything |
| but the COMMON definitions into f2c_out.c ). |
| |
| 28 Oct. 1989: |
| Convert "i = i op ..." into "i op= ...;" even when i is a |
| dummy argument. |
| |
| 13 Nov. 1989: |
| Name integer constants (passed as arguments) c__... rather |
| than c_... so |
| common /c/stuff |
| call foo(1) |
| ... |
| is translated correctly. |
| |
| 19 Nov. 1989: |
| Floating-point constants are now kept as strings unless they |
| are involved in constant expressions that get simplified. The |
| floating-point constants kept as strings can have arbitrarily |
| many significant figures and a very large exponent field (as |
| large as long int allows on the machine on which f2c runs). |
| Thus, for example, the body of |
| |
| subroutine zot(x) |
| double precision x(6), pi |
| parameter (pi=3.1415926535897932384626433832795028841972) |
| x(1) = pi |
| x(2) = pi+1 |
| x(3) = 9287349823749272.7429874923740978492734D-298374 |
| x(4) = .89 |
| x(5) = 4.0005 |
| x(6) = 10D7 |
| end |
| |
| now gets translated into |
| |
| x[1] = 3.1415926535897932384626433832795028841972; |
| x[2] = 4.1415926535897931; |
| x[3] = 9.2873498237492727429874923740978492734e-298359; |
| x[4] = (float).89; |
| x[5] = (float)4.0005; |
| x[6] = 1e8; |
| |
| rather than the former |
| |
| x[1] = 3.1415926535897931; |
| x[2] = 4.1415926535897931; |
| x[3] = 0.; |
| x[4] = (float)0.89000000000000003; |
| x[5] = (float)4.0004999999999997; |
| x[6] = 100000000.; |
| |
| Recognition of f77 machine-constant intrinsics deleted, i.e., |
| epbase, epprec, epemin, epemax, eptiny, ephuge, epmrsp. |
| |
| 22 Nov. 1989: |
| Workarounds for glitches on some Sun systems... |
| libf77: libF77/makefile modified to point out possible need |
| to compile libF77/main.c with -Donexit=on_exit . |
| libi77: libI77/wref.c (and libI77/README) modified so non-ANSI |
| systems can compile with USE_STRLEN defined, which will cause |
| sprintf(b = buf, "%#.*f", d, x); |
| n = strlen(b) + d1; |
| rather than |
| n = sprintf(b = buf, "%#.*f", d, x) + d1; |
| to be compiled. |
| |
| 26 Nov. 1989: |
| Longer names are now accepted (up to 50 characters); names may |
| contain underscores (in which case they will have two underscores |
| appended, to avoid clashes with library names). |
| |
| 28 Nov. 1989: |
| libi77 updated: |
| 1. Allow 3 (or, on Crays, 4) digit exponents under format Ew.d . |
| 2. Try to get things right on machines where ints have 16 bits. |
| |
| 29 Nov. 1989: |
| Supplied missing semicolon in parameterless subroutines that |
| have multiple entry points (all of them parameterless). |
| |
| 30 Nov. 1989: |
| libf77 and libi77 revised to use types from f2c.h. |
| f2c now types floating-point valued C library routines as "double" |
| rather than "doublereal" (for use with nonstandard C compilers for |
| which "double" is IEEE double extended). |
| |
| 1 Dec. 1989: |
| f2c.h updated to eliminate #defines rendered unnecessary (and, |
| indeed, dangerous) by change of 26 Nov. to long names possibly |
| containing underscores. |
| libi77 further revised: yesterday's change omitted two tweaks to fmt.h |
| (tweaks which only matter if float and real or double and doublereal are |
| different types). |
| |
| 2 Dec. 1989: |
| Better error message (than "bad tag") for NAMELIST, which no longer |
| inhibits C output. |
| |
| 4 Dec. 1989: |
| Allow capital letters in hex constants (f77 extension; e.g., |
| x'a012BCd', X'A012BCD' and x'a012bcd' are all treated as the integer |
| 167848909). |
| libi77 further revised: lio.c lio.h lread.c wref.c wrtfmt.c tweaked |
| again to allow float and real or double and doublereal to be different. |
| |
| 6 Dec. 1989: |
| Revised f2c.h -- required for the following... |
| Simpler looking translations for abs, min, max, using #defines in |
| revised f2c.h . |
| libi77: more corrections to types; additions for NAMELIST. |
| Corrected casts in some I/O calls. |
| Translation of NAMELIST; libi77 must still be revised. Currently |
| libi77 gives you a run-time error message if you attempt NAMELIST I/O. |
| |
| 7 Dec. 1989: |
| Fixed bug that prevented local integer variables that appear in DATA |
| stmts from being ASSIGNed statement labels. |
| Fillers (for DATA statements initializing EQUIVALENCEd variables and |
| variables in COMMON) typed integer rather than doublereal (for slightly |
| more portability, e.g. to Crays). |
| libi77: missing return values supplied in a few places; some tests |
| reordered for better working on the Cray. |
| libf77: better accuracy for complex divide, complex square root, |
| real mod function (casts to double; double temporaries). |
| |
| 9 Dec. 1989: |
| Fixed bug that caused needless (albeit harmless) empty lines to be |
| inserted in the C output when a comment line contained trailing blanks. |
| Further tweak to type of fillers: allow doublereal fillers if the |
| struct has doublereal data. |
| |
| 11 Dec. 1989: |
| Alteration of rule for producing external (C) names from names that |
| contain underscores. Now the external name is always obtained by |
| appending a pair of underscores. |
| |
| 12 Dec. 1989: |
| C production inhibited after most errors. |
| |
| 15 Dec. 1989: |
| Fixed bug in headers for subroutines having two or more character |
| strings arguments: the length arguments were reversed. |
| |
| 19 Dec. 1989: |
| f2c.h libf77 libi77: adjusted so #undefs in f2c.h should not foil |
| compilation of libF77 and libI77. |
| libf77: getenv_ adjusted to work with unsorted environments. |
| libi77: the iostat= specifier should now work right with internal I/O. |
| |
| 20 Dec. 1989: |
| f2c bugs fixed: In the absence of an err= specifier, the iostat= |
| specifier was generally set wrong. Character strings containing |
| explicit nulls (\0) were truncated at the first null. |
| Unlabeled DO loops recognized; must be terminated by ENDDO. |
| (Don't ask for CYCLE, EXIT, named DO loops, or DO WHILE.) |
| |
| 29 Dec. 1989: |
| Nested unlabeled DO loops now handled properly; new warning for |
| extraneous text at end of FORMAT. |
| |
| 30 Dec. 1989: |
| Fixed bug in translating dble(real(...)), dble(sngl(...)), and |
| dble(float(...)), where ... is either of type double complex or |
| is an expression requiring assignment to intermediate variables (e.g., |
| dble(real(foo(x+1))), where foo is a function and x is a variable). |
| Regard nonblank label fields on continuation lines as an error. |
| |
| 3 Jan. 1990: |
| New option -C++ yields output that should be understood |
| by C++ compilers. |
| |
| 6 Jan. 1989: |
| -a now excludes variables that appear in a namelist from those |
| that it makes automatic. (As before, it also excludes variables |
| that appear in a common, data, equivalence, or save statement.) |
| The syntactically correct Fortran |
| read(*,i) x |
| end |
| now yields syntactically correct C (even though both the Fortran |
| and C are buggy -- no FORMAT has not been ASSIGNed to i). |
| |
| 7 Jan. 1990: |
| libi77: routines supporting NAMELIST added. Surrounding quotes |
| made optional when no ambiguity arises in a list or namelist READ |
| of a character-string value. |
| |
| 9 Jan. 1990: |
| f2c.src made available. |
| |
| 16 Jan. 1990: |
| New options -P to produce ANSI C or C++ prototypes for procedures |
| defined. Change to -A and -C++: f2c tries to infer prototypes for |
| invoked procedures unless the new -!P option is given. New warning |
| messages for inconsistent calling sequences among procedures within |
| a single file. Most of f2c/src is affected. |
| f2c.h: typedefs for procedure arguments added; netlib's f2c service |
| will insert appropriate typedefs for use with older versions of f2c.h. |
| |
| 17 Jan. 1990: |
| f2c/src: defs.h exec.c format.c proc.c putpcc.c version.c xsum0.out |
| updated. Castargs and protofile made extern in defs.h; exec.c |
| modified so superfluous else clauses are diagnosed; unused variables |
| omitted from declarations in format.c proc.c putpcc.c . |
| |
| 21 Jan. 1990: |
| No C emitted for procedures declared external but not referenced. |
| f2c.h: more new types added for use with -P. |
| New feature: f2c accepts as arguments files ending in .p or .P; |
| such files are assumed to be prototype files, such as produced by |
| the -P option. All prototype files are read before any Fortran files |
| and apply globally to all Fortran files. Suitable prototypes help f2c |
| warn about calling-sequence errors and can tell f2c how to type |
| procedures declared external but not explicitly typed; the latter is |
| mainly of interest for users of the -A and -C++ options. (Prototype |
| arguments are not available to netlib's "execute f2c" service.) |
| New option -it tells f2c to try to infer types of untyped external |
| arguments from their use as parameters to prototyped or previously |
| defined procedures. |
| f2c/src: many minor cleanups; most modules changed. Individual |
| files in f2c/src are now in "bundle" format. The former f2c.1 is |
| now f2c.1t; "f2c.1t from f2c" and "f2c.1t from f2c/src" are now the |
| same, as are "f2c.1 from f2c" and "f2c.1 from f2c/src". People who |
| do not obtain a new copy of "all from f2c/src" should at least add |
| fclose(sortfp); |
| after the call on do_init_data(outfile, sortfp) in format_data.c . |
| |
| 22 Jan. 1990: |
| Cleaner man page wording (thanks to Doug McIlroy). |
| -it now also applies to all untyped EXTERNAL procedures, not just |
| arguments. |
| |
| 23 Jan. 01:34:00 EST 1990: |
| Bug fixes: under -A and -C++, incorrect C was generated for |
| subroutines having multiple entries but no arguments. |
| Under -A -P, subroutines of no arguments were given prototype |
| calling sequence () rather than (void). |
| Character-valued functions elicited erroneous warning messages |
| about inconsistent calling sequences when referenced by another |
| procedure in the same file. |
| f2c.1t: omit first appearance of libF77.a in FILES section; |
| load order of libraries is -lF77 -lI77, not vice versa (bug |
| introduced in yesterday's edits); define .F macro for those whose |
| -man lacks it. (For a while after yesterday's fixes were posted, |
| f2c.1t was out of date. Sorry!) |
| |
| 23 Jan. 9:53:24 EST 1990: |
| Character substring expressions involving function calls having |
| character arguments (including the intrinsic len function) yielded |
| incorrect C. |
| Procedures defined after invocation (in the same file) with |
| conflicting argument types also got an erroneous message about |
| the wrong number of arguments. |
| |
| 24 Jan. 11:44:00 EST 1990: |
| Bug fixes: -p omitted #undefs; COMMON block names containing |
| underscores had their C names incorrectly computed; a COMMON block |
| having the name of a previously defined procedure wreaked havoc; |
| if all arguments were .P files, f2c tried reading the second as a |
| Fortran file. |
| New feature: -P emits comments showing COMMON block lengths, so one |
| can get warnings of incompatible COMMON block lengths by having f2c |
| read .P (or .p) files. Now by running f2c twice, first with -P -!c |
| (or -P!c), then with *.P among the arguments, you can be warned of |
| inconsistent COMMON usage, and COMMON blocks having inconsistent |
| lengths will be given the maximum length. (The latter always did |
| happen within each input file; now -P lets you extend this behavior |
| across files.) |
| |
| 26 Jan. 16:44:00 EST 1990: |
| Option -it made less aggressive: untyped external procedures that |
| are invoked are now typed by the rules of Fortran, rather than by |
| previous use of procedures to which they are passed as arguments |
| before being invoked. |
| Option -P now includes information about references, i.e., called |
| procedures, in the prototype files (in the form of special comments). |
| This allows iterative invocations of f2c to infer more about untyped |
| external names, particularly when multiple Fortran files are involved. |
| As usual, there are some obscure bug fixes: |
| 1. Repair of erroneous warning messages about inconsistent number of |
| arguments that arose when a character dummy parameter was discovered |
| to be a function or when multiple entry points involved character |
| variables appearing in a previous entry point. |
| 2. Repair of memory fault after error msg about "adjustable character |
| function". |
| 3. Under -U, allow MAIN_ as a subroutine name (in the same file as a |
| main program). |
| 4. Change for consistency: a known function invoked as a subroutine, |
| then as a function elicits a warning rather than an error. |
| |
| 26 Jan. 22:32:00 EST 1990: |
| Fixed two bugs that resulted in incorrect C for substrings, within |
| the body of a character-valued function, of the function's name, when |
| those substrings were arguments to another function (even implicitly, |
| as in character-string assignment). |
| |
| 28 Jan. 18:32:00 EST 1990: |
| libf77, libi77: checksum files added; "make check" looks for |
| transmission errors. NAMELIST read modified to allow $ rather than & |
| to precede a namelist name, to allow $ rather than / to terminate |
| input where the name of another variable would otherwise be expected, |
| and to regard all nonprinting ASCII characters <= ' ' as spaces. |
| |
| 29 Jan. 02:11:00 EST 1990: |
| "fc from f2c" added. |
| -it option made the default; -!it turns it off. Type information is |
| now updated in a previously missed case. |
| -P option tweaked again; message about when rerunning f2c may change |
| prototypes or declarations made more accurate. |
| New option -Ps implies -P and returns exit status 4 if rerunning |
| f2c -P with prototype inputs might change prototypes or declarations. |
| Now you can execute a crude script like |
| |
| cat *.f >zap.F |
| rm -f zap.P |
| while :; do |
| f2c -Ps -!c zap.[FP] |
| case $? in 4) ;; *) break;; esac |
| done |
| |
| to get a file zap.P of the best prototypes f2c can determine for *.f . |
| |
| Jan. 29 07:30:21 EST 1990: |
| Forgot to check for error status when setting return code 4 under -Ps; |
| error status (1, 2, 3, or, for caught signal, 126) now takes precedence. |
| |
| Jan 29 14:17:00 EST 1990: |
| Incorrect handling of |
| open(n,'filename') |
| repaired -- now treated as |
| open(n,file='filename') |
| (and, under -ext, given an error message). |
| New optional source file memset.c for people whose systems don't |
| provide memset, memcmp, and memcpy; #include <string.h> in mem.c |
| changed to #include "string.h" so BSD people can create a local |
| string.h that simply says #include <strings.h> . |
| |
| Jan 30 10:34:00 EST 1990: |
| Fix erroneous warning at end of definition of a procedure with |
| character arguments when the procedure had previously been called with |
| a numeric argument instead of a character argument. (There were two |
| warnings, the second one incorrectly complaining of a wrong number of |
| arguments.) |
| |
| Jan 30 16:29:41 EST 1990: |
| Fix case where -P and -Ps erroneously reported another iteration |
| necessary. (Only harm is the extra iteration.) |
| |
| Feb 3 01:40:00 EST 1990: |
| Supply semicolon occasionally omitted under -c . |
| Try to force correct alignment when numeric variables are initialized |
| with character data (a non-standard and non-portable practice). You |
| must use the -W option if your code has such data statements and is |
| meant to run on a machine with other than 4 characters/word; e.g., for |
| code meant to run on a Cray, you would specify -W8 . |
| Allow parentheses around expressions in output lists (in write and |
| print statements). |
| Rename source files so their names are <= 12 characters long |
| (so there's room to append .Z and still have <= 14 characters); |
| renamed files: formatdata.c niceprintf.c niceprintf.h safstrncpy.c . |
| f2c material made available by anonymous ftp from research.att.com |
| (look in dist/f2c ). |
| |
| Feb 3 03:49:00 EST 1990: |
| Repair memory fault that arose from use (in an assignment or |
| call) of a non-argument variable declared CHARACTER*(*). |
| |
| Feb 9 01:35:43 EST 1990: |
| Fix erroneous error msg about bad types in |
| subroutine foo(a,adim) |
| dimension a(adim) |
| integer adim |
| Fix improper passing of character args (and possible memory fault) |
| in the expression part of a computed goto. |
| Fix botched calling sequences in array references involving |
| functions having character args. |
| Fix memory fault caused by invocation of character-valued functions |
| of no arguments. |
| Fix botched calling sequence of a character*1-valued function |
| assigned to a character*1 variable. |
| Fix bug in error msg for inconsistent number of args in prototypes. |
| Allow generation of C output despite inconsistencies in prototypes, |
| but give exit code 8. |
| Simplify include logic (by removing some bogus logic); never |
| prepend "/usr/include/" to file names. |
| Minor cleanups (that should produce no visible change in f2c's |
| behavior) in intr.c parse.h main.c defs.h formatdata.c p1output.c . |
| |
| Feb 10 00:19:38 EST 1990: |
| Insert (integer) casts when floating-point expressions are used |
| as subscripts. |
| Make SAVE stmt (with no variable list) override -a . |
| Minor cleanups: change field to Field in struct Addrblock (for the |
| benefit of buggy C compilers); omit system("/bin/cp ...") in misc.c . |
| |
| Feb 13 00:39:00 EST 1990: |
| Error msg fix in gram.dcl: change "cannot make %s parameter" |
| to "cannot make into parameter". |
| |
| Feb 14 14:02:00 EST 1990: |
| Various cleanups (invisible on systems with 4-byte ints), thanks |
| to Dave Regan: vaxx.c eliminated; %d changed to %ld various places; |
| external names adjusted for the benefit of stupid systems (that ignore |
| case and recognize only 6 significant characters in external names); |
| buffer shortened in xsum.c (e.g. for MS-DOS); fopen modes distinguish |
| text and binary files; several unused functions eliminated; missing |
| arg supplied to an unlikely fatalstr invocation. |
| |
| Thu Feb 15 19:15:53 EST 1990: |
| More cleanups (invisible on systems with 4 byte ints); casts inserted |
| so most complaints from cyntax(1) and lint(1) go away; a few (int) |
| versus (long) casts corrected. |
| |
| Fri Feb 16 19:55:00 EST 1990: |
| Recognize and translate unnamed Fortran 8x do while statements. |
| Fix bug that occasionally caused improper breaking of character |
| strings. |
| New error message for attempts to provide DATA in a type-declaration |
| statement. |
| |
| Sat Feb 17 11:43:00 EST 1990: |
| Fix infinite loop clf -> Fatal -> done -> clf after I/O error. |
| Change "if (addrp->vclass = CLPROC)" to "if (addrp->vclass == CLPROC)" |
| in p1_addr (in p1output.c); this was probably harmless. |
| Move a misplaced } in lex.c (which slowed initkey()). |
| Thanks to Gary Word for pointing these things out. |
| |
| Sun Feb 18 18:07:00 EST 1990: |
| Detect overlapping initializations of arrays and scalar variables |
| in previously missed cases. |
| Treat logical*2 as logical (after issuing a warning). |
| Don't pass string literals to p1_comment(). |
| Correct a cast (introduced 16 Feb.) in gram.expr; this matters e.g. |
| on a Cray. |
| Attempt to isolate UNIX-specific things in sysdep.c (a new source |
| file). Unless sysdep.c is compiled with SYSTEM_SORT defined, the |
| intermediate files created for DATA statements are now sorted in-core |
| without invoking system(). |
| |
| Tue Feb 20 16:10:35 EST 1990: |
| Move definition of binread and binwrite from init.c to sysdep.c . |
| Recognize Fortran 8x tokens < <= == >= > <> as synonyms for |
| .LT. .LE. .EQ. .GE. .GT. .NE. |
| Minor cleanup in putpcc.c: fully remove simoffset(). |
| More discussion of system dependencies added to libI77/README. |
| |
| Tue Feb 20 21:44:07 EST 1990: |
| Minor cleanups for the benefit of EBCDIC machines -- try to remove |
| the assumption that 'a' through 'z' are contiguous. (Thanks again to |
| Gary Word.) Also, change log2 to log_2 (shouldn't be necessary). |
| |
| Wed Feb 21 06:24:56 EST 1990: |
| Fix botch in init.c introduced in previous change; only matters |
| to non-ASCII machines. |
| |
| Thu Feb 22 17:29:12 EST 1990: |
| Allow several entry points to mention the same array. Protect |
| parameter adjustments with if's (for the case that an array is not |
| an argument to all entrypoints). |
| Under -u, allow |
| subroutine foo(x,n) |
| real x(n) |
| integer n |
| Compute intermediate variables used to evaluate dimension expressions |
| at the right time. Example previously mistranslated: |
| subroutine foo(x,k,m,n) |
| real x(min(k,m,n)) |
| ... |
| write(*,*) x |
| Detect duplicate arguments. (The error msg points to the first |
| executable stmt -- not wonderful, but not worth fixing.) |
| Minor cleanup of min/max computation (sometimes slightly simpler). |
| |
| Sun Feb 25 09:39:01 EST 1990: |
| Minor tweak to multiple entry points: protect parameter adjustments |
| with if's only for (array) args that do not appear in all entry points. |
| Minor tweaks to format.c and io.c (invisible unless your compiler |
| complained at the duplicate #defines of IOSUNIT and IOSFMT or at |
| comparisons of p1gets(...) with NULL). |
| |
| Sun Feb 25 18:40:10 EST 1990: |
| Fix bug introduced Feb. 22: if a subprogram contained DATA and the |
| first executable statement was labeled, then the label got lost. |
| (Just change INEXEC to INDATA in p1output.c; it occurs just once.) |
| |
| Mon Feb 26 17:45:10 EST 1990: |
| Fix bug in handling of " and ' in comments. |
| |
| Wed Mar 28 01:43:06 EST 1990: |
| libI77: |
| 1. Repair nasty I/O bug: opening two files and closing the first |
| (after possibly reading or writing it), then writing the second caused |
| the last buffer of the second to be lost. |
| 2. Formatted reads of logical values treated all letters other than |
| t or T as f (false). |
| libI77 files changed: err.c rdfmt.c Version.c |
| (Request "libi77 from f2c" -- you can't get these files individually.) |
| |
| f2c itself: |
| Repair nasty bug in translation of |
| ELSE IF (condition involving complicated abs, min, or max) |
| -- auxiliary statements were emitted at the wrong place. |
| Supply semicolon previously omitted from the translation of a label |
| (of a CONTINUE) immediately preceding an ELSE IF or an ELSE. This |
| bug made f2c produce invalid C. |
| Correct a memory fault that occurred (on some machines) when the |
| error message "adjustable dimension on non-argument" should be given. |
| Minor tweaks to remove some harmless warnings by overly chatty C |
| compilers. |
| Argument arays having constant dimensions but a variable lower bound |
| (e.g., x(n+1:n+3)) had a * omitted from scalar arguments involved in |
| the array offset computation. |
| |
| Wed Mar 28 18:47:59 EST 1990: |
| libf77: add exit(0) to end of main [return(0) encounters a Cray bug] |
| |
| Sun Apr 1 16:20:58 EDT 1990: |
| Avoid dereferencing null when processing equivalences after an error. |
| |
| Fri Apr 6 08:29:49 EDT 1990: |
| Calls involving alternate return specifiers omitted processing |
| needed for things like min, max, abs, and // (concatenation). |
| INTEGER*2 PARAMETERs were treated as INTEGER*4. |
| Convert some O(n^2) parsing to O(n). |
| |
| Tue Apr 10 20:07:02 EDT 1990: |
| When inconsistent calling sequences involve differing numbers of |
| arguments, report the first differing argument rather than the numbers |
| of arguments. |
| Fix bug under -a: formatted I/O in which either the unit or the |
| format was a local character variable sometimes resulted in invalid C |
| (a static struct initialized with an automatic component). |
| Improve error message for invalid flag after elided -. |
| Complain when literal table overflows, rather than infinitely |
| looping. (The complaint mentions the new and otherwise undocumented |
| -NL option for specifying a larger literal table.) |
| New option -h for forcing strings to word (or, with -hd, double-word) |
| boundaries where possible. |
| Repair a bug that could cause improper splitting of strings. |
| Fix bug (cast of c to doublereal) in |
| subroutine foo(c,r) |
| double complex c |
| double precision r |
| c = cmplx(r,real(c)) |
| end |
| New include file "sysdep.h" has some things from defs.h (and |
| elsewhere) that one may need to modify on some systems. |
| Some large arrays that were previously statically allocated are now |
| dynamically allocated when f2c starts running. |
| f2c/src files changed: |
| README cds.c defs.h f2c.1 f2c.1t format.c formatdata.c init.c |
| io.c lex.c main.c makefile mem.c misc.c names.c niceprintf.c |
| output.c parse_args.c pread.c put.c putpcc.c sysdep.h |
| version.c xsum0.out |
| |
| Wed Apr 11 18:27:12 EDT 1990: |
| Fix bug in argument consistency checking of character, complex, and |
| double complex valued functions. If the same source file contained a |
| definition of such a function with arguments not explicitly typed, |
| then subsequent references to the function might get erroneous |
| warnings of inconsistent calling sequences. |
| Tweaks to sysdep.h for partially ANSI systems. |
| New options -kr and -krd cause f2c to use temporary variables to |
| enforce Fortran evaluation-order rules with pernicious, old-style C |
| compilers that apply the associative law to floating-point operations. |
| |
| Sat Apr 14 15:50:15 EDT 1990: |
| libi77: libI77 adjusted to allow list-directed and namelist I/O |
| of internal files; bug in namelist I/O of logical and character arrays |
| fixed; list input of complex numbers adjusted to permit d or D to |
| denote the start of the exponent field of a component. |
| f2c itself: fix bug in handling complicated lower-bound |
| expressions for character substrings; e.g., min and max did not work |
| right, nor did function invocations involving character arguments. |
| Switch to octal notation, rather than hexadecimal, for nonprinting |
| characters in character and string constants. |
| Fix bug (when neither -A nor -C++ was specified) in typing of |
| external arguments of type complex, double complex, or character: |
| subroutine foo(c) |
| external c |
| complex c |
| now results in |
| /* Complex */ int (*c) (); |
| (as, indeed, it once did) rather than |
| complex (*c) (); |
| |
| Sat Apr 14 22:50:39 EDT 1990: |
| libI77/makefile: updated "make check" to omit lio.c |
| lib[FI]77/makefile: trivial change: define CC = cc, reference $(CC). |
| (Request, e.g., "libi77 from f2c" -- you can't ask for individual |
| files from lib[FI]77.) |
| |
| Wed Apr 18 00:56:37 EDT 1990: |
| Move declaration of atof() from defs.h to sysdep.h, where it is |
| now not declared if stdlib.h is included. (NeXT's stdlib.h has a |
| #define atof that otherwise wreaks havoc.) |
| Under -u, provide a more intelligible error message (than "bad tag") |
| for an attempt to define a function without specifying its type. |
| |
| Wed Apr 18 17:26:27 EDT 1990: |
| Recognize \v (vertical tab) in Hollerith as well as quoted strings; |
| add recognition of \r (carriage return). |
| New option -!bs turns off recognition of escapes in character strings |
| (\0, \\, \b, \f, \n, \r, \t, \v). |
| Move to sysdep.c initialization of some arrays whose initialization |
| assumed ASCII; #define Table_size in sysdep.h rather than using |
| hard-coded 256 in allocating arrays of size 1 << (bits/byte). |
| |
| Thu Apr 19 08:13:21 EDT 1990: |
| Warn when escapes would make Hollerith extend beyond statement end. |
| Omit max() definition from misc.c (should be invisible except on |
| systems that erroneously #define max in stdlib.h). |
| |
| Mon Apr 23 22:24:51 EDT 1990: |
| When producing default-style C (no -A or -C++), cast switch |
| expressions to (int). |
| Move "-lF77 -lI77 -lm -lc" to link_msg, defined in sysdep.c . |
| Add #define scrub(x) to sysdep.h, with invocations in format.c and |
| formatdata.c, so that people who have systems like VMS that would |
| otherwise create multiple versions of intermediate files can |
| #define scrub(x) unlink(x) |
| |
| Tue Apr 24 18:28:36 EDT 1990: |
| Pass string lengths once rather than twice to a function of character |
| arguments involved in comparison of character strings of length 1. |
| |
| Fri Apr 27 13:11:52 EDT 1990: |
| Fix bug that made f2c gag on concatenations involving char(...) on |
| some systems. |
| |
| Sat Apr 28 23:20:16 EDT 1990: |
| Fix control-stack bug in |
| if(...) then |
| else if (complicated condition) |
| else |
| endif |
| (where the complicated condition causes assignment to an auxiliary |
| variable, e.g., max(a*b,c)). |
| |
| Mon Apr 30 13:30:10 EDT 1990: |
| Change fillers for DATA with holes from substructures to arrays |
| (in an attempt to make things work right with C compilers that have |
| funny padding rules for substructures, e.g., Sun C compilers). |
| Minor cleanup of exec.c (should not affect generated C). |
| |
| Mon Apr 30 23:13:51 EDT 1990: |
| Fix bug in handling return values of functions having multiple |
| entry points of differing return types. |
| |
| Sat May 5 01:45:18 EDT 1990: |
| Fix type inference bug in |
| subroutine foo(x) |
| call goo(x) |
| end |
| subroutine goo(i) |
| i = 3 |
| end |
| Instead of warning of inconsistent calling sequences for goo, |
| f2c was simply making i a real variable; now i is correctly |
| typed as an integer variable, and f2c issues an error message. |
| Adjust error messages issued at end of declarations so they |
| don't blame the first executable statement. |
| |
| Sun May 6 01:29:07 EDT 1990: |
| Fix bug in -P and -Ps: warn when the definition of a subprogram adds |
| information that would change prototypes or previous declarations. |
| |
| Thu May 10 18:09:15 EDT 1990: |
| Fix further obscure bug with (default) -it: inconsistent calling |
| sequences and I/O statements could interact to cause a memory fault. |
| Example: |
| SUBROUTINE FOO |
| CALL GOO(' Something') ! Forgot integer first arg |
| END |
| SUBROUTINE GOO(IUNIT,MSG) |
| CHARACTER*(*)MSG |
| WRITE(IUNIT,'(1X,A)') MSG |
| END |
| |
| Fri May 11 16:49:11 EDT 1990: |
| Under -!c, do not delete any .c files (when there are errors). |
| Avoid dereferencing 0 when a fatal error occurs while reading |
| Fortran on stdin. |
| |
| Wed May 16 18:24:42 EDT 1990: |
| f2c.ps made available. |
| |
| Mon Jun 4 12:53:08 EDT 1990: |
| Diagnose I/O units of invalid type. |
| Add specific error msg about dummy arguments in common. |
| |
| Wed Jun 13 12:43:17 EDT 1990: |
| Under -A, supply a missing "[1]" for CHARACTER*1 variables that appear |
| both in a DATA statement and in either COMMON or EQUIVALENCE. |
| |
| Mon Jun 18 16:58:31 EDT 1990: |
| Trivial updates to f2c.ps . ("Fortran 8x" --> "Fortran 90"; omit |
| "(draft)" from "(draft) ANSI C".) |
| |
| Tue Jun 19 07:36:32 EDT 1990: |
| Fix incorrect code generated for ELSE IF(expression involving |
| function call passing non-constant substring). |
| Under -h, preserve the property that strings are null-terminated |
| where possible. |
| Remove spaces between # and define in lex.c output.c parse.h . |
| |
| Mon Jun 25 07:22:59 EDT 1990: |
| Minor tweak to makefile to reduce unnecessary recompilations. |
| |
| Tue Jun 26 11:49:53 EDT 1990: |
| Fix unintended truncation of some integer constants on machines |
| where casting a long to (int) may change the value. E.g., when f2c |
| ran on machines with 16-bit ints, "i = 99999" was being translated |
| to "i = -31073;". |
| |
| Wed Jun 27 11:05:32 EDT 1990: |
| Arrange for CHARACTER-valued PARAMETERs to honor their length |
| specifications. Allow CHAR(nn) in expressions defining such PARAMETERs. |
| |
| Fri Jul 20 09:17:30 EDT 1990: |
| Avoid dereferencing 0 when a FORMAT statement has no label. |
| |
| Thu Jul 26 11:09:39 EDT 1990: |
| Remarks about VOID and binread,binwrite added to README. |
| Tweaks to parse_args: should be invisible unless your compiler |
| complained at (short)*store. |
| |
| Thu Aug 2 02:07:58 EDT 1990: |
| f2c.ps: change the first line of page 5 from |
| include stuff |
| to |
| include 'stuff' |
| |
| Tue Aug 14 13:21:24 EDT 1990: |
| libi77: libI77 adjusted to treat tabs as spaces in list input. |
| |
| Fri Aug 17 07:24:53 EDT 1990: |
| libi77: libI77 adjusted so a blank='ZERO' clause (upper case Z) |
| in an open of a currently open file works right. |
| |
| Tue Aug 28 01:56:44 EDT 1990: |
| Fix bug in warnings of inconsistent calling sequences: if an |
| argument to a subprogram was never referenced, then a previous |
| invocation of the subprogram (in the same source file) that |
| passed something of the wrong type for that argument did not |
| elicit a warning message. |
| |
| Thu Aug 30 09:46:12 EDT 1990: |
| libi77: prevent embedded blanks in list output of complex values; |
| omit exponent field in list output of values of magnitude between |
| 10 and 1e8; prevent writing stdin and reading stdout or stderr; |
| don't close stdin, stdout, or stderr when reopening units 5, 6, 0. |
| |
| Tue Sep 4 12:30:57 EDT 1990: |
| Fix bug in C emitted under -I2 or -i2 for INTEGER*4 FUNCTION. |
| Warn of missing final END even if there are previous errors. |
| |
| Fri Sep 7 13:55:34 EDT 1990: |
| Remark about "make xsum.out" and "make f2c" added to README. |
| |
| Tue Sep 18 23:50:01 EDT 1990: |
| Fix null dereference (and, on some systems, writing of bogus *_com.c |
| files) under -ec or -e1c when a prototype file (*.p or *.P) describes |
| COMMON blocks that do not appear in the Fortran source. |
| libi77: |
| Add some #ifdef lines (#ifdef MSDOS, #ifndef MSDOS) to avoid |
| references to stat and fstat on non-UNIX systems. |
| On UNIX systems, add component udev to unit; decide that old |
| and new files are the same iff both the uinode and udev components |
| of unit agree. |
| When an open stmt specifies STATUS='OLD', use stat rather than |
| access (on UNIX systems) to check the existence of the file (in case |
| directories leading to the file have funny permissions and this is |
| a setuid or setgid program). |
| |
| Thu Sep 27 16:04:09 EDT 1990: |
| Supply missing entry for Impldoblock in blksize array of cpexpr |
| (in expr.c). No examples are known where this omission caused trouble. |
| |
| Tue Oct 2 22:58:09 EDT 1990: |
| libf77: test signal(...) == SIG_IGN rather than & 01 in main(). |
| libi77: adjust rewind.c so two successive rewinds after a write |
| don't clobber the file. |
| |
| Thu Oct 11 18:00:14 EDT 1990: |
| libi77: minor cleanups: add #include "fcntl.h" to endfile.c, err.c, |
| open.c; adjust g_char in util.c for segmented memories; in f_inqu |
| (inquire.c), define x appropriately when MSDOS is defined. |
| |
| Mon Oct 15 20:02:11 EDT 1990: |
| Add #ifdef MSDOS pointer adjustments to mem.c; treat NAME= as a |
| synonym for FILE= in OPEN statements. |
| |
| Wed Oct 17 16:40:37 EDT 1990: |
| libf77, libi77: minor cleanups: _cleanup() and abort() invocations |
| replaced by invocations of sig_die in main.c; some error messages |
| previously lost in buffers will now appear. |
| |
| Mon Oct 22 16:11:27 EDT 1990: |
| libf77: separate sig_die from main (for folks who don't want to use |
| the main in libF77). |
| libi77: minor tweak to comments in README. |
| |
| Fri Nov 2 13:49:35 EST 1990: |
| Use two underscores rather than one in generated temporary variable |
| names to avoid conflict with COMMON names. f2c.ps updated to reflect |
| this change and the NAME= extension introduced 15 Oct. |
| Repair a rare memory fault in io.c . |
| |
| Mon Nov 5 16:43:55 EST 1990: |
| libi77: changes to open.c (and err.c): complain if an open stmt |
| specifies new= and the file already exists (as specified by Fortrans 77 |
| and 90); allow file= to be omitted in open stmts and allow |
| status='replace' (Fortran 90 extensions). |
| |
| Fri Nov 30 10:10:14 EST 1990: |
| Adjust malloc.c for unusual systems whose sbrk() can return values |
| not properly aligned for doubles. |
| Arrange for slightly more helpful and less repetitive warnings for |
| non-character variables initialized with character data; these warnings |
| are (still) suppressed by -w66. |
| |
| Fri Nov 30 15:57:59 EST 1990: |
| Minor tweak to README (about changing VOID in f2c.h). |
| |
| Mon Dec 3 07:36:20 EST 1990: |
| Fix spelling of "character" in f2c.1t. |
| |
| Tue Dec 4 09:48:56 EST 1990: |
| Remark about link_msg and libf2c added to f2c/README. |
| |
| Thu Dec 6 08:33:24 EST 1990: |
| Under -U, render label nnn as L_nnn rather than Lnnn. |
| |
| Fri Dec 7 18:05:00 EST 1990: |
| Add more names from f2c.h (e.g. integer, real) to the c_keywords |
| list of names to which an underscore is appended to avoid confusion. |
| |
| Mon Dec 10 19:11:15 EST 1990: |
| Minor tweaks to makefile (./xsum) and README (binread/binwrite). |
| libi77: a few modifications for POSIX systems; meant to be invisible |
| elsewhere. |
| |
| Sun Dec 16 23:03:16 EST 1990: |
| Fix null dereference caused by unusual erroneous input, e.g. |
| call foo('abc') |
| end |
| subroutine foo(msg) |
| data n/3/ |
| character*(*) msg |
| end |
| (Subroutine foo is illegal because the character statement comes after a |
| data statement.) |
| Use decimal rather than hex constants in xsum.c (to prevent |
| erroneous warning messages about constant overflow). |
| |
| Mon Dec 17 12:26:40 EST 1990: |
| Fix rare extra underscore in character length parameters passed |
| for multiple entry points. |
| |
| Wed Dec 19 17:19:26 EST 1990: |
| Allow generation of C despite error messages about bad alignment |
| forced by equivalence. |
| Allow variable-length concatenations in I/O statements, such as |
| open(3, file=bletch(1:n) // '.xyz') |
| |
| Fri Dec 28 17:08:30 EST 1990: |
| Fix bug under -p with formats and internal I/O "units" in COMMON, |
| as in |
| COMMON /FIGLEA/F |
| CHARACTER*20 F |
| F = '(A)' |
| WRITE (*,FMT=F) 'Hello, world!' |
| END |
| |
| Tue Jan 15 12:00:24 EST 1991: |
| Fix bug when two equivalence groups are merged, the second with |
| nonzero offset, and the result is then merged into a common block. |
| Example: |
| INTEGER W(3), X(3), Y(3), Z(3) |
| COMMON /ZOT/ Z |
| EQUIVALENCE (W(1),X(1)), (X(2),Y(1)), (Z(3),X(1)) |
| ***** W WAS GIVEN THE WRONG OFFSET |
| Recognize Fortran 90's optional NML= in NAMELIST READs and WRITEs. |
| (Currently NML= and FMT= are treated as synonyms -- there's no |
| error message if, e.g., NML= specifies a format.) |
| libi77: minor adjustment to allow internal READs from character |
| string constants in read-only memory. |
| |
| Fri Jan 18 22:56:15 EST 1991: |
| Add comment to README about needing to comment out the typedef of |
| size_t in sysdep.h on some systems, e.g. Sun 4.1. |
| Fix misspelling of "statement" in an error message in lex.c |
| |
| Wed Jan 23 00:38:48 EST 1991: |
| Allow hex, octal, and binary constants to have the qualifying letter |
| (z, x, o, or b) either before or after the quoted string containing the |
| digits. For now this change will not be reflected in f2c.ps . |
| |
| Tue Jan 29 16:23:45 EST 1991: |
| Arrange for character-valued statement functions to give results of |
| the right length (that of the statement function's name). |
| |
| Wed Jan 30 07:05:32 EST 1991: |
| More tweaks for character-valued statement functions: an error |
| check and an adjustment so a right-hand side of nonconstant length |
| (e.g., a substring) is handled right. |
| |
| Wed Jan 30 09:49:36 EST 1991: |
| Fix p1_head to avoid printing (char *)0 with %s. |
| |
| Thu Jan 31 13:53:44 EST 1991: |
| Add a test after the cleanup call generated for I/O statements with |
| ERR= or END= clauses to catch the unlikely event that the cleanup |
| routine encounters an error. |
| |
| Mon Feb 4 08:00:58 EST 1991: |
| Minor cleanup: omit unneeded jumps and labels from code generated for |
| some NAMELIST READs and WRITEs with IOSTAT=, ERR=, and/or END=. |
| |
| Tue Feb 5 01:39:36 EST 1991: |
| Change Mktemp to mktmp (for the benefit of systems so brain-damaged |
| that they do not distinguish case in external names -- and that for |
| some reason want to load mktemp). Try to get xsum0.out right this |
| time (it somehow didn't get updated on 4 Feb. 1991). |
| Add note to libi77/README about adjusting the interpretation of |
| RECL= specifiers in OPENs for direct unformatted I/O. |
| |
| Thu Feb 7 17:24:42 EST 1991: |
| New option -r casts values of REAL functions, including intrinsics, |
| to REAL. This only matters for unportable code like |
| real r |
| r = asin(1.) |
| if (r .eq. asin(1.)) ... |
| [The behavior of such code varies with the Fortran compiler used -- |
| and sometimes is affected by compiler options.] For now, the man page |
| at the end of f2c.ps is the only part of f2c.ps that reflects this new |
| option. |
| |
| Fri Feb 8 18:12:51 EST 1991: |
| Cast pointer differences passed as arguments to the appropriate type. |
| This matters, e.g., with MSDOS compilers that yield a long pointer |
| difference but have int == short. |
| Disallow nonpositive dimensions. |
| |
| Fri Feb 15 12:24:15 EST 1991: |
| Change %d to %ld in sprintf call in putpower in putpcc.c. |
| Free more memory (e.g. allowing translation of larger Fortran |
| files under MS-DOS). |
| Recognize READ (character expression) and WRITE (character expression) |
| as formatted I/O with the format given by the character expression. |
| Update year in Notice. |
| |
| Sat Feb 16 00:42:32 EST 1991: |
| Recant recognizing WRITE(character expression) as formatted output |
| -- Fortran 77 is not symmetric in its syntax for READ and WRITE. |
| |
| Mon Mar 4 15:19:42 EST 1991: |
| Fix bug in passing the real part of a complex argument to an intrinsic |
| function. Omit unneeded parentheses in nested calls to intrinsics. |
| Example: |
| subroutine foo(x, y) |
| complex y |
| x = exp(sin(real(y))) + exp(imag(y)) |
| end |
| |
| Fri Mar 8 15:05:42 EST 1991: |
| Fix a comment in expr.c; omit safstrncpy.c (which had bugs in |
| cases not used by f2c). |
| |
| Wed Mar 13 02:27:23 EST 1991: |
| Initialize firstmemblock->next in mem_init in mem.c . [On most |
| systems it was fortuituously 0, but with System V, -lmalloc could |
| trip on this missed initialization.] |
| |
| Wed Mar 13 11:47:42 EST 1991: |
| Fix a reference to freed memory. |
| |
| Wed Mar 27 00:42:19 EST 1991: |
| Fix a memory fault caused by such illegal Fortran as |
| function foo |
| x = 3 |
| logical foo ! declaration among executables |
| foo=.false. ! used to suffer memory fault |
| end |
| |
| Fri Apr 5 08:30:31 EST 1991: |
| Fix loss of % in some format expressions, e.g. |
| write(*,'(1h%)') |
| Fix botch introduced 27 March 1991 that caused subroutines with |
| multiple entry points to have extraneous declarations of ret_val. |
| |
| Fri Apr 5 12:44:02 EST 1991 |
| Try again to omit extraneous ret_val declarations -- this morning's |
| fix was sometimes wrong. |
| |
| Mon Apr 8 13:47:06 EDT 1991: |
| Arrange for s_rnge to have the right prototype under -A -C . |
| |
| Wed Apr 17 13:36:03 EDT 1991: |
| New fatal error message for apparent invocation of a recursive |
| statement function. |
| |
| Thu Apr 25 15:13:37 EDT 1991: |
| F2c and libi77 adjusted so NAMELIST works with -i2. (I forgot |
| about -i2 when adding NAMELIST.) This required a change to f2c.h |
| (that only affects NAMELIST I/O under -i2.) Man-page description of |
| -i2 adjusted to reflect that -i2 stores array lengths in short ints. |
| |
| Fri Apr 26 02:54:41 EDT 1991: |
| Libi77: fix some bugs in NAMELIST reading of multi-dimensional arrays |
| (file rsne.c). |
| |
| Thu May 9 02:13:51 EDT 1991: |
| Omit a trailing space in expr.c (could cause a false xsum value if |
| a mailer drops the trailing blank). |
| |
| Thu May 16 13:14:59 EDT 1991: |
| Libi77: increase LEFBL in lio.h to overcome a NeXT bug. |
| Tweak for compilers that recognize "nested" comments: inside comments, |
| turn /* into /+ (as well as */ into +/). |
| |
| Sat May 25 11:44:25 EDT 1991: |
| libf77: s_rnge: declare line long int rather than int. |
| |
| Fri May 31 07:51:50 EDT 1991: |
| libf77: system_: officially return status. |
| |
| Mon Jun 17 16:52:53 EDT 1991: |
| Minor tweaks: omit unnecessary declaration of strcmp (that caused |
| trouble on a system where strcmp was a macro) from misc.c; add |
| SHELL = /bin/sh to makefiles. |
| Fix a dereference of null when a CHARACTER*(*) declaration appears |
| (illegally) after DATA. Complain only once per subroutine about |
| declarations appearing after DATA. |
| |
| Mon Jul 1 00:28:13 EDT 1991: |
| Add test and error message for illegal use of subroutine names, e.g. |
| SUBROUTINE ZAP(A) |
| ZAP = A |
| END |
| |
| Mon Jul 8 21:49:20 EDT 1991: |
| Issue a warning about things like |
| integer i |
| i = 'abc' |
| (which is treated as i = ichar('a')). [It might be nice to treat 'abc' |
| as an integer initialized (in a DATA statement) with 'abc', but |
| other matters have higher priority.] |
| Render |
| i = ichar('A') |
| as |
| i = 'A'; |
| rather than |
| i = 65; |
| (which assumes ASCII). |
| |
| Fri Jul 12 07:41:30 EDT 1991: |
| Note added to README about erroneous definitions of __STDC__ . |
| |
| Sat Jul 13 13:38:54 EDT 1991: |
| Fix bugs in double type convesions of complex values, e.g. |
| sngl(real(...)) or dble(real(...)) (where ... is complex). |
| |
| Mon Jul 15 13:21:42 EDT 1991: |
| Fix bug introduced 8 July 1991 that caused erroneous warnings |
| "ichar([first char. of] char. string) assumed for conversion to numeric" |
| when a subroutine had an array of character strings as an argument. |
| |
| Wed Aug 28 01:12:17 EDT 1991: |
| Omit an unused function in format.c, an unused variable in proc.c . |
| Under -r8, promote complex to double complex (as the man page claims). |
| |
| Fri Aug 30 17:19:17 EDT 1991: |
| f2c.ps updated: slightly expand description of intrinsics and,or,xor, |
| not; add mention of intrinsics lshift, rshift; add note about f2c |
| accepting Fortran 90 inline comments (starting with !); update Cobalt |
| Blue address. |
| |
| Tue Sep 17 07:17:33 EDT 1991: |
| libI77: err.c and open.c modified to use modes "rb" and "wb" |
| when (f)opening unformatted files; README updated to point out |
| that it may be necessary to change these modes to "r" and "w" |
| on some non-ANSI systems. |
| |
| Tue Oct 15 10:25:49 EDT 1991: |
| Minor tweaks that make some PC compilers happier: insert some |
| casts, add args to signal functions. |
| Change -g to emit uncommented #line lines -- and to emit more of them; |
| update fc, f2c.1, f2c.1t, f2c.ps to reflect this. |
| Change uchar to Uchar in xsum.c . |
| Bring gram.c up to date. |
| |
| Thu Oct 17 09:22:05 EDT 1991: |
| libi77: README, fio.h, sue.c, uio.c changed so the length field |
| in unformatted sequential records has type long rather than int |
| (unless UIOLEN_int is #defined). This is for systems where sizeof(int) |
| can vary, depending on the compiler or compiler options. |
| |
| Thu Oct 17 13:42:59 EDT 1991: |
| libi77: inquire.c: when MSDOS is defined, don't strcmp units[i].ufnm |
| when it is NULL. |
| |
| Fri Oct 18 15:16:00 EDT 1991: |
| Correct xsum0.out in "all from f2c/src" (somehow botched on 15 Oct.). |
| |
| Tue Oct 22 18:12:56 EDT 1991: |
| Fix memory fault when a character*(*) argument is used (illegally) |
| as a dummy variable in the definition of a statement function. (The |
| memory fault occurred when the statement function was invoked.) |
| Complain about implicit character*(*). |
| |
| Thu Nov 14 08:50:42 EST 1991: |
| libi77: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c; this change |
| should be invisible unless you're running a brain-damaged system. |
| |
| Mon Nov 25 19:04:40 EST 1991: |
| libi77: correct botches introduced 17 Oct. 1991 and 14 Nov. 1991 |
| (change uint to Uint in lwrite.c; other changes that only matter if |
| sizeof(int) != sizeof(long)). |
| Add a more meaningful error message when bailing out due to an attempt |
| to invoke a COMMON variable as a function. |
| |
| Sun Dec 1 19:29:24 EST 1991: |
| libi77: uio.c: add test for read failure (seq. unformatted reads); |
| adjust an error return from EOF to off end of record. |
| |
| Tue Dec 10 17:42:28 EST 1991: |
| Add tests to prevent memory faults with bad uses of character*(*). |
| |
| Thu Dec 12 11:24:41 EST 1991: |
| libi77: fix bug with internal list input that caused the last |
| character of each record to be ignored; adjust error message in |
| internal formatted input from "end-of-file" to "off end of record" |
| if the format specifies more characters than the record contains. |
| |
| Wed Dec 18 17:48:11 EST 1991: |
| Fix bug in translating nonsensical ichar invocations involving |
| concatenations. |
| Fix bug in passing intrinsics lle, llt, lge, lgt as arguments; |
| hl_le was being passed rather than l_le, etc. |
| libf77: adjust length parameters from long to ftnlen, for |
| compiling with f2c_i2 defined. |
| |
| Sat Dec 21 15:30:57 EST 1991: |
| Allow DO nnn ... to end with an END DO statement labelled nnn. |
| |
| Tue Dec 31 13:53:47 EST 1991: |
| Fix bug in handling dimension a(n**3,2) -- pow_ii was called |
| incorrectly. |
| Fix bug in translating |
| subroutine x(abc,n) |
| character abc(n) |
| write(abc,'(i10)') 123 |
| end |
| (omitted declaration and initialiation of abc_dim1). |
| Complain about dimension expressions of such invalid types |
| as complex and logical. |
| |
| Fri Jan 17 11:54:20 EST 1992: |
| Diagnose some illegal uses of main program name (rather than |
| memory faulting). |
| libi77: (1) In list and namelist input, treat "r* ," and "r*," |
| alike (where r is a positive integer constant), and fix a bug in |
| handling null values following items with repeat counts (e.g., |
| 2*1,,3). (2) For namelist reading of a numeric array, allow a new |
| name-value subsequence to terminate the current one (as though the |
| current one ended with the right number of null values). |
| (3) [lio.h, lwrite.c]: omit insignificant zeros in list and namelist |
| output. (Compile with -DOld_list_output to get the old behavior.) |
| |
| Sat Jan 18 15:58:01 EST 1992: |
| libi77: make list output consistent with F format by printing .1 |
| rather than 0.1 (introduced yesterday). |
| |
| Wed Jan 22 08:32:43 EST 1992: |
| libi77: add comment to README pointing out preconnection of |
| Fortran units 5, 6, 0 to stdin, stdout, stderr (respectively). |
| |
| Mon Feb 3 11:57:53 EST 1992: |
| libi77: fix namelist read bug that caused the character following |
| a comma to be ignored. |
| |
| Fri Feb 28 01:04:26 EST 1992: |
| libf77: fix buggy z_sqrt.c (double precision square root), which |
| misbehaved for arguments in the southwest quadrant. |
| |
| Thu Mar 19 15:05:18 EST 1992: |
| Fix bug (introduced 17 Jan 1992) in handling multiple entry points |
| of differing types (with implicitly typed entries appearing after |
| the first executable statement). |
| Fix memory fault in the following illegal Fortran: |
| double precision foo(i) |
| * illegal: above should be "double precision function foo(i)" |
| foo = i * 3.2 |
| entry moo(i) |
| end |
| Note about ANSI_Libraries (relevant, e.g., to IRIX 4.0.1 and AIX) |
| added to README. |
| Abort zero divides during constant simplification. |
| |
| Sat Mar 21 01:27:09 EST 1992: |
| Tweak ckalloc (misc.c) for systems where malloc(0) = 0; this matters |
| for subroutines with multiple entry points but no arguments. |
| Add "struct memblock;" to init.c (irrelevant to most compilers). |
| |
| Wed Mar 25 13:31:05 EST 1992: |
| Fix bug with IMPLICIT INTEGER*4(...): under -i2 or -I2, the *4 was |
| ignored. |
| |
| Tue May 5 09:53:55 EDT 1992: |
| Tweaks to README; e.g., ANSI_LIbraries changed to ANSI_Libraries . |
| |
| Wed May 6 23:49:07 EDT 1992 |
| Under -A and -C++, have subroutines return 0 (even if they have |
| no * arguments). |
| Adjust libi77 (rsne.c and lread.c) for systems where ungetc is |
| a macro. Tweak lib[FI]77/makefile to use unique intermediate file |
| names (for parallel makes). |
| |
| Tue May 19 09:03:05 EDT 1992: |
| Adjust libI77 to make err= work with internal list and formatted I/O. |
| |
| Sat May 23 18:17:42 EDT 1992: |
| Under -A and -C++, supply "return 0;" after the code generated for |
| a STOP statement -- the C compiler doesn't know that s_stop won't |
| return. |
| New (mutually exclusive) options: |
| -f treats all input lines as free-format lines, |
| honoring text that appears after column 72 |
| and not padding lines shorter than 72 characters |
| with blanks (which matters if a character string |
| is continued across 2 or more lines). |
| -72 treats text appearing after column 72 as an error. |
| |
| Sun May 24 09:45:37 EDT 1992: |
| Tweak description of -f in f2c.1 and f2c.1t; update f2c.ps . |
| |
| Fri May 29 01:17:15 EDT 1992: |
| Complain about externals used as variables. Example |
| subroutine foo(a,b) |
| external b |
| a = a*b ! illegal use of b; perhaps should be b() |
| end |
| |
| Mon Jun 15 11:15:27 EDT 1992: |
| Fix bug in handling namelists with names that have underscores. |
| |
| Sat Jun 27 17:30:59 EDT 1992: |
| Under -A and -C++, end Main program aliases with "return 0;". |
| Under -A and -C++, use .P files and usage in previous subprograms |
| in the current file to give prototypes for functions declared EXTERNAL |
| but not invoked. |
| Fix memory fault under -d1 -P . |
| Under -A and -C++, cast arguments to the right types in calling |
| a function that has been defined in the current file or in a .P file. |
| Fix bug in handling multi-dimensional arrays with array references |
| in their leading dimensions. |
| Fix bug in the intrinsic cmplx function when the first argument |
| involves an expression for which f2c generates temporary variables, |
| e.g. cmplx(abs(real(a)),1.) . |
| |
| Sat Jul 18 07:36:58 EDT 1992: |
| Fix buglet with -e1c (invisible on most systems) temporary file |
| f2c_functions was unlinked before being closed. |
| libf77: fix bugs in evaluating m**n for integer n < 0 and m an |
| integer different from 1 or a real or double precision 0. |
| Catch SIGTRAP (to print "Trace trap" before aborting). Programs |
| that previously erroneously computed 1 for 0**-1 may now fault. |
| Relevant routines: main.c pow_di.c pow_hh.c pow_ii.c pow_ri.c . |
| |
| Sat Jul 18 08:40:10 EDT 1992: |
| libi77: allow namelist input to end with & (e.g. &end). |
| |
| Thu Jul 23 00:14:43 EDT 1992 |
| Append two underscores rather than one to C keywords used as |
| local variables to avoid conflicts with similarly named COMMON blocks. |
| |
| Thu Jul 23 11:20:55 EDT 1992: |
| libf77, libi77 updated to assume ANSI prototypes unless KR_headers |
| is #defined. |
| libi77 now recognizes a Z format item as in Fortran 90; |
| the implementation assumes 8-bit bytes and botches character strings |
| on little-endian machines (by printing their bytes from right to |
| left): expect this bug to persist; fixing it would require a |
| change to the I/O calling sequences. |
| |
| Tue Jul 28 15:18:33 EDT 1992: |
| libi77: insert missed "#ifdef KR_headers" lines around getnum |
| header in rsne.c. Version not updated. |
| |
| NOTE: "index from f2c" now ends with current timestamps of files in |
| "all from f2c/src", sorted by time. To bring your source up to date, |
| obtain source files with a timestamp later than the time shown in your |
| version.c. |
| |
| Fri Aug 14 08:07:09 EDT 1992: |
| libi77: tweak wrt_E in wref.c to avoid signing NaNs. |
| |
| Sun Aug 23 19:05:22 EDT 1992: |
| fc: supply : after O in getopt invocation (for -O1 -O2 -O3). |
| |
| Mon Aug 24 18:37:59 EDT 1992: |
| Recant above tweak to fc: getopt is dumber than I thought; |
| it's necessary to say -O 1 (etc.). |
| libF77/README: add comments about ABORT, ERF, DERF, ERFC, DERFC, |
| GETARG, GETENV, IARGC, SIGNAL, and SYSTEM. |
| |
| Tue Oct 27 01:57:42 EST 1992: |
| libf77, libi77: |
| 1. Fix botched indirection in signal_.c. |
| 2. Supply missing l_eof = 0 assignment to s_rsne() in rsne.c (so |
| end-of-file on other files won't confuse namelist reads of external |
| files). |
| 3. Prepend f__ to external names that are only of internal |
| interest to lib[FI]77. |
| |
| Thu Oct 29 12:37:18 EST 1992: |
| libf77: Fix botch in signal_.c when KR_headers is #defined; |
| add CFLAGS to makefile. |
| libi77: trivial change to makefile for consistency with |
| libF77/makefile. |
| |
| Wed Feb 3 02:05:16 EST 1993: |
| Recognize types INTEGER*1, LOGICAL*1, LOGICAL*2, INTEGER*8. |
| INTEGER*8 is not well tested and will only work reasonably on |
| systems where int = 4 bytes, long = 8 bytes; on such systems, |
| you'll have to modify f2c.h appropriately, changing integer |
| from long to int and adding typedef long longint. You'll also |
| have to compile libI77 with Allow_TYQUAD #defined and adjust |
| libF77/makefile to compile pow_qq.c. In the f2c source, changes |
| for INTEGER*8 are delimited by #ifdef TYQUAD ... #endif. You |
| can omit the INTEGER*8 changes by compiling with NO_TYQUAD |
| #defined. Otherwise, the new command-line option -!i8 |
| disables recognition of INTEGER*8. |
| libf77: add pow_qq.c |
| libi77: add #ifdef Allow_TYQUAD stuff. Changes for INTEGER*1, |
| LOGICAL*1, and LOGICAL*2 came last 23 July 1992. Fix bug in |
| backspace (that only bit when the last character of the second |
| or subsequent buffer read was the previous newline). Guard |
| against L_tmpnam being too small in endfile.c. For MSDOS, |
| close and reopen files when copying to truncate. Lengthen |
| LINTW (buffer size in lwrite.c). |
| Add \ to the end of #define lines that get broken. |
| Fix bug in handling NAMELIST of items in EQUIVALENCE. |
| Under -h (or -hd), convert Hollerith to integer in general expressions |
| (e.g., assignments), not just when they're passed as arguments, and |
| blank-pad rather than 0-pad the Hollerith to a multiple of |
| sizeof(integer) or sizeof(doublereal). |
| Add command-line option -s, which instructs f2c preserve multi- |
| dimensional subscripts (by emitting and using appropriate #defines). |
| Fix glitch (with default type inferences) in examples like |
| call foo('abc') |
| end |
| subroutine foo(goo) |
| end |
| This gave two warning messages: |
| Warning on line 4 of y.f: inconsistent calling sequences for foo: |
| here 1, previously 2 args and string lengths. |
| Warning on line 4 of y.f: inconsistent calling sequences for foo: |
| here 2, previously 1 args and string lengths. |
| Now the second Warning is suppressed. |
| Complain about all inconsistent arguments, not just the first. |
| Switch to automatic creation of "all from f2c/src". For folks |
| getting f2c source via ftp, this means f2c/src/all.Z is now an |
| empty file rather than a bundle. |
| Separate -P and -A: -P no longer implies -A. |
| |
| Thu Feb 4 00:32:20 EST 1993: |
| Fix some glitches (introduced yesterday) with -h . |
| |
| Fri Feb 5 01:40:38 EST 1993: |
| Fix bug in types conveyed for namelists (introduced 3 Feb. 1993). |
| |
| Fri Feb 5 21:26:43 EST 1993: |
| libi77: tweaks to NAMELIST and open (after comments by Harold |
| Youngren): |
| 1. Reading a ? instead of &name (the start of a namelist) causes |
| the namelist being sought to be written to stdout (unit 6); |
| to omit this feature, compile rsne.c with -DNo_Namelist_Questions. |
| 2. Reading the wrong namelist name now leads to an error message |
| and an attempt to skip input until the right namelist name is found; |
| to omit this feature, compile rsne.c with -DNo_Bad_Namelist_Skip. |
| 3. Namelist writes now insert newlines before each variable; to omit |
| this feature, compile xwsne.c with -DNo_Extra_Namelist_Newlines. |
| 4. For OPEN of sequential files, ACCESS='APPEND' (or |
| access='anything else starting with "A" or "a"') causes the file to |
| be positioned at end-of-file, so a write will append to the file. |
| (This is nonstandard, but does not require modifying data |
| structures.) |
| |
| Mon Feb 8 14:40:37 EST 1993: |
| Increase number of continuation lines allowed from 19 to 99, |
| and allow changing this limit with -NC (e.g. -NC200 for 200 lines). |
| Treat control-Z (at the beginning of a line) as end-of-file: see |
| the new penultimate paragraph of README. |
| Fix a rarely seen glitch that could make an error messages to say |
| "line 0". |
| |
| Tue Feb 9 02:05:40 EST 1993 |
| libi77: change some #ifdef MSDOS lines to #ifdef NON_UNIX_STDIO, |
| and, in err.c under NON_UNIX_STDIO, avoid close(creat(name,0666)) |
| when the unit has another file descriptor for name. |
| |
| Tue Feb 9 17:12:49 EST 1993 |
| libi77: more tweaks for NON_UNIX_STDIO: use stdio routines |
| rather than open, close, creat, seek, fdopen (except for f__isdev). |
| |
| Fri Feb 12 15:49:33 EST 1993 |
| Update src/gram.c (which was forgotten in the recent updates). |
| Most folks regenerate it anyway (wity yacc or bison). |
| |
| Thu Mar 4 17:07:38 EST 1993 |
| Increase default max labels in computed gotos and alternate returns |
| to 257, and allow -Nl1234 to specify this number. |
| Tweak put.c to check p->tag == TADDR in realpart() and imagpart(). |
| Adjust fc script to allow .r (RATFOR) files and -C (check subscripts). |
| Avoid declaring strchr in niceprintf.c under -DANSI_Libraries . |
| gram.c updated again. |
| libi77: err.c, open.c: take declaration of fdopen from rawio.h. |
| |
| Sat Mar 6 07:09:11 EST 1993 |
| libi77: uio.c: adjust off-end-of-record test for sequential |
| unformatted reads to respond to err= rather than end= . |
| |
| Sat Mar 6 16:12:47 EST 1993 |
| Treat scalar arguments of the form (v) and v+0, where v is a variable, |
| as expressions: assign to a temporary variable, and pass the latter. |
| gram.c updated. |
| |
| Mon Mar 8 09:35:38 EST 1993 |
| "f2c.h from f2c" updated to add types logical1 and integer1 for |
| LOGICAL*1 and INTEGER*1. ("f2c.h from f2c" is supposed to be the |
| same as "f2c.h from f2c/src", which was updated 3 Feb. 1993.) |
| |
| Mon Mar 8 17:57:55 EST 1993 |
| Fix rarely seen bug that could cause strange casts in function |
| invocations (revealed by an example with msdos/f2c.exe). |
| msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). |
| |
| Fri Mar 12 12:37:01 EST 1993 |
| Fix bug with -s in handling subscripts involving min, max, and |
| complicated expressions requiring temporaries. |
| Fix bug in handling COMMONs that need padding by a char array. |
| msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). |
| |
| Fri Mar 12 17:16:16 EST 1993 |
| libf77, libi77: updated for compiling under C++. |
| |
| Mon Mar 15 16:21:37 EST 1993 |
| libi77: more minor tweaks (for -DKR_headers); Version.c not changed. |
| |
| Thu Mar 18 12:37:30 EST 1993 |
| Flag -r (for discarding carriage-returns on systems that end lines |
| with carriage-return/newline pairs, e.g. PCs) added to xsum, and |
| xsum.c converted to ANSI/ISO syntax (with K&R syntax available with |
| -DKR_headers). [When time permits, the f2c source will undergo a |
| similar conversion.] |
| libi77: tweaks to #includes in endfile.c, err.c, open.c, rawio.h; |
| Version.c not changed. |
| f2c.ps updated (to pick up revision of 2 Feb. 1993 to f2c.1). |
| |
| Fri Mar 19 09:19:26 EST 1993 |
| libi77: add (char *) casts to malloc and realloc invocations |
| in err.c, open.c; Version.c not changed. |
| |
| Tue Mar 30 07:17:15 EST 1993 |
| Fix bug introduced 6 March 1993: possible memory corruption when |
| loops in data statements involve constant subscripts, as in |
| DATA (GUNIT(1,I),I=0,14)/15*-1/ |
| |
| Tue Mar 30 16:17:42 EST 1993 |
| Fix bug with -s: (floating-point array item)*(complex item) |
| generates an _subscr() reference for the floating-point array, |
| but a #define for the _subscr() was omitted. |
| |
| Tue Apr 6 12:11:22 EDT 1993 |
| libi77: adjust error returns for formatted inputs to flush the current |
| input line when err= is specified. To restore the old behavior (input |
| left mid-line), either adjust the #definition of errfl in fio.h or omit |
| the invocation of f__doend in err__fl (in err.c). |
| |
| Tue Apr 6 13:30:04 EDT 1993 |
| Fix bug revealed in |
| subroutine foo(i) |
| call goo(int(i)) |
| end |
| which now passes a copy of i, rather than i itself. |
| |
| Sat Apr 17 11:41:02 EDT 1993 |
| Adjust appending of underscores to conform with f2c.ps ("A Fortran |
| to C Converter"): names that conflict with C keywords or f2c type |
| names now have just one underscore appended (rather than two); add |
| "integer1", "logical1", "longint" to the keyword list. |
| Append underscores to names that appear in EQUIVALENCE and are |
| component names in a structure declared in f2c.h, thus avoiding a |
| problem caused by the #defines emitted for equivalences. Example: |
| complex a |
| equivalence (i,j) |
| a = 1 ! a.i went awry because of #define i |
| j = 2 |
| write(*,*) a, i |
| end |
| Adjust line-breaking logic to avoid splitting very long constants |
| (and names). Example: |
| ! The next line starts with tab and thus is a free-format line. |
| a=.012345689012345689012345689012345689012345689012345689012345689012345689 |
| end |
| Omit extraneous "return 0;" from entry stubs emitted for multiple |
| entry points of type character, complex, or double complex. |
| |
| Sat Apr 17 14:35:05 EDT 1993 |
| Fix bug (introduced 4 Feb.) in separating -P from -A that kept f2c |
| from re-reading a .P file written without -A or -C++ describing a |
| routine with an external argument. [See the just-added note about |
| separating -P from -A in the changes above for 3 Feb. 1993.] |
| Fix bug (type UNKNOWN for V in the example below) revealed by |
| subroutine a() |
| external c |
| call b(c) |
| end |
| subroutine b(v) |
| end |
| |
| Sun Apr 18 19:55:26 EDT 1993 |
| Fix wrong calling sequence for mem() in yesterday's addition to |
| equiv.c . |
| |
| Wed Apr 21 17:39:46 EDT 1993 |
| Fix bug revealed in |
| |
| ASSIGN 10 TO L1 |
| GO TO 20 |
| 10 ASSIGN 30 TO L2 |
| STOP 10 |
| |
| 20 ASSIGN 10 TO L2 ! Bug here because 10 had been assigned |
| ! to another label, then defined. |
| GO TO L2 |
| 30 END |
| |
| Fri Apr 23 18:38:50 EDT 1993 |
| Fix bug with -h revealed in |
| CHARACTER*9 FOO |
| WRITE(FOO,'(I6)') 1 |
| WRITE(FOO,'(I6)') 2 ! struct icilist io___3 botched |
| END |
| |
| Tue Apr 27 16:08:28 EDT 1993 |
| Tweak to makefile: remove "size f2c". |
| |
| Tue May 4 23:48:20 EDT 1993 |
| libf77: tweak signal_ line of f2ch.add . |
| |
| Tue Jun 1 13:47:13 EDT 1993 |
| Fix bug introduced 3 Feb. 1993 in handling multiple entry |
| points with differing return types -- the postfix array in proc.c |
| needed a new entry for integer*8 (which resulted in wrong |
| Multitype suffixes for non-integral types). |
| For (default) K&R C, generate VOID rather than int functions for |
| functions of Fortran type character, complex, and double complex. |
| msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). |
| |
| Tue Jun 1 23:11:15 EDT 1993 |
| f2c.h: add Multitype component g and commented type longint. |
| proc.c: omit "return 0;" from stubs for complex and double complex |
| entries (when entries have multiple types); add test to avoid memory |
| fault with illegal combinations of entry types. |
| |
| Mon Jun 7 12:00:47 EDT 1993 |
| Fix memory fault in |
| common /c/ m |
| integer m(1) |
| data m(1)/1/, m(2)/2/ ! one too many initializers |
| end |
| msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). |
| |
| Fri Jun 18 13:55:51 EDT 1993 |
| libi77: change type of signal_ in f2ch.add; change type of il in |
| union Uint from long to integer (for machines like the DEC Alpha, |
| where integer should be the same as int). Version.c not changed. |
| Tweak gram.dcl and gram.head: add semicolons after some rules that |
| lacked them, and remove an extraneous semicolon. These changes are |
| completely transparent to our local yacc programs, but apparently |
| matter on some VMS systems. |
| |
| Wed Jun 23 01:02:56 EDT 1993 |
| Update "fc" shell script, and bring f2c.1 and f2c.1t up to date: |
| they're meant to be linked with (i.e., the same as) src/f2c.1 and |
| src/f2c.1t . [In the last update of f2c.1* (2 Feb. 1993), only |
| src/f2c.1 and src/f2c.1t got changed -- a mistake.] |
| |
| Wed Jun 23 09:04:31 EDT 1993 |
| libi77: fix bug in format reversions for internal writes. |
| Example: |
| character*60 lines(2) |
| write(lines,"('n =',i3,2(' more text',i3))") 3, 4, 5, 6 |
| write(*,*) 'lines(1) = ', lines(1) |
| write(*,*) 'lines(2) = ', lines(2) |
| end |
| gave an error message that began "iio: off end of record", rather |
| than giving the correct output: |
| |
| lines(1) = n = 3 more text 4 more text 5 |
| lines(2) = more text 6 more text |
| |
| Thu Aug 5 11:31:14 EDT 1993 |
| libi77: lread.c: fix bug in handling repetition counts for logical |
| data (during list or namelist input). Change struct f__syl to |
| struct syl (for buggy compilers). |
| |
| Sat Aug 7 16:05:30 EDT 1993 |
| libi77: lread.c (again): fix bug in namelist reading of incomplete |
| logical arrays. |
| Fix minor calling-sequence errors in format.c, output.c, putpcc.c: |
| should be invisible. |
| |
| Mon Aug 9 09:12:38 EDT 1993 |
| Fix erroneous cast under -A in translating |
| character*(*) function getc() |
| getc(2:3)=' ' !wrong cast in first arg to s_copy |
| end |
| libi77: lread.c: fix bug in namelist reading of an incomplete array |
| of numeric data followed by another namelist item whose name starts |
| with 'd', 'D', 'e', or 'E'. |
| |
| Fri Aug 20 13:22:10 EDT 1993 |
| Fix bug in do while revealed by |
| subroutine skdig (line, i) |
| character line*(*), ch*1 |
| integer i |
| logical isdigit |
| isdigit(ch) = ch.ge.'0' .and. ch.le.'9' |
| do while (isdigit(line(i:i))) ! ch__1[0] was set before |
| ! "while(...) {...}" |
| i = i + 1 |
| enddo |
| end |
| |
| Fri Aug 27 08:22:54 EDT 1993 |
| Add #ifdefs to avoid declaring atol when it is a macro; version.c |
| not updated. |
| |
| Wed Sep 8 12:24:26 EDT 1993 |
| libi77: open.c: protect #include "sys/..." with |
| #ifndef NON_UNIX_STDIO; Version date not changed. |
| |
| Thu Sep 9 08:51:21 EDT 1993 |
| Adjust "include" to interpret file names relative to the directory |
| of the file that contains the "include". |
| |
| Fri Sep 24 00:56:12 EDT 1993 |
| Fix offset error resulting from repeating the same equivalence |
| statement twice. Example: |
| real a(2), b(2) |
| equivalence (a(2), b(2)) |
| equivalence (a(2), b(2)) |
| end |
| Increase MAXTOKENLEN (to roughly the largest allowed by ANSI C). |
| |
| Mon Sep 27 08:55:09 EDT 1993 |
| libi77: endfile.c: protect #include "sys/types.h" with |
| #ifndef NON_UNIX_STDIO; Version.c not changed. |
| |
| Fri Oct 15 15:37:26 EDT 1993 |
| Fix rarely seen parsing bug illustrated by |
| subroutine foo(xabcdefghij) |
| character*(*) xabcdefghij |
| IF (xabcdefghij.NE.'##') GOTO 40 |
| 40 end |
| in which the spacing in the IF line is crucial. |
| |
| Thu Oct 21 13:55:11 EDT 1993 |
| Give more meaningful error message (then "unexpected character in |
| cds") when constant simplification leads to Infinity or NaN. |
| |
| Wed Nov 10 15:01:05 EST 1993 |
| libi77: backspace.c: adjust, under -DMSDOS, to cope with MSDOS |
| text files, as handled by some popular PC C compilers. Beware: |
| the (defective) libraries associated with these compilers assume lines |
| end with \r\n (conventional MS-DOS text files) -- and ftell (and |
| hence the current implementation of backspace) screws up if lines with |
| just \n. |
| |
| Thu Nov 18 09:37:47 EST 1993 |
| Give a better error (than "control stack empty") for an extraneous |
| ENDDO. Example: |
| enddo |
| end |
| Update comments about ftp in "readme from f2c". |
| |
| Sun Nov 28 17:26:50 EST 1993 |
| Change format of time stamp in version.c to yyyymmdd. |
| Sort parameter adjustments (or complain of impossible dependencies) |
| so that dummy arguments are referenced only after being adjusted. |
| Example: |
| subroutine foo(a,b) |
| integer a(2) ! a must be adjusted before b |
| double precision b(a(1),a(2)) |
| call goo(b(3,4)) |
| end |
| Adjust structs for initialized common blocks and equivalence classes |
| to omit the trailing struct component added to force alignment when |
| padding already forces the desired alignment. Example: |
| PROGRAM TEST |
| COMMON /Z/ A, CC |
| CHARACTER*4 CC |
| DATA cc /'a'/ |
| END |
| now gives |
| struct { |
| integer fill_1[1]; |
| char e_2[4]; |
| } z_ = { {0}, {'a', ' ', ' ', ' '} }; |
| rather than |
| struct { |
| integer fill_1[1]; |
| char e_2[4]; |
| real e_3; |
| } z_ = { {0}, {'a', ' ', ' ', ' '}, (float)0. }; |
| |
| Wed Dec 8 16:24:43 EST 1993 |
| Adjust lex.c to recognize # nnn "filename" lines emitted by cpp; |
| this affects the file names and line numbers in error messages and |
| the #line lines emitted under -g. |
| Under -g, arrange for a file that starts with an executable |
| statement to have the first #line line indicate line 1, rather |
| than the line number of the END statement ending the main program. |
| Adjust fc script to run files ending in .F through /lib/cpp. |
| Fix bug ("Impossible tag 2") in |
| if (t .eq. (0,2)) write(*,*) 'Bug!' |
| end |
| libi77: iio.c: adjust internal formatted reads to treat short records |
| as though padded with blanks (rather than causing an "off end of record" |
| error). |
| |
| Wed Dec 15 15:19:15 EST 1993 |
| fc: adjusted for .F files to pass -D and -I options to cpp. |
| |
| Fri Dec 17 20:03:38 EST 1993 |
| Fix botch introduced 28 Nov. 1993 in vax.c; change "version of" |
| to "version". |
| |
| Tue Jan 4 15:39:52 EST 1994 |
| msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only). |
| |
| Wed Jan 19 08:55:19 EST 1994 |
| Arrange to accept |
| integer Nx, Ny, Nz |
| parameter (Nx = 10, Ny = 20) |
| parameter (Nz = max(Nx, Ny)) |
| integer c(Nz) |
| call foo(c) |
| end |
| rather than complaining "Declaration error for c: adjustable dimension |
| on non-argument". The necessary changes cause some hitherto unfolded |
| constant expressions to be folded. |
| Accept BYTE as a synonym for INTEGER*1. |
| |
| Thu Jan 27 08:57:40 EST 1994 |
| Fix botch in changes of 19 Jan. 1994 that broke entry points with |
| multi-dimensional array arguments that did not appear in the subprogram |
| argument list and whose leading dimensions depend on arguments. |
| |
| Mon Feb 7 09:24:30 EST 1994 |
| Remove artifact in "fc" script that caused -O to be ignored: |
| 87c87 |
| < # lcc ignores -O... |
| --- |
| > CFLAGS="$CFLAGS $O" |
| |
| Sun Feb 20 17:04:58 EST 1994 |
| Fix bugs reading .P files for routines with arguments of type |
| INTEGER*1, INTEGER*8, LOGICAL*2. |
| Fix glitch in reporting inconsistent arguments for routines involving |
| character arguments: "arg n" had n too large by the number of |
| character arguments. |
| |
| Tue Feb 22 20:50:08 EST 1994 |
| Trivial changes to data.c format.c main.c niceprintf.c output.h and |
| sysdep.h (consistency improvements). |
| libI77: lread.c: check for NULL return from realloc. |
| |
| Fri Feb 25 23:56:08 EST 1994 |
| output.c, sysdep.h: arrange for -DUSE_DTOA to use dtoa.c and g_fmt.c |
| for correctly rounded decimal values on IEEE-arithmetic machines |
| (plus machines with VAX and IBM-mainframe arithmetic). These |
| routines are available from netlib's fp directory. |
| msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only); the |
| former uses -DUSE_DTOA to keep 12 from printing as 12.000000000000001. |
| vax.c: fix wrong arguments to badtag and frchain introduced |
| 28 Nov. 1993. |
| Source for f2c converted to ANSI/ISO format, with the K&R format |
| available by compilation with -DKR_headers . |
| Arrange for (double precision expression) relop (single precision |
| constant) to retain the single-precision nature of the constant. |
| Example: |
| double precision t |
| if (t .eq. 0.3) ... |
| |
| Mon Feb 28 11:40:24 EST 1994 |
| README updated to reflect a modification just made to netlib's |
| "dtoa.c from fp": |
| 96a97,105 |
| > Also add the rule |
| > |
| > dtoa.o: dtoa.c |
| > $(CC) -c $(CFLAGS) -DMALLOC=ckalloc -DIEEE... dtoa.c |
| > |
| > (without the initial tab) to the makefile, where IEEE... is one of |
| > IEEE_MC68k, IEEE_8087, VAX, or IBM, depending on your machine's |
| > arithmetic. See the comments near the start of dtoa.c. |
| > |
| |
| Sat Mar 5 09:41:52 EST 1994 |
| Complain about functions with the name of a previously declared |
| common block (which is illegal). |
| New option -d specifies the directory for output .c and .P files; |
| f2c.1 and f2c.1t updated. The former undocumented debug option -dnnn |
| is now -Dnnn. |
| |
| Thu Mar 10 10:21:44 EST 1994 |
| libf77: add #undef min and #undef max lines to s_paus.c s_stop.c |
| and system_.c; Version.c not changed. |
| libi77: add -DPad_UDread lines to uio.c and explanation to README: |
| Some buggy Fortran programs use unformatted direct I/O to write |
| an incomplete record and later read more from that record than |
| they have written. For records other than the last, the unwritten |
| portion of the record reads as binary zeros. The last record is |
| a special case: attempting to read more from it than was written |
| gives end-of-file -- which may help one find a bug. Some other |
| Fortran I/O libraries treat the last record no differently than |
| others and thus give no help in finding the bug of reading more |
| than was written. If you wish to have this behavior, compile |
| uio.c with -DPad_UDread . |
| Version.c not changed. |
| |
| Tue Mar 29 17:27:54 EST 1994 |
| Adjust make_param so dimensions involving min, max, and other |
| complicated constant expressions do not provoke error messages |
| about adjustable dimensions on non-arguments. |
| Fix botch introduced 19 Jan 1994: "adjustable dimension on non- |
| argument" messages could cause some things to be freed twice. |
| |
| Tue May 10 07:55:12 EDT 1994 |
| Trivial changes to exec.c, p1output.c, parse_args.c, proc.c, |
| and putpcc.c: change arguments from |
| type foo[] |
| to |
| type *foo |
| for consistency with defs.h. For most compilers, this makes no |
| difference. |
| |
| Thu Jun 2 12:18:18 EDT 1994 |
| Fix bug in handling FORMAT statements that have adjacent character |
| (or Hollerith) strings: an extraneous \002 appeared between the |
| strings. |
| libf77: under -DNO_ONEXIT, arrange for f_exit to be called just |
| once; previously, upon abnormal termination (including stop statements), |
| it was called twice. |
| |
| Mon Jun 6 15:52:57 EDT 1994 |
| libf77: Avoid references to SIGABRT and SIGIOT if neither is defined; |
| Version.c not changed. |
| libi77: Add cast to definition of errfl() in fio.h; this only matters |
| on systems with sizeof(int) < sizeof(long). Under -DNON_UNIX_STDIO, |
| use binary mode for direct formatted files (to avoid any confusion |
| connected with \n characters). |
| |
| Fri Jun 10 16:47:31 EDT 1994 |
| Fix bug under -A in handling unreferenced (and undeclared) |
| external arguments in subroutines with multiple entry points. Example: |
| subroutine m(fcn,futil) |
| external fcn,futil |
| call fcn |
| entry mintio(i1) ! (D_fp)0 rather than (U_fp)0 for futil |
| end |
| |
| Wed Jun 15 10:38:14 EDT 1994 |
| Allow char(constant expression) function in parameter declarations. |
| (This was probably broken in the changes of 29 March 1994.) |
| |
| Fri Jul 1 23:54:00 EDT 1994 |
| Minor adjustments to makefile (rule for f2c.1 commented out) and |
| sysdep.h (#undef KR_headers if __STDC__ is #defined, and base test |
| for ANSI_Libraries and ANSI_Prototypes on KR_headers rather than |
| __STDC__); version.c touched but not changed. |
| libi77: adjust fp.h so local.h is only needed under -DV10; |
| Version.c not changed. |
| |
| Tue Jul 5 03:05:46 EDT 1994 |
| Fix segmentation fault in |
| subroutine foo(a,b,k) |
| data i/1/ |
| double precision a(k,1) ! sequence error: must precede data |
| b = a(i,1) |
| end |
| libi77: Fix bug (introduced 6 June 1994?) in reopening files under |
| NON_UNIX_STDIO. |
| Fix some error messages caused by illegal Fortran. Examples: |
| * 1. |
| x(i) = 0 !Missing declaration for array x |
| call f(x) !Said Impossible storage class 8 in routine mkaddr |
| end !Now says invalid use of statement function x |
| * 2. |
| f = g !No declaration for g; by default it's a real variable |
| call g !Said invalid class code 2 for function g |
| end !Now says g cannot be called |
| * 3. |
| intrinsic foo !Invalid intrinsic name |
| a = foo(b) !Said intrcall: bad intrgroup 0 |
| end !Now just complains about line 1 |
| |
| Tue Jul 5 11:14:26 EDT 1994 |
| Fix glitch in handling erroneous statement function declarations. |
| Example: |
| a(j(i) - i) = a(j(i) - i) + 1 ! bad statement function |
| call foo(a(3)) ! Said Impossible type 0 in routine mktmpn |
| end ! Now warns that i and j are not used |
| |
| Wed Jul 6 17:31:25 EDT 1994 |
| Tweak test for statement functions that (illegally) call themselves; |
| f2c will now proceed to check for other errors, rather than bailing |
| out at the first recursive statement function reference. |
| Warn about but retain divisions by 0 (instead of calling them |
| "compiler errors" and quiting). On IEEE machines, this permits |
| double precision nan, ninf, pinf |
| nan = 0.d0/0.d0 |
| pinf = 1.d0/0.d0 |
| ninf = -1.d0/0.d0 |
| write(*,*) 'nan, pinf, ninf = ', nan, pinf, ninf |
| end |
| to print |
| nan, pinf, ninf = NaN Infinity -Infinity |
| libi77: wref.c: protect with #ifdef GOOD_SPRINTF_EXPONENT an |
| optimization that requires exponents to have 2 digits when 2 digits |
| suffice. lwrite.c wsfe.c (list and formatted external output): |
| omit ' ' carriage-control when compiled with -DOMIT_BLANK_CC . |
| Off-by-one bug fixed in character count for list output of character |
| strings. Omit '.' in list-directed printing of Nan, Infinity. |
| |
| Mon Jul 11 13:05:33 EDT 1994 |
| src/gram.c updated. |
| |
| Tue Jul 12 10:24:42 EDT 1994 |
| libi77: wrtfmt.c: under G11.4, write 0. as " .0000 " rather |
| than " .0000E+00". |
| |
| Thu Jul 14 17:55:46 EDT 1994 |
| Fix glitch in changes of 6 July 1994 that could cause erroneous |
| "division by zero" warnings (or worse). Example: |
| subroutine foo(a,b) |
| y = b |
| a = a / y ! erroneous warning of division by zero |
| end |
| |
| Mon Aug 1 16:45:17 EDT 1994 |
| libi77: lread.c rsne.c: for benefit of systems with a buggy stdio.h, |
| declare ungetc when neither KR_headers nor ungetc is #defined. |
| Version.c not changed. |
| |
| Wed Aug 3 01:53:00 EDT 1994 |
| libi77: lwrite.c (list output): do not insert a newline when |
| appending an oversize item to an empty line. |
| |
| Mon Aug 8 00:51:01 EDT 1994 |
| Fix bug (introduced 3 Feb. 1993) that, under -i2, kept LOGICAL*2 |
| variables from appearing in INQUIRE statements. Under -I2, allow |
| LOGICAL*4 variables to appear in INQUIRE. Fix intrinsic function |
| LEN so it returns a short value under -i2, a long value otherwise. |
| exec.c: fix obscure memory fault possible with bizarre (and highly |
| erroneous) DO-loop syntax. |
| |
| Fri Aug 12 10:45:57 EDT 1994 |
| libi77: fix glitch that kept ERR= (in list- or format-directed input) |
| from working after a NAMELIST READ. |
| |
| Thu Aug 25 13:58:26 EDT 1994 |
| Suppress -s when -C is specified. |
| Give full pathname (netlib@research.att.com) for netlib in readme and |
| src/README. |
| |
| Wed Sep 7 22:13:20 EDT 1994 |
| libi77: typesize.c: adjust to allow types LOGICAL*1, LOGICAL*2, |
| INTEGER*1, and (under -DAllow_TYQUAD) INTEGER*8 in NAMELISTs. |
| |
| Fri Sep 16 17:50:18 EDT 1994 |
| Change name adjustment for reserved words: instead of just appending |
| "_" (a single underscore), append "_a_" to local variable names to avoid |
| trouble when a common block is named a reserved word and the same |
| reserved word is also a local variable name. Example: |
| common /const/ a,b,c |
| real const(3) |
| equivalence (const(1),a) |
| a = 1.234 |
| end |
| Arrange for ichar() to treat characters as unsigned. |
| libf77: s_cmp.c: treat characters as unsigned in comparisons. |
| These changes for unsignedness only matter for strings that contain |
| non-ASCII characters. Now ichar() should always be >= 0. |
| |
| Sat Sep 17 11:19:32 EDT 1994 |
| fc: set rc=$? before exit (to get exit code right in trap code). |
| |
| Mon Sep 19 17:49:43 EDT 1994 |
| libf77: s_paus.c: flush stderr after PAUSE; add #ifdef MSDOS stuff. |
| libi77: README: point out general need for -DMSDOS under MS-DOS. |
| |
| Tue Sep 20 11:42:30 EDT 1994 |
| Fix bug in comparing identically named common blocks, in which |
| all components have the same names and types, but at least one is |
| dimensioned (1) and the other is not dimensioned. Example: |
| subroutine foo |
| common /ab/ a |
| a=1. !!! translated correctly to ab_1.a = (float)1.; |
| end |
| subroutine goo |
| common /ab/ a(1) |
| a(1)=2. !!! translated erroneously to ab_1.a[0] = (float)2. |
| end |
| |
| Tue Sep 27 23:47:34 EDT 1994 |
| Fix bug introduced 16 Sept. 1994: don't add _a_ to C keywords |
| used as external names. In fact, return to earlier behavior of |
| appending __ to C keywords unless they are used as external names, |
| in which case they get just one underscore appended. |
| Adjust constant handling so integer and logical PARAMETERs retain |
| type information, particularly under -I2. Example: |
| SUBROUTINE FOO |
| INTEGER I |
| INTEGER*1 I1 |
| INTEGER*2 I2 |
| INTEGER*4 I4 |
| LOGICAL L |
| LOGICAL*1 L1 |
| LOGICAL*2 L2 |
| LOGICAL*4 L4 |
| PARAMETER (L=.FALSE., L1=.FALSE., L2=.FALSE., L4=.FALSE.) |
| PARAMETER (I=0,I1=0,I2=0,I4=0) |
| CALL DUMMY(I, I1, I2, I4, L, L1, L2, L4) |
| END |
| f2c.1t: Change f\^2c to f2c (omit half-narrow space) in line following |
| ".SH NAME" for benefit of systems that cannot cope with troff commands |
| in this context. |
| |
| Wed Sep 28 12:45:19 EDT 1994 |
| libf77: s_cmp.c fix glitch in -DKR_headers version introduced |
| 12 days ago. |
| |
| Thu Oct 6 09:46:53 EDT 1994 |
| libi77: util.c: omit f__mvgbt (which is never used). |
| f2c.h: change "long" to "long int" to facilitate the adjustments |
| by means of sed described above. Comment out unused typedef of Long. |
| |
| Fri Oct 21 18:02:24 EDT 1994 |
| libf77: add s_catow.c and adjust README to point out that changing |
| "s_cat.o" to "s_catow.o" in the makefile will permit the target of a |
| concatenation to appear on its right-hand side (contrary to the |
| Fortran 77 Standard and at the cost of some run-time efficiency). |
| |
| Wed Nov 2 00:03:58 EST 1994 |
| Adjust -g output to contain only one #line line per statement, |
| inserting \ before the \n ending lines broken because of their |
| length [this insertion was recanted 10 Dec. 1994]. This change |
| accommodates an idiocy in the ANSI/ISO C standard, which leaves |
| undefined the behavior of #line lines that occur within the arguments |
| to a macro call. |
| |
| Wed Nov 2 14:44:27 EST 1994 |
| libi77: under compilation with -DALWAYS_FLUSH, flush buffers at |
| the end of each write statement, and test (via the return from |
| fflush) for write failures, which can be caught with an ERR= |
| specifier in the write statement. This extra flushing slows |
| execution, but can abort execution or alter the flow of control |
| when a disk fills up. |
| f2c/src/io.c: Add ERR= test to e_wsle invocation (end of |
| list-directed external output) to catch write failures when libI77 |
| is compiled with -DALWAYS_FLUSH. |
| |
| Thu Nov 3 10:59:13 EST 1994 |
| Fix bug in handling dimensions involving certain intrinsic |
| functions of constant expressions: the expressions, rather than |
| pointers to them, were passed. Example: |
| subroutine subtest(n,x) |
| real x(2**n,n) ! pow_ii(2,n) was called; now it's pow_ii(&c__2,n) |
| x(2,2)=3. |
| end |
| |
| Tue Nov 8 23:56:30 EST 1994 |
| malloc.c: remove assumption that only malloc calls sbrk. This |
| appears to make malloc.c useful on RS6000 systems. |
| |
| Sun Nov 13 13:09:38 EST 1994 |
| Turn off constant folding of integers used in floating-point |
| expressions, so the assignment in |
| subroutine foo(x) |
| double precision x |
| x = x*1000000*500000 |
| end |
| is rendered as |
| *x = *x * 1000000 * 500000; |
| rather than as |
| *x *= 1783793664; |
| |
| Sat Dec 10 16:31:40 EST 1994 |
| Supply a better error message (than "Impossible type 14") for |
| subroutine foo |
| foo = 3 |
| end |
| Under -g, convey name of included files to #line lines. |
| Recant insertion of \ introduced (under -g) 2 Nov. 1994. |
| |
| Thu Dec 15 14:33:55 EST 1994 |
| New command-line option -Idir specifies directories in which to |
| look for non-absolute include files (after looking in the directory |
| of the current input file). There can be several -Idir options, each |
| specifying one directory. All -Idir options are considered, from |
| left to right, until a suitably named file is found. The -I2 and -I4 |
| command-line options have precedence, so directories named 2 or 4 |
| must be spelled by some circumlocation, such as -I./2 . |
| f2c.ps updated to mention the new -Idir option, correct a typo, |
| and bring the man page at the end up to date. |
| lex.c: fix bug in reading line numbers in #line lines. |
| fc updated to pass -Idir options to f2c. |
| |
| Thu Dec 29 09:48:03 EST 1994 |
| Fix bug (e.g., addressing fault) in diagnosing inconsistency in |
| the type of function eta in the following example: |
| function foo(c1,c2) |
| double complex foo,c1,c2 |
| double precision eta |
| foo = eta(c1,c2) |
| end |
| function eta(c1,c2) |
| double complex eta,c1,c2 |
| eta = c1*c2 |
| end |
| |
| Mon Jan 2 13:27:26 EST 1995 |
| Retain casts for SNGL (or FLOAT) that were erroneously optimized |
| away. Example: |
| subroutine foo(a,b) |
| double precision a,b |
| a = float(b) ! now rendered as *a = (real) (*b); |
| end |
| Use float (rather than double) temporaries in certain expressions |
| of type complex. Example: the temporary for sngl(b) in |
| complex a |
| double precision b |
| a = sngl(b) - (3.,4.) |
| is now of type float. |
| |
| Fri Jan 6 00:00:27 EST 1995 |
| Adjust intrinsic function cmplx to act as dcmplx (returning |
| double complex rather than complex) if either of its args is of |
| type double precision. The double temporaries used prior to 2 Jan. |
| 1995 previously gave it this same behavior. |
| |
| Thu Jan 12 12:31:35 EST 1995 |
| Adjust -krd to use double temporaries in some calculations of |
| type complex. |
| libf77: pow_[dhiqrz][hiq].c: adjust x**i to work on machines |
| that sign-extend right shifts when i is the most negative integer. |
| |
| Wed Jan 25 00:14:42 EST 1995 |
| Fix memory fault in handling overlapping initializations in |
| block data |
| common /zot/ d |
| double precision d(3) |
| character*6 v(4) |
| real r(2) |
| equivalence (d(3),r(1)), (d(1),v(1)) |
| data v/'abcdef', 'ghijkl', 'mnopqr', 'stuvwx'/ |
| data r/4.,5./ |
| end |
| names.c: add "far", "huge", "near" to c_keywords (causing them |
| to have __ appended when used as local variables). |
| libf77: add s_copyow.c, an alternative to s_copy.c for handling |
| (illegal) character assignments where the right- and left-hand |
| sides overlap, as in a(2:4) = a(1:3). |
| |
| Thu Jan 26 14:21:19 EST 1995 |
| libf77: roll s_catow.c and s_copyow.c into s_cat.c and s_copy.c, |
| respectively, allowing the left-hand side of a character assignment |
| to appear on its right-hand side unless s_cat.c and s_copy.c are |
| compiled with -DNO_OVERWRITE (which is a bit more efficient). |
| Fortran 77 forbids the left-hand side from participating in the |
| right-hand side (of a character assignment), but Fortran 90 allows it. |
| libi77: wref.c: fix glitch in printing the exponent of 0 when |
| GOOD_SPRINTF_EXPONENT is not #defined. |
| |
| Fri Jan 27 12:25:41 EST 1995 |
| Under -C++ -ec (or -C++ -e1c), surround struct declarations with |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| and |
| #ifdef __cplusplus |
| } |
| #endif |
| (This isn't needed with cfront, but apparently is necessary with |
| some other C++ compilers.) |
| libf77: minor tweak to s_copy.c: copy forward whenever possible |
| (for better cache behavior). |
| |
| Wed Feb 1 10:26:12 EST 1995 |
| Complain about parameter statements that assign values to dummy |
| arguments, as in |
| subroutine foo(x) |
| parameter(x = 3.4) |
| end |
| |
| Sat Feb 4 20:22:02 EST 1995 |
| fc: omit "lib=/lib/num/lib.lo". |
| |
| Wed Feb 8 08:41:14 EST 1995 |
| Minor changes to exec.c, putpcc.c to avoid "bad tag" or "error |
| in frexpr" with certain invalid Fortran. |
| |
| Sat Feb 11 08:57:39 EST 1995 |
| Complain about integer overflows, both in simplifying integer |
| expressions, and in converting integers from decimal to binary. |
| Fix a memory fault in putcx1() associated with invalid input. |
| |
| Thu Feb 23 11:20:59 EST 1995 |
| Omit MAXTOKENLEN; realloc token if necessary (to handle very long |
| strings). |
| |
| Fri Feb 24 11:02:00 EST 1995 |
| libi77: iio.c: z_getc: insert (unsigned char *) to allow internal |
| reading of characters with high-bit set (on machines that sign-extend |
| characters). |
| |
| Tue Mar 14 18:22:42 EST 1995 |
| Fix glitch (in io.c) in handling 0-length strings in format |
| statements, as in |
| write(*,10) |
| 10 format(' ab','','cd') |
| libi77: lread.c and rsfe.c: adjust s_rsle and s_rsfe to check for |
| end-of-file (to prevent infinite loops with empty read statements). |
| |
| Wed Mar 22 10:01:46 EST 1995 |
| f2c.ps: adjust discussion of -P on p. 7 to reflect a change made |
| 3 Feb. 1993: -P no longer implies -A. |
| |
| Fri Apr 21 18:35:00 EDT 1995 |
| fc script: remove absolute paths (since PATH specifies only standard |
| places). On most systems, it's still necessary to adjust the PATH |
| assignment at the start of fc to fit the local conventions. |
| |
| Fri May 26 10:03:17 EDT 1995 |
| fc script: add recognition of -P and .P files. |
| libi77: iio.c: z_wnew: fix bug in handling T format items in internal |
| writes whose last item is written to an earlier position than some |
| previous item. |
| |
| Wed May 31 11:39:48 EDT 1995 |
| libf77: added subroutine exit(rc) (with integer return code rc), |
| which works like a stop statement but supplies rc as the program's |
| return code. |
| |
| Fri Jun 2 11:56:50 EDT 1995 |
| Fix memory fault in |
| parameter (x=2.) |
| data x /2./ |
| end |
| This now elicits two error messages; the second ("too many |
| initializers"), though not desirable, seems hard to eliminate |
| without considerable hassle. |
| |
| Mon Jul 17 23:24:20 EDT 1995 |
| Fix botch in simplifying constants in certain complex |
| expressions. Example: |
| subroutine foo(s,z) |
| double complex z |
| double precision s, M, P |
| parameter ( M = 100.d0, P = 2.d0 ) |
| z = M * M / s * dcmplx (1.d0, P/M) |
| *** The imaginary part of z was miscomputed *** |
| end |
| Under -ext, complain about nonintegral dimensions. |
| |
| Fri Jul 21 11:18:36 EDT 1995 |
| Fix glitch on line 159 of init.c: change |
| "(shortlogical *)0)", |
| to |
| "(shortlogical *)0", |
| This affects multiple entry points when some but not all have |
| arguments of type logical*2. |
| libi77: adjust lwrite.c, wref.c, wrtfmt.c so compiling with |
| -DWANT_LEAD_0 causes formatted writes of floating-point numbers of |
| magnitude < 1 to have an explicit 0 before the decimal point (if the |
| field-width permits it). Note that the Fortran 77 Standard leaves it |
| up to the implementation whether to supply these superfluous zeros. |
| |
| Tue Aug 1 09:25:56 EDT 1995 |
| Permit real (or double precision) parameters in dimension expressions. |
| |
| Mon Aug 7 08:04:00 EDT 1995 |
| Append "_eqv" rather than just "_" to names that that appear in |
| EQUIVALENCE statements as well as structs in f2c.h (to avoid a |
| conflict when these names also name common blocks). |
| |
| Tue Aug 8 12:49:02 EDT 1995 |
| Modify yesterday's change: merge st_fields with c_keywords, to |
| cope with equivalences introduced to permit initializing numeric |
| variables with character data. DATA statements causing these |
| equivalences can appear after executable statements, so the only |
| safe course is to rename all local variable with names in the |
| former st_fields list. This has the unfortunate side effect that |
| the common local variable "i" will henceforth be renamed "i__". |
| |
| Wed Aug 30 00:19:32 EDT 1995 |
| libf77: add F77_aloc, now used in s_cat and system_ (to allocate |
| memory and check for failure in so doing). |
| libi77: improve MSDOS logic in backspace.c. |
| |
| Wed Sep 6 09:06:19 EDT 1995 |
| libf77: Fix return type of system_ (integer) under -DKR_headers. |
| libi77: Move some f_init calls around for people who do not use |
| libF77's main(); now open and namelist read statements that are the |
| first I/O statements executed should work right in that context. |
| Adjust namelist input to treat a subscripted name whose subscripts do |
| not involve colons similarly to the name without a subscript: accept |
| several values, stored in successive elements starting at the |
| indicated subscript. Adjust namelist output to quote character |
| strings (avoiding confusion with arrays of character strings). |
| |
| Thu Sep 7 00:36:04 EDT 1995 |
| Fix glitch in integer*8 exponentiation function: it's pow_qq, not |
| pow_qi. |
| libi77: fix some bugs with -DAllow_TYQUAD (for integer*8); when |
| looking for the &name that starts NAMELIST input, treat lines whose |
| first nonblank character is something other than &, $, or ? as |
| comment lines (i.e., ignore them), unless rsne.c is compiled with |
| -DNo_Namelist_Comments. |
| |
| Thu Sep 7 09:05:40 EDT 1995 |
| libi77: rdfmt.c: one more tweak for -DAllow_TYQUAD. |
| |
| Tue Sep 19 00:03:02 EDT 1995 |
| Adjust handling of floating-point subscript bounds (a questionable |
| f2c extension) so subscripts in the generated C are of integral type. |
| Move #define of roundup to proc.c (where its use is commented out); |
| version.c left at 19950918. |
| |
| Wed Sep 20 17:24:19 EDT 1995 |
| Fix bug in handling ichar() under -h. |
| |
| Thu Oct 5 07:52:56 EDT 1995 |
| libi77: wrtfmt.c: fix bug with t editing (f__cursor was not always |
| zeroed in mv_cur). |
| |
| Tue Oct 10 10:47:54 EDT 1995 |
| Under -ext, warn about X**-Y and X**+Y. Following the original f77, |
| f2c treats these as X**(-Y) and X**(+Y), respectively. (They are not |
| allowed by the official Fortran 77 Standard.) Some Fortran compilers |
| give a bizarre interpretation to larger contexts, making multiplication |
| noncommutative: they treat X**-Y*Z as X**(-Y*Z) rather than X**(-Y)*Z, |
| which, following the rules of Fortran 77, is the same as (X**(-Y))*Z. |
| |
| Wed Oct 11 13:27:05 EDT 1995 |
| libi77: move defs of f__hiwater, f__svic, f__icptr from wrtfmt.c |
| to err.c. This should work around a problem with buggy loaders and |
| sometimes leads to smaller executable programs. |
| |
| Sat Oct 21 23:54:22 EDT 1995 |
| Under -h, fix bug in the treatment of ichar('0') in arithmetic |
| expressions. |
| Demote to -dneg (a new command-line option not mentioned in the |
| man page) imitation of the original f77's treatment of unary minus |
| applied to a REAL operand (yielding a DOUBLE PRECISION result). |
| Previously this imitation (which was present for debugging) occurred |
| under (the default) -!R. It is still suppressed by -R. |
| |
| Tue Nov 7 23:52:57 EST 1995 |
| Adjust assigned GOTOs to honor SAVE declarations. |
| Add comments about ranlib to lib[FI]77/README and makefile. |
| |
| Tue Dec 19 22:54:06 EST 1995 |
| libf77: s_cat.c: fix bug when 2nd or later arg overlaps lhs. |
| |
| Tue Jan 2 17:54:00 EST 1996 |
| libi77: rdfmt.c: move #include "ctype.h" up before "stdlib.h"; no |
| change to Version.c. |
| |
| Sun Feb 25 22:20:20 EST 1996 |
| Adjust expr.c to permit raising the integer constants 1 and -1 to |
| negative constant integral powers. |
| Avoid faulting when -T and -d are not followed by a directory name |
| (immediately, without intervening spaces). |
| |
| Wed Feb 28 12:49:01 EST 1996 |
| Fix a glitch in handling complex parameters assigned a "wrong" type. |
| Example: |
| complex d, z |
| parameter(z = (0d0,0d0)) |
| data d/z/ ! elicited "non-constant initializer" |
| call foo(d) |
| end |
| |
| Thu Feb 29 00:53:12 EST 1996 |
| Fix bug in handling character parameters assigned a char() value. |
| Example: |
| character*2 b,c |
| character*1 esc |
| parameter(esc = char(27)) |
| integer i |
| data (b(i:i),i=1,2)/esc,'a'/ |
| data (c(i:i),i=1,2)/esc,'b'/ ! memory fault |
| call foo(b,c) |
| end |
| |
| Fri Mar 1 23:44:51 EST 1996 |
| Fix glitch in evaluating .EQ. and .NE. when both operands are |
| logical constants (.TRUE. or .FALSE.). |
| |
| Fri Mar 15 17:29:54 EST 1996 |
| libi77: lread.c, rsfe.c: honor END= in READ stmts with empty iolist. |
| |
| Tue Mar 19 23:08:32 EST 1996 |
| lex.c: arrange for a "statement" consisting of a single short bogus |
| keyword to elicit an error message showing the whole keyword. The |
| error message formerly omitted the last letter of the bad keyword. |
| libf77: s_cat.c: supply missing break after overlap detection. |
| |
| Mon May 13 23:35:26 EDT 1996 |
| Recognize Fortran 90's /= as a synonym for .NE.. (<> remains a |
| synonym for .NE..) |
| Emit an empty int function of no arguments to supply an external |
| name to named block data subprograms (so they can be called somewhere |
| to force them to be loaded from a library). |
| Fix bug (memory fault) in handling the following illegal Fortran: |
| parameter(i=1) |
| equivalence(i,j) |
| end |
| Treat cdabs, cdcos, cdexp, cdlog, cdsin, and cdsqrt as synonyms for |
| the double complex intrinsics zabs, zcos, zexp, zlog, zsin, and zsqrt, |
| respectively, unless -cd is specified. |
| Recognize the Fortran 90 bit-manipulation intrinsics btest, iand, |
| ibclr, ibits, ibset, ieor, ior, ishft, and ishftc, unless -i90 is |
| specified. Note that iand, ieor, and ior are thus now synonyms for |
| "and", "xor", and "or", respectively. |
| Add three macros (bit_test, bit_clear, bit_set) to f2c.h for use |
| with btest, ibclr, and ibset, respectively. Add new functions |
| [lq]bit_bits, [lq]bit_shift, and [lq]_bit_cshift to libF77 for |
| use with ibits, ishft, and ishftc, respectively. |
| Add integer function ftell(unit) (returning -1 on error) and |
| subroutine fseek(unit, offset, whence, *) to libI77 (with branch to |
| label * on error). |
| |
| Tue May 14 23:21:12 EDT 1996 |
| Fix glitch (possible memory fault, or worse) in handling multiple |
| entry points with names over 28 characters long. |
| |
| Mon Jun 10 01:20:16 EDT 1996 |
| Update netlib E-mail and ftp addresses in f2c/readme and |
| f2c/src/readme (which are different files) -- to reflect the upcoming |
| breakup of AT&T. |
| libf77: trivial tweaks to F77_aloc.c and system_.c; Version.c not |
| changed. |
| libi77: Adjust rsli.c and lread.c so internal list input with too |
| few items in the input string will honor end= . |
| |
| Mon Jun 10 22:59:57 EDT 1996 |
| Add Bits_per_Byte to sysdep.h and adjust definition of Table_size |
| to depend on Bits_per_Byte (forcing Table_size to be a power of 2); in |
| lex.c, change "comstart[c & 0xfff]" to "comstart[c & (Table_size-1)]" |
| to avoid an out-of-range subscript on end-of-file. |
| |
| Wed Jun 12 00:24:28 EDT 1996 |
| Fix bug in output.c (dereferencing a freed pointer) revealed in |
| print * !np in out_call in output.c clobbered by free |
| end !during out_expr. |
| |
| Wed Jun 19 08:12:47 EDT 1996 |
| f2c.h: add types uinteger, ulongint (for libF77); add qbit_clear |
| and qbit_set macros (in a commented-out section) for integer*8. |
| For integer*8, use qbit_clear and qbit_set for ibclr and ibset. |
| libf77: add casts to unsigned in [lq]bitshft.c. |
| |
| Thu Jun 20 13:30:43 EDT 1996 |
| Complain at character*(*) in common (rather than faulting). |
| Fix bug in recognizing hex constants that start with "16#" (e.g., |
| 16#1234abcd, which is a synonym for z'1234abcd'). |
| Fix bugs in constant folding of expressions involving btest, ibclr, |
| and ibset. |
| Fix bug in constant folding of rshift(16#80000000, -31) (on a 32-bit |
| machine; more generally, the bug was in constant folding of |
| rshift(ibset(0,NBITS-1), 1-NBITS) when f2c runs on a machine with |
| long ints having NBITS bits. |
| |
| Mon Jun 24 07:58:53 EDT 1996 |
| Adjust struct Literal and newlabel() function to accommodate huge |
| source files (with more than 32767 newlabel() invocations). |
| Omit .c file when the .f file has a missing final end statement. |
| |
| Wed Jun 26 14:00:02 EDT 1996 |
| libi77: Add discussion of MXUNIT (highest allowed Fortran unit number) |
| to libI77/README. |
| |
| Fri Jun 28 14:16:11 EDT 1996 |
| Fix glitch with -onetrip: the temporary variable used for nonconstant |
| initial loop variable values was recycled too soon. Example: |
| do i = j+1, k |
| call foo(i+1) ! temp for j+1 was reused here |
| enddo |
| end |
| |
| Tue Jul 2 16:11:27 EDT 1996 |
| formatdata.c: add a 0 to the end of the basetype array (for TYBLANK) |
| (an omission that was harmless on most machines). |
| expr.c: fix a dereference of NULL that was only possible with buggy |
| input, such as |
| subroutine $sub(s) ! the '$' is erroneous |
| character s*(*) |
| s(1:) = ' ' |
| end |
| |
| Sat Jul 6 00:44:56 EDT 1996 |
| Fix glitch in the intrinsic "real" function when applied to a |
| complex (or double complex) variable and passed as an argument to |
| some intrinsic functions. Example: |
| complex a |
| b = sqrt(a) |
| end |
| Fix glitch (only visible if you do not use f2c's malloc and the |
| malloc you do use is defective in the sense that malloc(0) returns 0) |
| in handling include files that end with another include (perhaps |
| followed by comments). |
| Fix glitch with character*(*) arguments named "h" and "i" when |
| the body of the subroutine invokes the intrinsic LEN function. |
| Arrange that after a previous "f2c -P foo.f" has produced foo.P, |
| running "f2c foo.P foo.f" will produce valid C when foo.f contains |
| call sub('1234') |
| end |
| subroutine sub(msg) |
| end |
| Specifically, the length argument in "call sub" is now suppressed. |
| With or without foo.P, it is also now suppressed when the order of |
| subprograms in file foo.f is reversed: |
| subroutine sub(msg) |
| end |
| call sub('1234') |
| end |
| Adjust copyright notices to reflect AT&T breakup. |
| |
| Wed Jul 10 09:25:49 EDT 1996 |
| Fix bug (possible memory fault) in handling erroneously placed |
| and inconsistent declarations. Example that faulted: |
| character*1 w(8) |
| call foo(w) |
| end |
| subroutine foo(m) |
| data h /0.5/ |
| integer m(2) ! should be before data |
| end |
| Fix bug (possible fault) in handling illegal "if" constructions. |
| Example (that faulted): |
| subroutine foo(i,j) |
| if (i) then ! bug: i is integer, not logical |
| else if (j) then ! bug: j is integer, not logical |
| endif |
| end |
| Fix glitch with character*(*) argument named "ret_len" to a |
| character*(*) function. |
| |
| Wed Jul 10 23:04:16 EDT 1996 |
| Fix more glitches in the intrinsic "real" function when applied to a |
| complex (or double complex) variable and passed as an argument to |
| some intrinsic functions. Example: |
| complex a, b |
| r = sqrt(real(conjg(a))) + sqrt(real(a*b)) |
| end |
| |
| Thu Jul 11 17:27:16 EDT 1996 |
| Fix a memory fault associated with complicated, illegal input. |
| Example: |
| subroutine goo |
| character a |
| call foo(a) ! inconsistent with subsequent def and call |
| end |
| subroutine foo(a) |
| end |
| call foo(a) |
| end |
| |
| Wed Jul 17 19:18:28 EDT 1996 |
| Fix yet another case of intrinsic "real" applied to a complex |
| argument. Example: |
| complex a(3) |
| x = sqrt(real(a(2))) ! gave error message about bad tag |
| end |
| |
| Mon Aug 26 11:28:57 EDT 1996 |
| Tweak sysdep.c for non-Unix systems in which process ID's can be |
| over 5 digits long. |
| |
| Tue Aug 27 08:31:32 EDT 1996 |
| Adjust the ishft intrinsic to use unsigned right shifts. (Previously, |
| a negative constant second operand resulted in a possibly signed shift.) |
| |
| Thu Sep 12 14:04:07 EDT 1996 |
| equiv.c: fix glitch with -DKR_headers. |
| libi77: fmtlib.c: fix bug in printing the most negative integer. |
| |
| Fri Sep 13 08:54:40 EDT 1996 |
| Diagnose some illegal appearances of substring notation. |
| |
| Tue Sep 17 17:48:09 EDT 1996 |
| Fix fault in handling some complex parameters. Example: |
| subroutine foo(a) |
| double complex a, b |
| parameter(b = (0,1)) |
| a = b ! f2c faulted here |
| end |
| |
| Thu Sep 26 07:47:10 EDT 1996 |
| libi77: fmt.h: for formatted writes of negative integer*1 values, |
| make ic signed on ANSI systems. If formatted writes of integer*1 |
| values trouble you when using a K&R C compiler, switch to an ANSI |
| compiler or use a compiler flag that makes characters signed. |
| |
| Tue Oct 1 14:41:36 EDT 1996 |
| Give a better error message when dummy arguments appear in data |
| statements. |
| |
| Thu Oct 17 13:37:22 EDT 1996 |
| Fix bug in typechecking arguments to character and complex (or |
| double complex) functions; the bug could cause length arguments |
| for character arguments to be omitted on invocations appearing |
| textually after the first invocation. For example, in |
| subroutine foo |
| character c |
| complex zot |
| call goo(zot(c), zot(c)) |
| end |
| the length was omitted from the second invocation of zot, and |
| there was an erroneous error message about inconsistent calling |
| sequences. |
| |
| Wed Dec 4 13:59:14 EST 1996 |
| Fix bug revealed by |
| subroutine test(cdum,rdum) |
| complex cdum |
| rdum=cos(real(cdum)) ! "Unexpected tag 3 in opconv_fudge" |
| end |
| Fix glitch in parsing "DO 10 D0 = 1, 10". |
| Fix glitch in parsing |
| real*8 x |
| real*8 x ! erroneous "incompatible type" message |
| call foo(x) |
| end |
| |
| Mon Dec 9 23:15:02 EST 1996 |
| Fix glitch in parameter adjustments for arrays whose lower |
| bound depends on a scalar argument. Example: |
| subroutine bug(p,z,m,n) |
| integer z(*),m,n |
| double precision p(z(m):z(m) + n) ! p_offset botched |
| call foo(p(0), p(n)) |
| end |
| libi77: complain about non-positive rec= in direct read and write |
| statements. |
| libf77: trivial adjustments; Version.c not changed. |
| |
| Wed Feb 12 00:18:03 EST 1997 |
| output.c: fix (seldom problematic) glitch in out_call: put parens |
| around the ... in a test of the form "if (q->tag == TADDR && ...)". |
| vax.c: fix bug revealed in the "psi_offset =" assignment in the |
| following example: |
| subroutine foo(psi,m) |
| integer z(100),m |
| common /a/ z |
| double precision psi(z(m):z(m) + 10) |
| call foo(m+1, psi(0),psi(10)) |
| end |
| |
| Mon Feb 24 23:44:54 EST 1997 |
| For consistency with f2c's current treatment of adjacent character |
| strings in FORMAT statements, recognize a Hollerith string following |
| a string (and merge adjacent strings in FORMAT statements). |
| |
| Wed Feb 26 13:41:11 EST 1997 |
| New libf2c.zip, a combination of the libf77 and libi77 bundles (and |
| available only by ftp). |
| libf77: adjust functions with a complex output argument to permit |
| aliasing it with input arguments. (For now, at least, this is just |
| for possible benefit of g77.) |
| libi77: tweak to ftell_.c for systems with strange definitions of |
| SEEK_SET, etc. |
| |
| Tue Apr 8 20:57:08 EDT 1997 |
| libf77: [cz]_div.c: tweaks invisible on most systems (that may |
| improve things slightly with optimized compilation on systems that use |
| gratuitous extra precision). |
| libi77: fmt.c: adjust to complain at missing numbers in formats |
| (but still treat missing ".nnn" as ".0"). |
| |
| Fri Apr 11 14:05:57 EDT 1997 |
| libi77: err.c: attempt to make stderr line buffered rather than |
| fully buffered. (Buffering is needed for format items T and TR.) |
| |
| Thu Apr 17 22:42:43 EDT 1997 |
| libf77: add F77_aloc.o to makefile (and makefile.u in libf2c.zip). |
| |
| Fri Apr 25 19:32:09 EDT 1997 |
| libf77: add [de]time_.c (which may give trouble on some systems). |
| |
| Tue May 27 09:18:52 EDT 1997 |
| libi77: ftell_.c: fix typo that caused the third argument to be |
| treated as 2 on some systems. |
| |
| Mon Jun 9 00:04:37 EDT 1997 |
| libi77 (and libf2c.zip): adjust include order in err.c lread.c wref.c |
| rdfmt.c to include fmt.h (etc.) after system includes. Version.c not |
| changed. |
| |
| Mon Jul 21 16:04:54 EDT 1997 |
| proc.c: fix glitch in logic for "nonpositive dimension" message. |
| libi77: inquire.c: always include string.h (for possible use with |
| -DNON_UNIX_STDIO); Version.c not changed. |
| |
| Thu Jul 24 17:11:23 EDT 1997 |
| Tweak "Notice" to reflect the AT&T breakup -- we missed it when |
| updating the copyright notices in the source files last summer. |
| Adjust src/makefile so malloc.o is not used by default, but can |
| be specified with "make MALLOC=malloc.o". |
| Add comments to src/README about the "CRAY" T3E. |
| |
| Tue Aug 5 14:53:25 EDT 1997 |
| Add definition of calloc to malloc.c; this makes f2c's malloc |
| work on some systems where trouble hitherto arose because references |
| to calloc brought in the system's malloc. (On sensible systems, |
| calloc is defined separately from malloc. To avoid confusion on |
| other systems, f2c/malloc.c now defines calloc.) |
| libi77: lread.c: adjust to accord with a change to the Fortran 8X |
| draft (in 1990 or 1991) that rescinded permission to elide quote marks |
| in namelist input of character data; to get the old behavior, compile |
| with F8X_NML_ELIDE_QUOTES #defined. wrtfmt.o: wrt_G: tweak to print |
| the right number of 0's for zero under G format. |
| |
| Sat Aug 16 05:45:32 EDT 1997 |
| libi77: iio.c: fix bug in internal writes to an array of character |
| strings that sometimes caused one more array element than required by |
| the format to be blank-filled. Example: format(1x). |
| |
| Wed Sep 17 00:39:29 EDT 1997 |
| libi77: fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines |
| with 64-bit pointers and 32-bit ints that did not 64-bit align |
| struct syl (e.g., Linux on the DEC Alpha). This change should be |
| invisible on other machines. |
| |
| Sun Sep 21 22:05:19 EDT 1997 |
| libf77: [de]time_.c (Unix systems only): change return type to double. |
| |
| Thu Dec 4 22:10:09 EST 1997 |
| Fix bug with handling large blocks of comments (over 4k); parts of the |
| second and subsequent blocks were likely to be lost (not copied into |
| comments in the resulting C). Allow comment lines to be longer before |
| breaking them. |
| |
| Mon Jan 19 17:19:27 EST 1998 |
| makefile: change the rule for making gram.c to one for making gram1.c; |
| henceforth, asking netlib to "send all from f2c/src" will bring you a |
| working gram.c. Nowadays there are simply too many broken versions of |
| yacc floating around. |
| libi77: backspace.c: for b->ufmt==0, change sizeof(int) to |
| sizeof(uiolen). On machines where this would make a difference, it is |
| best for portability to compile libI77 with -DUIOLEN_int, which will |
| render the change invisible. |
| |
| Tue Feb 24 08:35:33 EST 1998 |
| makefile: remove gram.c from the "make clean" rule. |
| |
| Wed Feb 25 08:29:39 EST 1998 |
| makefile: change CFLAGS assignment to -O; add "veryclean" rule. |
| |
| Wed Mar 4 13:13:21 EST 1998 |
| libi77: open.c: fix glitch in comparing file names under |
| -DNON_UNIX_STDIO. |
| |
| Mon Mar 9 23:56:56 EST 1998 |
| putpcc.c: omit an unnecessary temporary variable in computing |
| (expr)**3. |
| libf77, libi77: minor tweaks to make some C++ compilers happy; |
| Version.c not changed. |
| |
| Wed Mar 18 18:08:47 EST 1998 |
| libf77: minor tweaks to [ed]time_.c; Version.c not changed. |
| libi77: endfile.c, open.c: acquire temporary files from tmpfile(), |
| unless compiled with -DNON_ANSI_STDIO, which uses mktemp(). |
| New buffering scheme independent of NON_UNIX_STDIO for handling T |
| format items. Now -DNON_UNIX_STDIO is no longer be necessary for |
| Linux, and libf2c no longer causes stderr to be buffered -- the former |
| setbuf or setvbuf call for stderr was to make T format items work. |
| open.c: use the Posix access() function to check existence or |
| nonexistence of files, except under -DNON_POSIX_STDIO, where trial |
| fopen calls are used. In open.c, fix botch in changes of 19980304. |
| libf2c.zip: the PC makefiles are now set for NT/W95, with comments |
| about changes for DOS. |
| |
| Fri Apr 3 17:22:12 EST 1998 |
| Adjust fix of 19960913 to again permit substring notation on |
| character variables in data statements. |
| |
| Sun Apr 5 19:26:50 EDT 1998 |
| libi77: wsfe.c: make $ format item work: this was lost in the changes |
| of 17 March 1998. |
| |
| Sat May 16 19:08:51 EDT 1998 |
| Adjust output of ftnlen constants: rather than appending L, |
| prepend (ftnlen). This should make the resulting C more portable, |
| e.g., to systems (such as DEC Alpha Unix systems) on which long |
| may be longer than ftnlen. |
| Adjust -r so it also casts REAL expressions passed to intrinsic |
| functions to REAL. |
| |
| Wed May 27 16:02:35 EDT 1998 |
| libf2c.zip: tweak description of compiling libf2c for INTEGER*8 |
| to accord with makefile.u rather than libF77/makefile. |
| |
| Thu May 28 22:45:59 EDT 1998 |
| libi77: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c: |
| set f__curunit sooner so various error messages will correctly |
| identify the I/O unit involved. |
| libf2c.zip: above, plus tweaks to PC makefiles: for some purposes, |
| it's still best to compile with -DMSDOS (even for use with NT). |
| |
| Thu Jun 18 01:22:52 EDT 1998 |
| libi77: lread.c: modified so floating-point numbers (containing |
| either a decimal point or an exponent field) are treated as errors |
| when they appear as list input for integer data. Compile lread.c with |
| -DALLOW_FLOAT_IN_INTEGER_LIST_INPUT to restore the old behavior. |
| |
| Mon Aug 31 10:38:54 EDT 1998 |
| formatdata.c: if possible, and assuming doubles must be aligned on |
| double boundaries, use existing holes in DATA for common blocks to |
| force alignment of the block. For example, |
| block data |
| common /abc/ a, b |
| double precision a |
| integer b(2) |
| data b(2)/1/ |
| end |
| used to generate |
| struct { |
| integer fill_1[3]; |
| integer e_2; |
| doublereal e_3; |
| } abc_ = { {0}, 1, 0. }; |
| and now generates |
| struct { |
| doublereal fill_1[1]; |
| integer fill_2[1]; |
| integer e_3; |
| } abc_ = { {0}, {0}, 1 }; |
| In the old generated C, e_3 was added to force alignment; in the new C, |
| fill_1 does this job. |
| |
| Mon Sep 7 19:48:51 EDT 1998 |
| libi77: move e_wdfe from sfe.c to dfe.c, where it was originally. |
| Why did it ever move to sfe.c? |
| |
| Tue Sep 8 10:22:50 EDT 1998 |
| Treat dreal as a synonym for dble unless -cd is specified on the |
| command line. |
| |
| Sun Sep 13 22:23:41 EDT 1998 |
| format.c: fix bug in writing prototypes under f2c -A ... *.P: |
| under some circumstances involving external functions with no known |
| type, a null pointer was passed to printf. |
| |
| Tue Oct 20 23:25:54 EDT 1998 |
| Comments added to libf2c/README and libF77/README, pointing out |
| the need to modify signal1.h on some systems. |
| |
| Wed Feb 10 22:59:52 EST 1999 |
| defs.h lex.c: permit long names (up to at least roughly |
| MAX_SHARPLINE_LEN = 1000 characters long) in #line lines (which only |
| matters under -g). |
| fc: add -U option; recognize .so files. |
| |
| Sat Feb 13 10:18:27 EST 1999 |
| libf2c: endfile.c, lread.c, signal1.h0: minor tweaks to make some |
| (C++) compilers happier; f77_aloc.c: make exit_() visible to C++ |
| compilers. Version strings not changed. |
| |
| Thu Mar 11 23:14:02 EST 1999 |
| Modify f2c (exec.c, expr.c) to diagnose incorrect mixing of types |
| when (f2c extended) intrinsic functions are involved, as in |
| (not(17) .and. 4). Catching this in the first executable statement |
| is a bit tricky, as some checking must be postponed until all statement |
| function declarations have been parsed. Thus there is a chance of |
| today's changes introducing bugs under (let us hope) unusual conditions. |
| |
| Sun Mar 28 13:17:44 EST 1999 |
| lex.c: tweak to get the file name right in error messages caused |
| by statements just after a # nnn "filename" line emitted by the C |
| preprocessor. (The trouble is that the line following the # nnn line |
| must be read to see if it is a continuation of the stuff that preceded |
| the # nnn line.) When # nnn "filename" lines appear among the lines |
| for a Fortran statement, the filename reported in an error message for |
| the statement should now be the file that was current when the first |
| line of the statement was read. |
| |
| Sun May 2 22:38:25 EDT 1999 |
| libf77, libi77, libf2c.zip: make getenv_() more portable (call |
| getenv() rather than knowing about char **environ); adjust some |
| complex intrinsics to work with overlapping arguments (caused by |
| inappropriate use of equivalence); open.c: get "external" versus |
| "internal" right in the error message if a file cannot be opened; |
| err.c: cast a pointer difference to (int) for %d; rdfmt.c: omit |
| fixed-length buffer that could be overwritten by formats Inn or Lnn |
| with nn > 83. |
| |
| Mon May 3 13:14:07 EDT 1999 |
| "Invisible" changes to omit a few compiler warnings in f2c and |
| libf2c; two new casts in libf2c/open.c that matter with 64-bit longs, |
| and one more tweak (libf2c/c_log.c) for pathological equivalences. |
| Minor update to "fc" script: new -L flag and comment correction. |