📄 changes
字号:
Tweaks to sysdep.h for partially ANSI systems. New options -kr and -krd cause f2c to use temporary variables toenforce Fortran evaluation-order rules with pernicious, old-style Ccompilers 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/Oof internal files; bug in namelist I/O of logical and character arraysfixed; list input of complex numbers adjusted to permit d or D todenote the start of the exponent field of a component. f2c itself: fix bug in handling complicated lower-boundexpressions for character substrings; e.g., min and max did not workright, nor did function invocations involving character arguments. Switch to octal notation, rather than hexadecimal, for nonprintingcharacters in character and string constants. Fix bug (when neither -A nor -C++ was specified) in typing ofexternal arguments of type complex, double complex, or character: subroutine foo(c) external c complex cnow 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 individualfiles from lib[FI]77.)Wed Apr 18 00:56:37 EDT 1990: Move declaration of atof() from defs.h to sysdep.h, where it isnow 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 initializationassumed ASCII; #define Table_size in sysdep.h rather than usinghard-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 onsystems 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 switchexpressions 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 andformatdata.c, so that people who have systems like VMS that wouldotherwise 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 characterarguments 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(...) onsome 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 auxiliaryvariable, 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 havefunny 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 multipleentry 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 endInstead of warning of inconsistent calling sequences for goo,f2c was simply making i a real variable; now i is correctlytyped as an integer variable, and f2c issues an error message. Adjust error messages issued at end of declarations so theydon'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 addsinformation that would change prototypes or previous declarations.Thu May 10 18:09:15 EDT 1990: Fix further obscure bug with (default) -it: inconsistent callingsequences 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 ENDFri 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 readingFortran 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 appearboth 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 involvingfunction call passing non-constant substring). Under -h, preserve the property that strings are null-terminatedwhere 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 machineswhere casting a long to (int) may change the value. E.g., when f2cran on machines with 16-bit ints, "i = 99999" was being translatedto "i = -31073;".Wed Jun 27 11:05:32 EDT 1990: Arrange for CHARACTER-valued PARAMETERs to honor their lengthspecifications. 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 compilercomplained at (short)*store.Thu Aug 2 02:07:58 EDT 1990: f2c.ps: change the first line of page 5 from include stuffto 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 anargument to a subprogram was never referenced, then a previousinvocation of the subprogram (in the same source file) thatpassed something of the wrong type for that argument did notelicit 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 between10 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.cfiles) under -ec or -e1c when a prototype file (*.p or *.P) describesCOMMON blocks that do not appear in the Fortran source. libi77: Add some #ifdef lines (#ifdef MSDOS, #ifndef MSDOS) to avoidreferences to stat and fstat on non-UNIX systems. On UNIX systems, add component udev to unit; decide that oldand new files are the same iff both the uinode and udev componentsof unit agree. When an open stmt specifies STATUS='OLD', use stat rather thanaccess (on UNIX systems) to check the existence of the file (in casedirectories leading to the file have funny permissions and this isa 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 writedon'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 asynonym for FILE= in OPEN statements.Wed Oct 17 16:40:37 EDT 1990: libf77, libi77: minor cleanups: _cleanup() and abort() invocationsreplaced by invocations of sig_die in main.c; some error messagespreviously 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 usethe 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 variablenames to avoid conflict with COMMON names. f2c.ps updated to reflectthis 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 stmtspecifies new= and the file already exists (as specified by Fortrans 77and 90); allow file= to be omitted in open stmts and allowstatus='replace' (Fortran 90 extensions).Fri Nov 30 10:10:14 EST 1990: Adjust malloc.c for unusual systems whose sbrk() can return valuesnot properly aligned for doubles. Arrange for slightly more helpful and less repetitive warnings fornon-character variables initialized with character data; these warningsare (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_keywordslist 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 invisibleelsewhere.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 adata statement.) Use decimal rather than hex constants in xsum.c (to preventerroneous warning messages about constant overflow).Mon Dec 17 12:26:40 EST 1990: Fix rare extra underscore in character length parameters passedfor multiple entry points.Wed Dec 19 17:19:26 EST 1990: Allow generation of C despite error messages about bad alignmentforced 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!' ENDTue Jan 15 12:00:24 EST 1991: Fix bug when two equivalence groups are merged, the second withnonzero 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 noerror message if, e.g., NML= specifies a format.) libi77: minor adjustment to allow internal READs from characterstring constants in read-only memory.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -