| @c Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 |
| @c 2003, 2004 |
| @c Free Software Foundation, Inc. |
| @c This is part of the G77 manual. |
| @c For copying conditions, see the file g77.texi. |
| |
| @c The text of this file appears in the file NEWS |
| @c in the G77 distribution, as well as in the G77 manual. |
| |
| @c Keep this the same as the dates above, since it's used |
| @c in the standalone derivations of this file (e.g. NEWS). |
| @set copyrights-news 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 |
| |
| @set last-update-news 2004-06-17 |
| |
| @ifset DOC-NEWS |
| @include root.texi |
| @c The immediately following lines apply to the NEWS file |
| @c which is derived from this file. |
| @emph{Note:} This file is automatically generated from the files |
| @file{news0.texi} and @file{news.texi}. |
| @file{NEWS} is @emph{not} a source file, |
| although it is normally included within source distributions. |
| |
| This file lists news about the @value{which-g77} version |
| (and some other versions) of the GNU Fortran compiler. |
| Copyright (C) @value{copyrights-news} Free Software Foundation, Inc. |
| You may copy, distribute, and modify it freely as long as you preserve |
| this copyright notice and permission notice. |
| |
| @node Top,,, (dir) |
| @chapter News About GNU Fortran |
| @end ifset |
| |
| @ifset DOC-G77 |
| @ifset USERVISONLY |
| @node Changes |
| @chapter User-visible Changes |
| @cindex versions, recent |
| @cindex recent versions |
| @cindex changes, user-visible |
| @cindex user-visible changes |
| |
| This chapter describes changes to @command{g77} that are visible |
| to the programmers who actually write and maintain Fortran |
| code they compile with @command{g77}. |
| Information on changes to installation procedures, |
| changes to the documentation, and bug fixes is |
| not provided here, unless it is likely to affect how |
| users use @command{g77}. |
| @xref{News,,News About GNU Fortran}, for information on |
| such changes to @command{g77}. |
| @end ifset |
| |
| @ifclear USERVISONLY |
| @node News |
| @chapter News About GNU Fortran |
| @cindex versions, recent |
| @cindex recent versions |
| @end ifclear |
| @end ifset |
| |
| @ifclear USERVISONLY |
| |
| @emph{@code{GCC} 3.4.x is the last edition of @code{GCC} to contain @command{g77} - from @code{GCC} 3.5 onwards, use @command{gfortran}} |
| |
| Changes made to recent versions of GNU Fortran are listed |
| below, with the most recent version first. |
| |
| The changes are generally listed in order: |
| |
| @enumerate |
| @item |
| Code-generation and run-time-library bug-fixes |
| |
| @item |
| Compiler and run-time-library crashes involving valid code |
| that have been fixed |
| |
| @item |
| New features |
| |
| @item |
| Fixes and enhancements to existing features |
| |
| @item |
| New diagnostics |
| |
| @item |
| Internal improvements |
| |
| @item |
| Miscellany |
| @end enumerate |
| |
| This order is not strict---for example, some items |
| involve a combination of these elements. |
| @end ifclear |
| |
| Note that two variants of @command{g77} are tracked below. |
| The @code{egcs} variant is described vis-a-vis |
| previous versions of @code{egcs} and/or |
| an official FSF version, as appropriate. |
| Note that all such variants are obsolete @emph{as of July 1999} - |
| the information is retained here only for its historical value. |
| |
| Therefore, @code{egcs} versions sometimes have multiple listings |
| to help clarify how they differ from other versions, |
| though this can make getting a complete picture |
| of what a particular @code{egcs} version contains |
| somewhat more difficult. |
| |
| @ifset DOC-G77 |
| For information on bugs in the @value{which-g77} version of @command{g77}, |
| see @ref{Known Bugs,,Known Bugs In GNU Fortran}. |
| @end ifset |
| |
| @ifset DOC-BUGS |
| For information on bugs in the @value{which-g77} version of @command{g77}, |
| see @file{@value{path-g77}/BUGS}. |
| @end ifset |
| |
| @ifset DEVELOPMENT |
| @emph{Warning:} The information below is still under development, |
| and might not accurately reflect the @command{g77} code base |
| of which it is a part. |
| Efforts are made to keep it somewhat up-to-date, |
| but they are particularly concentrated |
| on any version of this information |
| that is distributed as part of a @emph{released} @command{g77}. |
| |
| In particular, while this information is intended to apply to |
| the @value{which-g77} version of @command{g77}, |
| only an official @emph{release} of that version |
| is expected to contain documentation that is |
| most consistent with the @command{g77} product in that version. |
| |
| Nevertheless, information on @emph{previous} releases of @command{g77}, below, |
| is likely to be more up-to-date and accurate |
| than the equivalent information that accompanied |
| those releases, |
| assuming the last-updated date of the information below |
| is later than the dates of those releases. |
| |
| That's due to attempts to keep this development version |
| of news about previous @command{g77} versions up-to-date. |
| @end ifset |
| |
| The following information was last updated on @value{last-update-news}: |
| |
| @heading In @code{GCC} 3.4 versus @code{GCC} 3.3: |
| @itemize @bullet |
| @item |
| Problem Reports fixed (in chronological order of submission): |
| @table @code |
| @item 8485 |
| g77 doesn't accept INTEGER*8 constant in PARAMETER multiplication. |
| @item 11918 |
| (libf2c) isatty does not call f_init. |
| @item 12317 |
| Incorrect documentation for Fortran debugging features. |
| @end table |
| @item |
| Roger Sayle (@email{roger@@eyesopen.com}) fixed the remaining |
| problems with regard to the support of INTEGER*8, INTEGER*2 and INTEGER*1 |
| as a fallout of fixing PR 8485. |
| @end itemize |
| |
| @heading In @code{GCC} 3.3 versus @code{GCC} 3.2: |
| @itemize @bullet |
| @item |
| Problem Reports fixed (in chronological order of submission): |
| @table @code |
| @item 1832 |
| -list directed i/o overflow hangs, -fbounds-check doesn't detect |
| @item 3924 |
| g77 generates code which is rejected by GAS if COFF debugging info is |
| requested |
| @item 6286 |
| Broken links on web pages |
| @item 6367 |
| (libf2c) multiple repeat counts confuse namelist read into array |
| @item 6491 |
| Logical operations error on logicals when using -fugly-logint |
| @item 6742 |
| Generation of C++ Prototype for FORTRAN and extern "C" |
| @item 7113 |
| Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os on irix6.5 |
| @item 7236 |
| (libf2c) OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should assume a direct |
| access file |
| @item 7278 |
| g77 "bug"; the executable misbehave (use of options -O2 -fno-automatic |
| gave wrong results) |
| @item 7384 |
| (libf2c) DATE_AND_TIME milliseconds field inactive on Windows |
| @item 7388 |
| Incorrect output with 0-based array of characters |
| @item 8587 |
| Double complex zero ** double precision number -> NaN instead of zero |
| @item 9038 |
| -ffixed-line-length-none -x f77-cpp-input gives: Warning: unknown register name line-length-none |
| @item 9263 |
| ICE caused by invalid PARAMETER in implied DO loop |
| @item 10197 |
| Direct access files not unformatted by default |
| @item 10726 |
| Documentation for function IDATE Intrinsic (UNIX) is wrong [fixed in 3.3.1]. |
| @end table |
| @item |
| Richard Henderson (@email{rth@@redhat.com}) analyzed and improved the handling |
| of (no-)aliasing information for dummy arguments and improved the optimization |
| of induction variables in unrolled loops. |
| @end itemize |
| |
| @heading In @code{GCC} 3.2 versus @code{GCC} 3.1: |
| @itemize @bullet |
| @item |
| Problem Reports fixed (in chronological order of submission): |
| @table @code |
| @item 7681 |
| ICE in compensate_edge, at reg-stack.c:2591 |
| @item 8308 |
| gcc-3.x does not compile files with suffix .r (RATFOR) [Fixed in 3.2.1] |
| @item 9258 |
| [3.2/3.3/3.4 regression] ICE in compensate_edge, at reg-stack.c:2589 |
| @end table |
| @end itemize |
| |
| @heading In @code{GCC} 3.1 (formerly known as g77-0.5.27) versus @code{GCC} 3.0: |
| @itemize @bullet |
| @item |
| Problem Reports fixed (in chronological order of submission): |
| @table @code |
| @item 947 |
| Data statement initialization with subscript of kind INTEGER*2 |
| @item 3743 |
| Reference to intrinsic `ISHFT' invalid |
| @item 3807 |
| Function BESJN(integer,double) problems |
| @item 3957 |
| g77 -pipe -xf77-cpp-input sends output to stdout |
| @item 4279 |
| g77 -h" gives bogus output |
| @item 4730 |
| ICE on valid input using CALL EXIT(%VAL(...)) |
| @item 4752 |
| g77 -v -c -xf77-version /dev/null -xnone causes ice |
| @item 4885 |
| BACKSPACE example that doesn't work as of gcc/g77-3.0.x |
| @item 5122 |
| g77 rejects accepted use of INTEGER*2 as type of DATA statement loop index |
| @item 5397 |
| ICE on compiling source with 540 000 000 REAL array |
| @item 5473 |
| ICE on BESJN(integer*8,real) |
| @item 5837 |
| bug in loop unrolling |
| @item 6106 |
| sparc-sun-solaris2.7 gcc-3.1 extra g77 testsuite failures w/-m64 |
| @item 6138 |
| Incorrect acces of integer*1 variables on PA |
| @item 6304 |
| Failure of LAPACK test dtest on irix6.5 with -mabi=64 -O2 |
| @end table |
| |
| @item |
| @command{g77} now has its man page generated from the texinfo documentation, |
| to guarantee that it remains up to date. |
| |
| @item |
| @command{g77} used to reject the following program on 32-bit targets: |
| @smallexample |
| PROGRAM PROG |
| DIMENSION A(140 000 000) |
| END |
| @end smallexample |
| with the message: |
| @smallexample |
| prog.f: In program `prog': |
| prog.f:2: |
| DIMENSION A(140 000 000) |
| ^ |
| Array `a' at (^) is too large to handle |
| @end smallexample |
| because 140 000 000 REALs is larger than the largest bit-extent that can be |
| expressed in 32 bits. However, bit-sizes never play a role after offsets |
| have been converted to byte addresses. Therefore this check has been removed, |
| and the limit is now 2 Gbyte of memory (around 530 000 000 REALs). |
| Note: On GNU/Linux systems one has to compile and link programs that occupy |
| more than 1 Gbyte statically, i.e.@: @code{g77 -static ...}. |
| |
| @item |
| Based on work done by Juergen Pfeifer (@email{juergen.pfeifer@@gmx.net}) |
| libf2c is now a shared library. One can still link in all objects with |
| the program by specifying the @option{-static} option. |
| |
| @item |
| Robert Anderson (@email{rwa@@alumni.princeton.edu}) thought up a two |
| line change that enables g77 to compile such code as: |
| @smallexample |
| SUBROUTINE SUB(A, N) |
| DIMENSION N(2) |
| DIMENSION A(N(1),N(2)) |
| A(1,1) = 1. |
| END |
| @end smallexample |
| Note the use of array elements in the bounds of the adjustable array A. |
| |
| @item |
| George Helffrich (@email{george@@geo.titech.ac.jp}) implemented a change |
| in substring index checking (when specifying @option{-fbounds-check}) |
| that permits the use of zero length substrings of the form |
| @code{string(1:0)}. |
| |
| @item |
| Based on code developed by Pedro Vazquez (@email{vazquez@@penelope.iqm.unicamp.br}), |
| the @code{libf2c} library is now able to read and write files larger than |
| 2 Gbyte on 32-bit target machines, if the operating system supports this. |
| @end itemize |
| |
| @heading In 0.5.26, @code{GCC} 3.0 versus @code{GCC} 2.95: |
| @itemize @bullet |
| @item |
| When a REWIND was issued after a WRITE statement on an unformatted |
| file, the implicit truncation was performed by copying the truncated |
| file to /tmp and copying the result back. This has been fixed by using |
| the @code{ftruncate} OS function. Thanks go to the GAMESS developers |
| for bringing this to our attention. |
| |
| @item |
| Using options @option{-g}, @option{-ggdb} or @option{-gdwarf[-2]} (where |
| appropriate for your target) now also enables debugging information |
| for COMMON BLOCK and EQUIVALENCE items to be emitted. |
| Thanks go to Andrew Vaught (@email{andy@@xena.eas.asu.edu}) and |
| George Helffrich (@email{george@@geology.bristol.ac.uk}) for |
| fixing this longstanding problem. |
| |
| @item |
| It is not necessary anymore to use the option @option{-femulate-complex} |
| to compile Fortran code using COMPLEX arithmetic, even on 64-bit machines |
| (like the Alpha). This will improve code generation. |
| |
| @item |
| INTRINSIC arithmetic functions are now treated as routines that do not |
| depend on anything but their argument(s). This enables further instruction |
| scheduling, because it is known that they cannot read or modify arbitrary |
| locations. |
| |
| @ifclear USERVISONLY |
| @item |
| Upgrade to @code{libf2c} as of 2000-12-05. |
| |
| This fixes a bug where a namelist containing initialization of LOGICAL |
| items and a variable starting with T or F would be read incorrectly. |
| |
| @item |
| The @code{TtyNam} intrinsics now set @var{Name} to all spaces (at run time) |
| if the system has no @code{ttyname} implementation available. |
| |
| @item |
| Upgrade to @code{libf2c} as of 1999-06-28. |
| |
| This fixes a bug whereby |
| input to a @code{NAMELIST} read involving a repeat count, |
| such as @samp{K(5)=10*3}, |
| was not properly handled by @code{libf2c}. |
| The first item was written to @samp{K(5)}, |
| but the remaining nine were written elsewhere (still within the array), |
| not necessarily starting at @samp{K(6)}. |
| @end ifclear |
| @end itemize |
| |
| @heading In 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 1.1.2: |
| @itemize @bullet |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer generates bad code for assignments, |
| or other conversions, |
| of @code{REAL} or @code{COMPLEX} constant expressions |
| to type @code{INTEGER(KIND=2)} |
| (often referred to as @code{INTEGER*8}). |
| |
| For example, @samp{INTEGER*8 J; J = 4E10} now works as documented. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer truncates @code{INTEGER(KIND=2)} |
| (usually @code{INTEGER*8}) |
| subscript expressions when evaluating array references |
| on systems with pointers widers than @code{INTEGER(KIND=1)} |
| (such as Alphas). |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer generates bad code |
| for an assignment to a @code{COMPLEX} variable or array |
| that partially overlaps one or more of the sources |
| of the same assignment |
| (a very rare construction). |
| It now assigns through a temporary, |
| in cases where such partial overlap is deemed possible. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @code{libg2c} (@code{libf2c}) no longer loses track |
| of the file being worked on |
| during a @code{BACKSPACE} operation. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @code{libg2c} (@code{libf2c}) fixes a bug whereby |
| input to a @code{NAMELIST} read involving a repeat count, |
| such as @samp{K(5)=10*3}, |
| was not properly handled by @code{libf2c}. |
| The first item was written to @samp{K(5)}, |
| but the remaining nine were written elsewhere (still within the array), |
| not necessarily starting at @samp{K(6)}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @c Tim Prince reported this, regarding the TEST_FPU benchmark. |
| Automatic arrays now seem to be working on HP-UX systems. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The @code{Date} intrinsic now returns the correct result |
| on big-endian systems. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} so it no longer crashes when compiling |
| I/O statements using keywords that define @code{INTEGER} values, |
| such as @samp{IOSTAT=@var{j}}, |
| where @var{j} is other than default @code{INTEGER} |
| (such as @code{INTEGER*2}). |
| Instead, it issues a diagnostic. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/}, |
| where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2}, |
| instead of producing a spurious diagnostic. |
| Also fix @samp{DATA (A(I),I=1,N)}, |
| where @samp{N} is not default @code{INTEGER} |
| to work instead of crashing @command{g77}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The @option{-ax} option is now obeyed when compiling Fortran programs. |
| (It is passed to the @file{f771} driver.) |
| @end ifclear |
| |
| @item |
| The new @option{-fbounds-check} option |
| causes @command{g77} to compile run-time bounds checks |
| of array subscripts, as well as of substring start and end points. |
| |
| @item |
| @code{libg2c} now supports building as multilibbed library, |
| which provides better support for systems |
| that require options such as @option{-mieee} |
| to work properly. |
| |
| @item |
| Source file names with the suffixes @samp{.FOR} and @samp{.FPP} |
| now are recognized by @command{g77} |
| as if they ended in @samp{.for} and @samp{.fpp}, respectively. |
| |
| @item |
| The order of arguments to the @emph{subroutine} forms of the |
| @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam} |
| intrinsics has been swapped. |
| The argument serving as the returned value |
| for the corresponding function forms |
| now is the @emph{second} argument, |
| making these consistent with the other subroutine forms |
| of @code{libU77} intrinsics. |
| |
| @item |
| @command{g77} now warns about a reference to an intrinsic |
| that has an interface that is not Year 2000 (Y2K) compliant. |
| Also, @code{libg2c} has been changed to increase the likelihood |
| of catching references to the implementations of these intrinsics |
| using the @code{EXTERNAL} mechanism |
| (which would avoid the new warnings). |
| |
| @ifset DOC-G77 |
| @xref{Year 2000 (Y2K) Problems}, for more information. |
| @end ifset |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} now warns about a reference to a function |
| when the corresponding @emph{subsequent} function program unit |
| disagrees with the reference concerning the type of the function. |
| @end ifclear |
| |
| @item |
| @option{-fno-emulate-complex} is now the default option. |
| This should result in improved performance |
| of code that uses the @code{COMPLEX} data type. |
| |
| @cindex alignment |
| @cindex double-precision performance |
| @cindex -malign-double |
| @item |
| The @option{-malign-double} option |
| now reliably aligns @emph{all} double-precision variables and arrays |
| on Intel x86 targets. |
| |
| @ifclear USERVISONLY |
| @item |
| Even without the @option{-malign-double} option, |
| @command{g77} reliably aligns local double-precision variables |
| that are not in @code{EQUIVALENCE} areas |
| and not @code{SAVE}'d. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands |
| instead of generating a run-time call to |
| the @code{libf2c} routines @code{c_div} or @code{z_div}, |
| unless the @option{-Os} option is specified. |
| @end ifclear |
| |
| @item |
| @command{g77} no longer generates code to maintain @code{errno}, |
| a C-language concept, |
| when performing operations such as the @code{SqRt} intrinsic. |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} developers can temporarily use |
| the @option{-fflatten-arrays} option |
| to compare how the compiler handles code generation |
| using C-like constructs as compared to the |
| Fortran-like method constructs normally used. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| A substantial portion of the @command{g77} front end's code-generation component |
| was rewritten. |
| It now generates code using facilities more robustly supported |
| by the @command{gcc} back end. |
| One effect of this rewrite is that some codes no longer produce |
| a spurious ``label @var{lab} used before containing binding contour'' |
| message. |
| @end ifclear |
| |
| @item |
| Support for the @option{-fugly} option has been removed. |
| |
| @ifclear USERVISONLY |
| @item |
| Improve documentation and indexing, |
| including information on Year 2000 (Y2K) compliance, |
| and providing more information on internals of the front end. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Upgrade to @code{libf2c} as of 1999-05-10. |
| @end ifclear |
| @end itemize |
| |
| @heading In 0.5.24 versus 0.5.23: |
| |
| There is no @command{g77} version 0.5.24 at this time, |
| or planned. |
| 0.5.24 is the version number designated for bug fixes and, |
| perhaps, some new features added, |
| to 0.5.23. |
| Version 0.5.23 requires @command{gcc} 2.8.1, |
| as 0.5.24 was planned to require. |
| |
| Due to @code{EGCS} becoming @code{GCC} |
| (which is now an acronym for ``GNU Compiler Collection''), |
| and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95, |
| there seems to be no need for an actual 0.5.24 release. |
| |
| To reduce the confusion already resulting from use of 0.5.24 |
| to designate @command{g77} versions within @code{EGCS} versions 1.0 and 1.1, |
| as well as in versions of @command{g77} documentation and notices |
| during that period, |
| ``mainline'' @command{g77} version numbering resumes |
| at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2), |
| skipping over 0.5.24 as a placeholder version number. |
| |
| To repeat, there is no @command{g77} 0.5.24, but there is now a 0.5.25. |
| Please remain calm and return to your keypunch units. |
| |
| @c 1999-03-15: EGCS 1.1.2 released. |
| @heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1: |
| @ifclear USERVISONLY |
| @itemize @bullet |
| @item |
| Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c}) |
| so the returned year is in the documented, non-Y2K-compliant range |
| of 0-99, |
| instead of being returned as 100 in the year 2000. |
| |
| @ifset DOC-G77 |
| @xref{IDate Intrinsic (VXT)}, |
| for more information. |
| @end ifset |
| |
| @item |
| Fix the @code{Date_and_Time} intrinsic (in @code{libg2c}) |
| to return the milliseconds value properly |
| in @var{Values}(8). |
| |
| @item |
| Fix the @code{LStat} intrinsic (in @code{libg2c}) |
| to return device-ID information properly |
| in @var{SArray}(7). |
| |
| @item |
| Improve documentation. |
| @end itemize |
| @end ifclear |
| |
| @c 1998-12-04: EGCS 1.1.1 released. |
| @heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1: |
| @ifclear USERVISONLY |
| @itemize @bullet |
| @item |
| Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation |
| (as appropriate) |
| whenever a @code{REWIND} is done. |
| |
| (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in |
| @command{g77}'s version of @code{libf2c}.) |
| |
| @item |
| Fix @code{libg2c} so it no longer crashes with a spurious diagnostic |
| upon doing any I/O following a direct formatted write. |
| |
| (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in |
| @command{g77}'s version of @code{libf2c}.) |
| |
| @item |
| Fix @command{g77} so it no longer crashes compiling references |
| to the @code{Rand} intrinsic on some systems. |
| |
| @item |
| Fix @command{g77} portion of installation process so it works |
| better on some systems |
| (those with shells requiring @samp{else true} clauses |
| on @code{if} constructs |
| for the completion code to be set properly). |
| @end itemize |
| @end ifclear |
| |
| @c 1998-09-03: EGCS 1.1 released. |
| @heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3: |
| @itemize @bullet |
| @ifclear USERVISONLY |
| @item |
| Fix bugs in the @code{libU77} intrinsic @code{HostNm} |
| that wrote one byte beyond the end of its @code{CHARACTER} |
| argument, |
| and in the @code{libU77} intrinsics |
| @code{GMTime} and @code{LTime} |
| that overwrote their arguments. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Assumed arrays with negative bounds |
| (such as @samp{REAL A(-1:*)}) |
| no longer elicit spurious diagnostics from @command{g77}, |
| even on systems with pointers having |
| different sizes than integers. |
| |
| This bug is not known to have existed in any |
| recent version of @command{gcc}. |
| It was introduced in an early release of @code{egcs}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Valid combinations of @code{EXTERNAL}, |
| passing that external as a dummy argument |
| without explicitly giving it a type, |
| and, in a subsequent program unit, |
| referencing that external as |
| an external function with a different type |
| no longer crash @command{g77}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @code{CASE DEFAULT} no longer crashes @command{g77}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The @option{-Wunused} option no longer issues a spurious |
| warning about the ``master'' procedure generated by |
| @command{g77} for procedures containing @code{ENTRY} statements. |
| @end ifclear |
| |
| @item |
| Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a |
| compile-time constant @code{INTEGER} expression. |
| |
| @item |
| Fix @command{g77} @option{-g} option so procedures that |
| use @code{ENTRY} can be stepped through, line by line, |
| in @command{gdb}. |
| |
| @item |
| Allow any @code{REAL} argument to intrinsics |
| @code{Second} and @code{CPU_Time}. |
| |
| @item |
| Use @code{tempnam}, if available, to open scratch files |
| (as in @samp{OPEN(STATUS='SCRATCH')}) |
| so that the @code{TMPDIR} environment variable, |
| if present, is used. |
| |
| @item |
| @command{g77}'s version of @code{libf2c} separates out |
| the setting of global state |
| (such as command-line arguments and signal handling) |
| from @file{main.o} into distinct, new library |
| archive members. |
| |
| This should make it easier to write portable applications |
| that have their own (non-Fortran) @code{main()} routine |
| properly set up the @code{libf2c} environment, even |
| when @code{libf2c} (now @code{libg2c}) is a shared library. |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer installs the @file{f77} command |
| and @file{f77.1} man page |
| in the @file{/usr} or @file{/usr/local} hierarchy, |
| even if the @file{f77-install-ok} file exists |
| in the source or build directory. |
| See the installation documentation for more information. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer installs the @file{libf2c.a} library |
| and @file{f2c.h} include file |
| in the @file{/usr} or @file{/usr/local} hierarchy, |
| even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist |
| in the source or build directory. |
| See the installation documentation for more information. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The @file{libf2c.a} library produced by @command{g77} has been |
| renamed to @file{libg2c.a}. |
| It is installed only in the @command{gcc} ``private'' |
| directory hierarchy, @file{gcc-lib}. |
| This allows system administrators and users to choose which |
| version of the @code{libf2c} library from @code{netlib} they |
| wish to use on a case-by-case basis. |
| See the installation documentation for more information. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The @file{f2c.h} include (header) file produced by @command{g77} |
| has been renamed to @file{g2c.h}. |
| It is installed only in the @command{gcc} ``private'' |
| directory hierarchy, @file{gcc-lib}. |
| This allows system administrators and users to choose which |
| version of the include file from @code{netlib} they |
| wish to use on a case-by-case basis. |
| See the installation documentation for more information. |
| @end ifclear |
| |
| @item |
| The @command{g77} command now expects the run-time library |
| to be named @code{libg2c.a} instead of @code{libf2c.a}, |
| to ensure that a version other than the one built and |
| installed as part of the same @command{g77} version is picked up. |
| |
| @ifclear USERVISONLY |
| @item |
| During the configuration and build process, |
| @command{g77} creates subdirectories it needs only as it |
| needs them. |
| Other cleaning up of the configuration and build process |
| has been performed as well. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @code{install-info} now used to update the directory of |
| Info documentation to contain an entry for @command{g77} |
| (during installation). |
| @end ifclear |
| |
| @item |
| Some diagnostics have been changed from warnings to errors, |
| to prevent inadvertent use of the resulting, probably buggy, |
| programs. |
| These mostly include diagnostics about use of unsupported features |
| in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and |
| @code{WRITE} statements, |
| and about truncations of various sorts of constants. |
| |
| @ifclear USERVISONLY |
| @item |
| Improve compilation of @code{FORMAT} expressions so that |
| a null byte is appended to the last operand if it |
| is a constant. |
| This provides a cleaner run-time diagnostic as provided |
| by @code{libf2c} for statements like @samp{PRINT '(I1', 42}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve documentation and indexing. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The upgrade to @code{libf2c} as of 1998-06-18 |
| should fix a variety of problems, including |
| those involving some uses of the @code{T} format |
| specifier, and perhaps some build (porting) problems |
| as well. |
| @end ifclear |
| @end itemize |
| |
| @c 1998-09-03: EGCS 1.1 released. |
| @heading In @code{EGCS} 1.1 versus @command{g77} 0.5.23: |
| @itemize @bullet |
| @ifclear USERVISONLY |
| @cindex DNRM2 |
| @cindex stack, 387 coprocessor |
| @cindex Intel x86 |
| @cindex -O2 |
| @item |
| Fix a code-generation bug that afflicted |
| Intel x86 targets when @option{-O2} was specified |
| compiling, for example, an old version of |
| the @code{DNRM2} routine. |
| |
| The x87 coprocessor stack was being |
| mismanaged in cases involving assigned @code{GOTO} |
| and @code{ASSIGN}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer produces incorrect code |
| and initial values |
| for @code{EQUIVALENCE} and @code{COMMON} |
| aggregates that, due to ``unnatural'' ordering of members |
| vis-a-vis their types, require initial padding. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} crash compiling code |
| containing the construct @samp{CMPLX(0.)} or similar. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer crashes when compiling code |
| containing specification statements such as |
| @samp{INTEGER(KIND=7) PTR}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer crashes when compiling code |
| such as @samp{J = SIGNAL(1, 2)}. |
| @end ifclear |
| |
| @item |
| @command{g77} now treats @samp{%LOC(@var{expr})} and |
| @samp{LOC(@var{expr})} as ``ordinary'' expressions |
| when they are used as arguments in procedure calls. |
| This change applies only to global (filewide) analysis, |
| making it consistent with |
| how @command{g77} actually generates code |
| for these cases. |
| |
| Previously, @command{g77} treated these expressions |
| as denoting special ``pointer'' arguments |
| for the purposes of filewide analysis. |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} crash |
| (or apparently infinite run-time) |
| when compiling certain complicated expressions |
| involving @code{COMPLEX} arithmetic |
| (especially multiplication). |
| @end ifclear |
| |
| @cindex alignment |
| @cindex double-precision performance |
| @cindex -malign-double |
| @item |
| Align static double-precision variables and arrays |
| on Intel x86 targets |
| regardless of whether @option{-malign-double} is specified. |
| |
| Generally, this affects only local variables and arrays |
| having the @code{SAVE} attribute |
| or given initial values via @code{DATA}. |
| |
| @item |
| The @command{g77} driver now ensures that @option{-lg2c} |
| is specified in the link phase prior to any |
| occurrence of @option{-lm}. |
| This prevents accidentally linking to a routine |
| in the SunOS4 @option{-lm} library |
| when the generated code wants to link to the one |
| in @code{libf2c} (@code{libg2c}). |
| |
| @item |
| @command{g77} emits more debugging information when |
| @option{-g} is used. |
| |
| This new information allows, for example, |
| @kbd{which __g77_length_a} to be used in @command{gdb} |
| to determine the type of the phantom length argument |
| supplied with @code{CHARACTER} variables. |
| |
| This information pertains to internally-generated |
| type, variable, and other information, |
| not to the longstanding deficiencies vis-a-vis |
| @code{COMMON} and @code{EQUIVALENCE}. |
| |
| @item |
| The F90 @code{Date_and_Time} intrinsic now is |
| supported. |
| |
| @item |
| The F90 @code{System_Clock} intrinsic allows |
| the optional arguments (except for the @code{Count} |
| argument) to be omitted. |
| |
| @ifclear USERVISONLY |
| @item |
| Upgrade to @code{libf2c} as of 1998-06-18. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve documentation and indexing. |
| @end ifclear |
| @end itemize |
| |
| @ifset DOC-NEWS |
| @heading In previous versions: |
| |
| Information on previous versions is not provided |
| in this @file{@value{path-g77}/NEWS} file, |
| to keep it short. |
| See @file{@value{path-g77}/news.texi}, |
| or any of its other derivations |
| (Info, HTML, dvi forms) |
| for such information. |
| @end ifset |
| |
| @ifclear DOC-NEWS |
| @c 1998-05-20: 0.5.23 released. |
| @heading In 0.5.23 versus 0.5.22: |
| @itemize @bullet |
| @item |
| This release contains several regressions against |
| version 0.5.22 of @command{g77}, due to using the |
| ``vanilla'' @command{gcc} back end instead of patching |
| it to fix a few bugs and improve performance in a |
| few cases. |
| |
| Features that have been dropped from this version |
| of @command{g77} due to their being implemented |
| via @command{g77}-specific patches to the @command{gcc} |
| back end in previous releases include: |
| |
| @itemize @minus |
| @item |
| Support for @code{__restrict__} keyword, |
| the options @option{-fargument-alias}, @option{-fargument-noalias}, |
| and @option{-fargument-noalias-global}, |
| and the corresponding alias-analysis code. |
| |
| (@code{egcs} has the alias-analysis |
| code, but not the @code{__restrict__} keyword. |
| @code{egcs} @command{g77} users benefit from the alias-analysis |
| code despite the lack of the @code{__restrict__} keyword, |
| which is a C-language construct.) |
| |
| @item |
| Support for the GNU compiler options |
| @option{-fmove-all-movables}, |
| @option{-freduce-all-givs}, |
| and @option{-frerun-loop-opt}. |
| |
| (@code{egcs} supports these options. |
| @command{g77} users of @code{egcs} benefit from them even if |
| they are not explicitly specified, |
| because the defaults are optimized for @command{g77} users.) |
| |
| @item |
| Support for the @option{-W} option warning about |
| integer division by zero. |
| |
| @item |
| The Intel x86-specific option @option{-malign-double} |
| applying to stack-allocated data |
| as well as statically-allocate data. |
| @end itemize |
| |
| @ifclear USERVISONLY |
| Note that the @file{gcc/f/gbe/} subdirectory has been removed |
| from this distribution as a result of @command{g77} no longer |
| including patches for the @command{gcc} back end. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix bugs in the @code{libU77} intrinsic @code{HostNm} |
| that wrote one byte beyond the end of its @code{CHARACTER} |
| argument, |
| and in the @code{libU77} intrinsics |
| @code{GMTime} and @code{LTime} |
| that overwrote their arguments. |
| @end ifclear |
| |
| @item |
| Support @command{gcc} version 2.8, |
| and remove support for prior versions of @command{gcc}. |
| |
| @cindex -@w{}-driver option |
| @cindex @command{g77} options, -@w{}-driver |
| @cindex options, -@w{}-driver |
| @item |
| Remove support for the @option{--driver} option, |
| as @command{g77} now does all the driving, |
| just like @command{gcc}. |
| |
| @ifclear USERVISONLY |
| @item |
| @code{CASE DEFAULT} no longer crashes @command{g77}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Valid combinations of @code{EXTERNAL}, |
| passing that external as a dummy argument |
| without explicitly giving it a type, |
| and, in a subsequent program unit, |
| referencing that external as |
| an external function with a different type |
| no longer crash @command{g77}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer installs the @file{f77} command |
| and @file{f77.1} man page |
| in the @file{/usr} or @file{/usr/local} hierarchy, |
| even if the @file{f77-install-ok} file exists |
| in the source or build directory. |
| See the installation documentation for more information. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} no longer installs the @file{libf2c.a} library |
| and @file{f2c.h} include file |
| in the @file{/usr} or @file{/usr/local} hierarchy, |
| even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist |
| in the source or build directory. |
| See the installation documentation for more information. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The @file{libf2c.a} library produced by @command{g77} has been |
| renamed to @file{libg2c.a}. |
| It is installed only in the @command{gcc} ``private'' |
| directory hierarchy, @file{gcc-lib}. |
| This allows system administrators and users to choose which |
| version of the @code{libf2c} library from @code{netlib} they |
| wish to use on a case-by-case basis. |
| See the installation documentation for more information. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The @file{f2c.h} include (header) file produced by @command{g77} |
| has been renamed to @file{g2c.h}. |
| It is installed only in the @command{gcc} ``private'' |
| directory hierarchy, @file{gcc-lib}. |
| This allows system administrators and users to choose which |
| version of the include file from @code{netlib} they |
| wish to use on a case-by-case basis. |
| See the installation documentation for more information. |
| @end ifclear |
| |
| @item |
| The @command{g77} command now expects the run-time library |
| to be named @code{libg2c.a} instead of @code{libf2c.a}, |
| to ensure that a version other than the one built and |
| installed as part of the same @command{g77} version is picked up. |
| |
| @ifclear USERVISONLY |
| @item |
| The @option{-Wunused} option no longer issues a spurious |
| warning about the ``master'' procedure generated by |
| @command{g77} for procedures containing @code{ENTRY} statements. |
| @end ifclear |
| |
| @item |
| @command{g77}'s version of @code{libf2c} separates out |
| the setting of global state |
| (such as command-line arguments and signal handling) |
| from @file{main.o} into distinct, new library |
| archive members. |
| |
| This should make it easier to write portable applications |
| that have their own (non-Fortran) @code{main()} routine |
| properly set up the @code{libf2c} environment, even |
| when @code{libf2c} (now @code{libg2c}) is a shared library. |
| |
| @ifclear USERVISONLY |
| @item |
| During the configuration and build process, |
| @command{g77} creates subdirectories it needs only as it |
| needs them, thus avoiding unnecessary creation of, for example, |
| @file{stage1/f/runtime} when doing a non-bootstrap build. |
| Other cleaning up of the configuration and build process |
| has been performed as well. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @code{install-info} now used to update the directory of |
| Info documentation to contain an entry for @command{g77} |
| (during installation). |
| @end ifclear |
| |
| @item |
| Some diagnostics have been changed from warnings to errors, |
| to prevent inadvertent use of the resulting, probably buggy, |
| programs. |
| These mostly include diagnostics about use of unsupported features |
| in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and |
| @code{WRITE} statements, |
| and about truncations of various sorts of constants. |
| |
| @ifclear USERVISONLY |
| @item |
| Improve documentation and indexing. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Upgrade to @code{libf2c} as of 1998-04-20. |
| |
| This should fix a variety of problems, including |
| those involving some uses of the @code{T} format |
| specifier, and perhaps some build (porting) problems |
| as well. |
| @end ifclear |
| @end itemize |
| |
| @c 1998-03-16: 0.5.22 released. |
| @heading In 0.5.22 versus 0.5.21: |
| @itemize @bullet |
| @ifclear USERVISONLY |
| @item |
| Fix code generation for iterative @code{DO} loops that |
| have one or more references to the iteration variable, |
| or to aliases of it, in their control expressions. |
| For example, @samp{DO 10 J=2,J} now is compiled correctly. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @cindex DNRM2 |
| @cindex stack, 387 coprocessor |
| @cindex Intel x86 |
| @cindex -O2 |
| @item |
| Fix a code-generation bug that afflicted |
| Intel x86 targets when @option{-O2} was specified |
| compiling, for example, an old version of |
| the @code{DNRM2} routine. |
| |
| The x87 coprocessor stack was being |
| mismanaged in cases involving assigned @code{GOTO} |
| and @code{ASSIGN}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @code{DTime} intrinsic so as not to truncate |
| results to integer values (on some systems). |
| @end ifclear |
| |
| @item |
| Fix @code{Signal} intrinsic so it offers portable |
| support for 64-bit systems (such as Digital Alphas |
| running GNU/Linux). |
| |
| @ifclear USERVISONLY |
| @item |
| Fix run-time crash involving @code{NAMELIST} on 64-bit |
| machines such as Alphas. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} version of @code{libf2c} so it no longer |
| produces a spurious @samp{I/O recursion} diagnostic at run time |
| when an I/O operation (such as @samp{READ *,I}) is interrupted |
| in a manner that causes the program to be terminated |
| via the @code{f_exit} routine (such as via @kbd{C-c}). |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} crash triggered by @code{CASE} statement with |
| an omitted lower or upper bound. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} crash compiling references to @code{CPU_Time} |
| intrinsic. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} crash |
| (or apparently infinite run-time) |
| when compiling certain complicated expressions |
| involving @code{COMPLEX} arithmetic |
| (especially multiplication). |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} crash on statements such as |
| @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where |
| @samp{Z} is @code{DOUBLE COMPLEX}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix a @command{g++} crash. |
| @end ifclear |
| |
| @item |
| Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a |
| compile-time constant @code{INTEGER} expression. |
| |
| @item |
| Fix @command{g77} @option{-g} option so procedures that |
| use @code{ENTRY} can be stepped through, line by line, |
| in @command{gdb}. |
| |
| @ifclear USERVISONLY |
| @item |
| Fix a profiling-related bug in @command{gcc} back end for |
| Intel x86 architecture. |
| @end ifclear |
| |
| @item |
| Allow any @code{REAL} argument to intrinsics |
| @code{Second} and @code{CPU_Time}. |
| |
| @item |
| Allow any numeric argument to intrinsics |
| @code{Int2} and @code{Int8}. |
| |
| @item |
| Use @code{tempnam}, if available, to open scratch files |
| (as in @samp{OPEN(STATUS='SCRATCH')}) |
| so that the @code{TMPDIR} environment variable, |
| if present, is used. |
| |
| @item |
| Rename the @command{gcc} keyword @code{restrict} to |
| @code{__restrict__}, to avoid rejecting valid, existing, |
| C programs. |
| Support for @code{restrict} is now more like support |
| for @code{complex}. |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @option{-fpedantic} to not reject procedure invocations |
| such as @samp{I=J()} and @samp{CALL FOO()}. |
| @end ifclear |
| |
| @item |
| Fix @option{-fugly-comma} to affect invocations of |
| only external procedures. |
| Restore rejection of gratuitous trailing omitted |
| arguments to intrinsics, as in @samp{I=MAX(3,4,,)}. |
| |
| @item |
| Fix compiler so it accepts @option{-fgnu-intrinsics-*} and |
| @option{-fbadu77-intrinsics-*} options. |
| |
| @ifclear USERVISONLY |
| @item |
| Improve diagnostic messages from @code{libf2c} |
| so it is more likely that the printing of the |
| active format string is limited to the string, |
| with no trailing garbage being printed. |
| |
| (Unlike @command{f2c}, @command{g77} did not append |
| a null byte to its compiled form of every |
| format string specified via a @code{FORMAT} statement. |
| However, @command{f2c} would exhibit the problem |
| anyway for a statement like @samp{PRINT '(I)garbage', 1} |
| by printing @samp{(I)garbage} as the format string.) |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve compilation of @code{FORMAT} expressions so that |
| a null byte is appended to the last operand if it |
| is a constant. |
| This provides a cleaner run-time diagnostic as provided |
| by @code{libf2c} for statements like @samp{PRINT '(I1', 42}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix various crashes involving code with diagnosed errors. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix cross-compilation bug when configuring @code{libf2c}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve diagnostics. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve documentation and indexing. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Upgrade to @code{libf2c} as of 1997-09-23. |
| This fixes a formatted-I/O bug that afflicted |
| 64-bit systems with 32-bit integers |
| (such as Digital Alpha running GNU/Linux). |
| @end ifclear |
| @end itemize |
| |
| @c 1998-03-18: EGCS 1.0.2 released. |
| @heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1: |
| @itemize @bullet |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} crash triggered by @code{CASE} statement with |
| an omitted lower or upper bound. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} crash on statements such as |
| @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where |
| @samp{Z} is @code{DOUBLE COMPLEX}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @cindex ELF support |
| @cindex support, ELF |
| @cindex -fPIC option |
| @cindex options, -fPIC |
| @item |
| Fix @option{-fPIC} (such as compiling for ELF targets) |
| on the Intel x86 architecture target |
| so invalid assembler code is no longer produced. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @option{-fpedantic} to not reject procedure invocations |
| such as @samp{I=J()} and @samp{CALL FOO()}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @option{-fugly-comma} to affect invocations of |
| only external procedures. |
| Restore rejection of gratuitous trailing omitted |
| arguments to intrinsics, as in @samp{I=MAX(3,4,,)}. |
| @end ifclear |
| |
| @item |
| Fix compiler so it accepts @option{-fgnu-intrinsics-*} and |
| @option{-fbadu77-intrinsics-*} options. |
| @end itemize |
| |
| @c 1998-01-06: EGCS 1.0.1 released. |
| @heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0: |
| @ifclear USERVISONLY |
| @itemize @bullet |
| @item |
| Fix run-time crash involving @code{NAMELIST} on 64-bit |
| machines such as Alphas. |
| @end itemize |
| @end ifclear |
| |
| @c 1997-12-03: EGCS 1.0 released. |
| @heading In @code{EGCS} 1.0 versus @command{g77} 0.5.21: |
| @itemize @bullet |
| @item |
| Version 1.0 of @code{egcs} |
| contains several regressions against |
| version 0.5.21 of @command{g77}, |
| due to using the |
| ``vanilla'' @command{gcc} back end instead of patching |
| it to fix a few bugs and improve performance in a |
| few cases. |
| |
| Features that have been dropped from this version |
| of @command{g77} due to their being implemented |
| via @command{g77}-specific patches to the @command{gcc} |
| back end in previous releases include: |
| |
| @itemize @minus |
| @item |
| Support for the C-language @code{restrict} keyword. |
| |
| @item |
| Support for the @option{-W} option warning about |
| integer division by zero. |
| |
| @item |
| The Intel x86-specific option @option{-malign-double} |
| applying to stack-allocated data |
| as well as statically-allocate data. |
| @end itemize |
| |
| @ifclear USERVISONLY |
| Note that the @file{gcc/f/gbe/} subdirectory has been removed |
| from this distribution as a result of @command{g77} |
| being fully integrated with |
| the @code{egcs} variant of the @command{gcc} back end. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix code generation for iterative @code{DO} loops that |
| have one or more references to the iteration variable, |
| or to aliases of it, in their control expressions. |
| For example, @samp{DO 10 J=2,J} now is compiled correctly. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @code{DTime} intrinsic so as not to truncate |
| results to integer values (on some systems). |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @c Toon Moene discovered these. |
| Some Fortran code, miscompiled |
| by @command{g77} built on @command{gcc} version 2.8.1 |
| on m68k-next-nextstep3 configurations |
| when using the @option{-O2} option, |
| is now compiled correctly. |
| It is believed that a C function known to miscompile |
| on that configuration |
| when using the @samp{-O2 -funroll-loops} options |
| also is now compiled correctly. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Remove support for non-@code{egcs} versions of @command{gcc}. |
| @end ifclear |
| |
| @cindex -@w{}-driver option |
| @cindex @command{g77} options, -@w{}-driver |
| @cindex options, -@w{}-driver |
| @item |
| Remove support for the @option{--driver} option, |
| as @command{g77} now does all the driving, |
| just like @command{gcc}. |
| |
| @item |
| Allow any numeric argument to intrinsics |
| @code{Int2} and @code{Int8}. |
| |
| @ifclear USERVISONLY |
| @item |
| Improve diagnostic messages from @code{libf2c} |
| so it is more likely that the printing of the |
| active format string is limited to the string, |
| with no trailing garbage being printed. |
| |
| (Unlike @command{f2c}, @command{g77} did not append |
| a null byte to its compiled form of every |
| format string specified via a @code{FORMAT} statement. |
| However, @code{f2c} would exhibit the problem |
| anyway for a statement like @samp{PRINT '(I)garbage', 1} |
| by printing @samp{(I)garbage} as the format string.) |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Upgrade to @code{libf2c} as of 1997-09-23. |
| This fixes a formatted-I/O bug that afflicted |
| 64-bit systems with 32-bit integers |
| (such as Digital Alpha running GNU/Linux). |
| @end ifclear |
| @end itemize |
| |
| @c 1997-09-09: 0.5.21 released. |
| @heading In 0.5.21: |
| @itemize @bullet |
| @ifclear USERVISONLY |
| @item |
| Fix a code-generation bug introduced by 0.5.20 |
| caused by loop unrolling (by specifying |
| @option{-funroll-loops} or similar). |
| This bug afflicted all code compiled by |
| version 2.7.2.2.f.2 of @command{gcc} (C, C++, |
| Fortran, and so on). |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix a code-generation bug manifested when |
| combining local @code{EQUIVALENCE} with a |
| @code{DATA} statement that follows |
| the first executable statement (or is |
| treated as an executable-context statement |
| as a result of using the @option{-fpedantic} |
| option). |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix a compiler crash that occurred when an |
| integer division by a constant zero is detected. |
| Instead, when the @option{-W} option is specified, |
| the @command{gcc} back end issues a warning about such a case. |
| This bug afflicted all code compiled by |
| version 2.7.2.2.f.2 of @command{gcc} (C, C++, |
| Fortran, and so on). |
| @end ifclear |
| @ifset USERVISONLY |
| @item |
| When the @option{-W} option is specified, @command{gcc}, @command{g77}, |
| and other GNU compilers that incorporate the @command{gcc} |
| back end as modified by @command{g77}, issue |
| a warning about integer division by constant zero. |
| @end ifset |
| |
| @ifclear USERVISONLY |
| @item |
| Fix a compiler crash that occurred in some cases |
| of procedure inlining. |
| (Such cases became more frequent in 0.5.20.) |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix a compiler crash resulting from using @code{DATA} |
| or similar to initialize a @code{COMPLEX} variable or |
| array to zero. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix compiler crashes involving use of @code{AND}, @code{OR}, |
| or @code{XOR} intrinsics. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix compiler bug triggered when using a @code{COMMON} |
| or @code{EQUIVALENCE} variable |
| as the target of an @code{ASSIGN} |
| or assigned-@code{GOTO} statement. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix compiler crashes due to using the name of a some |
| non-standard intrinsics (such as @code{FTell} or |
| @code{FPutC}) as such and as the name of a procedure |
| or common block. |
| Such dual use of a name in a program is allowed by |
| the standard. |
| @end ifclear |
| |
| @c @command{g77}'s version of @code{libf2c} has been modified |
| @c so that the external names of library's procedures do not |
| @c conflict with names used for Fortran procedures compiled |
| @c by @command{g77}. |
| @c An additional layer of jacket procedures has been added |
| @c to @code{libf2c} to map the old names to the new names, |
| @c for automatic use by programs that interface to the |
| @c library procedures via the external-procedure mechanism. |
| @c |
| @c For example, the intrinsic @code{FPUTC} previously was |
| @c implemented by @command{g77} as a call to the @code{libf2c} |
| @c routine @code{fputc_}. |
| @c This would conflict with a Fortran procedure named @code{FPUTC} |
| @c (using default compiler options), and this conflict |
| @c would cause a crash under certain circumstances. |
| @c |
| @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0}, |
| @c which does not conflict with the @code{fputc_} external |
| @c that implements a Fortran procedure named @code{FPUTC}. |
| @c |
| @c Programs that refer to @code{FPUTC} as an external procedure |
| @c without supplying their own implementation will link to |
| @c the new @code{libf2c} routine @code{fputc_}, which is |
| @c simply a jacket routine that calls @code{G77_fputc_0}. |
| |
| @ifclear USERVISONLY |
| @item |
| Place automatic arrays on the stack, even if |
| @code{SAVE} or the @option{-fno-automatic} option |
| is in effect. |
| This avoids a compiler crash in some cases. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The @option{-malign-double} option now reliably aligns |
| @code{DOUBLE PRECISION} optimally on Pentium and |
| Pentium Pro architectures (586 and 686 in @command{gcc}). |
| @end ifclear |
| |
| @item |
| New option @option{-Wno-globals} disables warnings |
| about ``suspicious'' use of a name both as a global |
| name and as the implicit name of an intrinsic, and |
| warnings about disagreements over the number or natures of |
| arguments passed to global procedures, or the |
| natures of the procedures themselves. |
| |
| The default is to issue such warnings, which are |
| new as of this version of @command{g77}. |
| |
| @item |
| New option @option{-fno-globals} disables diagnostics |
| about potentially fatal disagreements |
| analysis problems, such as disagreements over the |
| number or natures of arguments passed to global |
| procedures, or the natures of those procedures themselves. |
| |
| The default is to issue such diagnostics and flag |
| the compilation as unsuccessful. |
| With this option, the diagnostics are issued as |
| warnings, or, if @option{-Wno-globals} is specified, |
| are not issued at all. |
| |
| This option also disables inlining of global procedures, |
| to avoid compiler crashes resulting from coding errors |
| that these diagnostics normally would identify. |
| |
| @ifclear USERVISONLY |
| @item |
| Diagnose cases where a reference to a procedure |
| disagrees with the type of that procedure, or |
| where disagreements about the number or nature |
| of arguments exist. |
| This avoids a compiler crash. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix parsing bug whereby @command{g77} rejected a |
| second initialization specification immediately |
| following the first's closing @samp{/} without |
| an intervening comma in a @code{DATA} statement, |
| and the second specification was an implied-DO list. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve performance of the @command{gcc} back end so |
| certain complicated expressions involving @code{COMPLEX} |
| arithmetic (especially multiplication) don't appear to |
| take forever to compile. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix a couple of profiling-related bugs in @command{gcc} |
| back end. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Integrate GNU Ada's (GNAT's) changes to the back end, |
| which consist almost entirely of bug fixes. |
| These fixes are circa version 3.10p of GNAT. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Include some other @command{gcc} fixes that seem useful in |
| @command{g77}'s version of @command{gcc}. |
| (See @file{gcc/ChangeLog} for details---compare it |
| to that file in the vanilla @code{gcc-2.7.2.3.tar.gz} |
| distribution.) |
| @end ifclear |
| |
| @item |
| Fix @code{libU77} routines that accept file and other names |
| to strip trailing blanks from them, for consistency |
| with other implementations. |
| Blanks may be forcibly appended to such names by |
| appending a single null character (@samp{CHAR(0)}) |
| to the significant trailing blanks. |
| |
| @item |
| Fix @code{CHMOD} intrinsic to work with file names |
| that have embedded blanks, commas, and so on. |
| |
| @item |
| Fix @code{SIGNAL} intrinsic so it accepts an |
| optional third @code{Status} argument. |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @code{IDATE()} intrinsic subroutine (VXT form) |
| so it accepts arguments in the correct order. |
| Documentation fixed accordingly, and for |
| @code{GMTIME()} and @code{LTIME()} as well. |
| @end ifclear |
| |
| @item |
| Make many changes to @code{libU77} intrinsics to |
| support existing code more directly. |
| |
| Such changes include allowing both subroutine and |
| function forms of many routines, changing @code{MCLOCK()} |
| and @code{TIME()} to return @code{INTEGER(KIND=1)} values, |
| introducing @code{MCLOCK8()} and @code{TIME8()} to |
| return @code{INTEGER(KIND=2)} values, |
| and placing functions that are intended to perform |
| side effects in a new intrinsic group, @code{badu77}. |
| |
| @ifclear USERVISONLY |
| @item |
| Improve @code{libU77} so it is more portable. |
| @end ifclear |
| |
| @item |
| Add options @option{-fbadu77-intrinsics-delete}, |
| @option{-fbadu77-intrinsics-hide}, and so on. |
| |
| @ifclear USERVISONLY |
| @item |
| Fix crashes involving diagnosed or invalid code. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| @command{g77} and @command{gcc} now do a somewhat better |
| job detecting and diagnosing arrays that are too |
| large to handle before these cause diagnostics |
| during the assembler or linker phase, a compiler |
| crash, or generation of incorrect code. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Make some fixes to alias analysis code. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Add support for @code{restrict} keyword in @command{gcc} |
| front end. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Support @command{gcc} version 2.7.2.3 |
| (modified by @command{g77} into version 2.7.2.3.f.1), |
| and remove |
| support for prior versions of @command{gcc}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Incorporate GNAT's patches to the @command{gcc} back |
| end into @command{g77}'s, so GNAT users do not need |
| to apply GNAT's patches to build both GNAT and @command{g77} |
| from the same source tree. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Modify @command{make} rules and related code so that |
| generation of Info documentation doesn't require |
| compilation using @command{gcc}. |
| Now, any ANSI C compiler should be adequate to |
| produce the @command{g77} documentation (in particular, |
| the tables of intrinsics) from scratch. |
| @end ifclear |
| |
| @item |
| Add @code{INT2} and @code{INT8} intrinsics. |
| |
| @item |
| Add @code{CPU_TIME} intrinsic. |
| |
| @item |
| Add @code{ALARM} intrinsic. |
| |
| @item |
| @code{CTIME} intrinsic now accepts any @code{INTEGER} |
| argument, not just @code{INTEGER(KIND=2)}. |
| |
| @ifclear USERVISONLY |
| @item |
| Warn when explicit type declaration disagrees with |
| the type of an intrinsic invocation. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Support @samp{*f771} entry in @command{gcc} @file{specs} file. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix typo in @command{make} rule @command{g77-cross}, used only for |
| cross-compiling. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @code{libf2c} build procedure to re-archive library |
| if previous attempt to archive was interrupted. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Change @command{gcc} to unroll loops only during the last |
| invocation (of as many as two invocations) of loop |
| optimization. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve handling of @option{-fno-f2c} so that code that |
| attempts to pass an intrinsic as an actual argument, |
| such as @samp{CALL FOO(ABS)}, is rejected due to the fact |
| that the run-time-library routine is, effectively, |
| compiled with @option{-ff2c} in effect. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} driver to recognize @option{-fsyntax-only} |
| as an option that inhibits linking, just like @option{-c} or |
| @option{-S}, and to recognize and properly handle the |
| @option{-nostdlib}, @option{-M}, @option{-MM}, @option{-nodefaultlibs}, |
| and @option{-Xlinker} options. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Upgrade to @code{libf2c} as of 1997-08-16. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Modify @code{libf2c} to consistently and clearly diagnose |
| recursive I/O (at run time). |
| @end ifclear |
| |
| @item |
| @command{g77} driver now prints version information (such as produced |
| by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}. |
| |
| @item |
| The @samp{.r} suffix now designates a Ratfor source file, |
| to be preprocessed via the @command{ratfor} command, available |
| separately. |
| |
| @ifclear USERVISONLY |
| @item |
| Fix some aspects of how @command{gcc} determines what kind of |
| system is being configured and what kinds are supported. |
| For example, GNU Linux/Alpha ELF systems now are directly |
| supported. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve diagnostics. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve documentation and indexing. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Include all pertinent files for @code{libf2c} that come |
| from @code{netlib.bell-labs.com}; give any such files |
| that aren't quite accurate in @command{g77}'s version of |
| @code{libf2c} the suffix @samp{.netlib}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Reserve @code{INTEGER(KIND=0)} for future use. |
| @end ifclear |
| @end itemize |
| |
| @c 1997-02-28: 0.5.20 released. |
| @heading In 0.5.20: |
| @itemize @bullet |
| @item |
| The @option{-fno-typeless-boz} option is now the default. |
| |
| This option specifies that non-decimal-radix |
| constants using the prefixed-radix form (such as @samp{Z'1234'}) |
| are to be interpreted as @code{INTEGER(KIND=1)} constants. |
| Specify @option{-ftypeless-boz} to cause such |
| constants to be interpreted as typeless. |
| |
| (Version 0.5.19 introduced @option{-fno-typeless-boz} and |
| its inverse.) |
| |
| @ifset DOC-G77 |
| @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect}, |
| for information on the @option{-ftypeless-boz} option. |
| @end ifset |
| |
| @item |
| Options @option{-ff90-intrinsics-enable} and |
| @option{-fvxt-intrinsics-enable} now are the |
| defaults. |
| |
| Some programs might use names that clash with |
| intrinsic names defined (and now enabled) by these |
| options or by the new @code{libU77} intrinsics. |
| Users of such programs might need to compile them |
| differently (using, for example, @option{-ff90-intrinsics-disable}) |
| or, better yet, insert appropriate @code{EXTERNAL} |
| statements specifying that these names are not intended |
| to be names of intrinsics. |
| |
| @item |
| The @code{ALWAYS_FLUSH} macro is no longer defined when |
| building @code{libf2c}, which should result in improved |
| I/O performance, especially over NFS. |
| |
| @emph{Note:} If you have code that depends on the behavior |
| of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined, |
| you will have to modify @code{libf2c} accordingly before |
| building it from this and future versions of @command{g77}. |
| |
| @ifset DOC-G77 |
| @xref{Output Assumed To Flush}, for more information. |
| @end ifset |
| |
| @item |
| Dave Love's implementation of @code{libU77} has been |
| added to the version of @code{libf2c} distributed with |
| and built as part of @command{g77}. |
| @command{g77} now knows about the routines in this library |
| as intrinsics. |
| |
| @item |
| New option @option{-fvxt} specifies that the |
| source file is written in VXT Fortran, instead of GNU Fortran. |
| |
| @ifset DOC-G77 |
| @xref{VXT Fortran}, for more information on the constructs |
| recognized when the @option{-fvxt} option is specified. |
| @end ifset |
| |
| @item |
| The @option{-fvxt-not-f90} option has been deleted, |
| along with its inverse, @option{-ff90-not-vxt}. |
| |
| If you used one of these deleted options, you should |
| re-read the pertinent documentation to determine which |
| options, if any, are appropriate for compiling your |
| code with this version of @command{g77}. |
| |
| @ifset DOC-G77 |
| @xref{Other Dialects}, for more information. |
| @end ifset |
| |
| @item |
| The @option{-fugly} option now issues a warning, as it |
| likely will be removed in a future version. |
| |
| (Enabling all the @option{-fugly-*} options is unlikely |
| to be feasible, or sensible, in the future, |
| so users should learn to specify only those |
| @option{-fugly-*} options they really need for a |
| particular source file.) |
| |
| @item |
| The @option{-fugly-assumed} option, introduced in |
| version 0.5.19, has been changed to |
| better accommodate old and new code. |
| |
| @ifset DOC-G77 |
| @xref{Ugly Assumed-Size Arrays}, for more information. |
| @end ifset |
| |
| @ifclear USERVISONLY |
| @item |
| Make a number of fixes to the @command{g77} front end and |
| the @command{gcc} back end to better support Alpha (AXP) |
| machines. |
| This includes providing at least one bug-fix to the |
| @command{gcc} back end for Alphas. |
| @end ifclear |
| |
| @item |
| Related to supporting Alpha (AXP) machines, the @code{LOC()} |
| intrinsic and @code{%LOC()} construct now return |
| values of @code{INTEGER(KIND=0)} type, |
| as defined by the GNU Fortran language. |
| |
| This type is wide enough |
| (holds the same number of bits) |
| as the character-pointer type on the machine. |
| |
| On most machines, this won't make a difference, |
| whereas, on Alphas and other systems with 64-bit pointers, |
| the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)} |
| (often referred to as @code{INTEGER*8}) |
| instead of the more common @code{INTEGER(KIND=1)} |
| (often referred to as @code{INTEGER*4}). |
| |
| @item |
| Emulate @code{COMPLEX} arithmetic in the @command{g77} front |
| end, to avoid bugs in @code{complex} support in the |
| @command{gcc} back end. |
| New option @option{-fno-emulate-complex} |
| causes @command{g77} to revert the 0.5.19 behavior. |
| |
| @ifclear USERVISONLY |
| @item |
| Fix bug whereby @samp{REAL A(1)}, for example, caused |
| a compiler crash if @option{-fugly-assumed} was in effect |
| and @var{A} was a local (automatic) array. |
| That case is no longer affected by the new |
| handling of @option{-fugly-assumed}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix @command{g77} command driver so that @samp{g77 -o foo.f} |
| no longer deletes @file{foo.f} before issuing other |
| diagnostics, and so the @option{-x} option is properly |
| handled. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Enable inlining of subroutines and functions by the @command{gcc} |
| back end. |
| This works as it does for @command{gcc} itself---program units |
| may be inlined for invocations that follow them in the same |
| program unit, as long as the appropriate compile-time |
| options are specified. |
| @end ifclear |
| |
| @item |
| Dummy arguments are no longer assumed to potentially alias |
| (overlap) |
| other dummy arguments or @code{COMMON} areas when any of |
| these are defined (assigned to) by Fortran code. |
| |
| This can result in faster and/or smaller programs when |
| compiling with optimization enabled, though on some |
| systems this effect is observed only when @option{-fforce-addr} |
| also is specified. |
| |
| New options @option{-falias-check}, @option{-fargument-alias}, |
| @option{-fargument-noalias}, |
| and @option{-fno-argument-noalias-global} control the |
| way @command{g77} handles potential aliasing. |
| |
| @ifset DOC-G77 |
| @xref{Aliasing Assumed To Work}, for detailed information on why the |
| new defaults might result in some programs no longer working the way they |
| did when compiled by previous versions of @command{g77}. |
| @end ifset |
| |
| @ifclear USERVISONLY |
| @item |
| The @code{CONJG()} and @code{DCONJG()} intrinsics now |
| are compiled in-line. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| The bug-fix for 0.5.19.1 has been re-done. |
| The @command{g77} compiler has been changed back to |
| assume @code{libf2c} has no aliasing problems in |
| its implementations of the @code{COMPLEX} (and |
| @code{DOUBLE COMPLEX}) intrinsics. |
| The @code{libf2c} has been changed to have no such |
| problems. |
| |
| As a result, 0.5.20 is expected to offer improved performance |
| over 0.5.19.1, perhaps as good as 0.5.19 in most |
| or all cases, due to this change alone. |
| |
| @emph{Note:} This change requires version 0.5.20 of |
| @code{libf2c}, at least, when linking code produced |
| by any versions of @command{g77} other than 0.5.19.1. |
| Use @samp{g77 -v} to determine the version numbers |
| of the @code{libF77}, @code{libI77}, and @code{libU77} |
| components of the @code{libf2c} library. |
| (If these version numbers are not printed---in |
| particular, if the linker complains about unresolved |
| references to names like @samp{g77__fvers__}---that |
| strongly suggests your installation has an obsolete |
| version of @code{libf2c}.) |
| @end ifclear |
| |
| @item |
| New option @option{-fugly-assign} specifies that the |
| same memory locations are to be used to hold the |
| values assigned by both statements @samp{I = 3} and |
| @samp{ASSIGN 10 TO I}, for example. |
| (Normally, @command{g77} uses a separate memory location |
| to hold assigned statement labels.) |
| |
| @ifset DOC-G77 |
| @xref{Ugly Assigned Labels}, for more information. |
| @end ifset |
| |
| @item |
| @code{FORMAT} and @code{ENTRY} statements now are allowed to |
| precede @code{IMPLICIT NONE} statements. |
| |
| @ifclear USERVISONLY |
| @item |
| Produce diagnostic for unsupported @code{SELECT CASE} on |
| @code{CHARACTER} type, instead of crashing, at compile time. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Fix crashes involving diagnosed or invalid code. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Change approach to building @code{libf2c} archive |
| (@file{libf2c.a}) so that members are added to it |
| only when truly necessary, so the user that installs |
| an already-built @command{g77} doesn't need to have write |
| access to the build tree (whereas the user doing the |
| build might not have access to install new software |
| on the system). |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Support @command{gcc} version 2.7.2.2 |
| (modified by @command{g77} into version 2.7.2.2.f.2), |
| and remove |
| support for prior versions of @command{gcc}. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Upgrade to @code{libf2c} as of 1997-02-08, and |
| fix up some of the build procedures. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improve general build procedures for @command{g77}, |
| fixing minor bugs (such as deletion of any file |
| named @file{f771} in the parent directory of @code{gcc/}). |
| @end ifclear |
| |
| @item |
| Enable full support of @code{INTEGER(KIND=2)} |
| (often referred to as @code{INTEGER*8}) |
| available in |
| @code{libf2c} and @file{f2c.h} so that @command{f2c} users |
| may make full use of its features via the @command{g77} |
| version of @file{f2c.h} and the @code{INTEGER(KIND=2)} |
| support routines in the @command{g77} version of @code{libf2c}. |
| |
| @item |
| Improve @command{g77} driver and @code{libf2c} so that @samp{g77 -v} |
| yields version information on the library. |
| |
| @item |
| The @code{SNGL} and @code{FLOAT} intrinsics now are |
| specific intrinsics, instead of synonyms for the |
| generic intrinsic @code{REAL}. |
| |
| @item |
| New intrinsics have been added. |
| These are @code{REALPART}, @code{IMAGPART}, |
| @code{COMPLEX}, |
| @code{LONG}, and @code{SHORT}. |
| |
| @item |
| A new group of intrinsics, @code{gnu}, has been added |
| to contain the new @code{REALPART}, @code{IMAGPART}, |
| and @code{COMPLEX} intrinsics. |
| An old group, @code{dcp}, has been removed. |
| |
| @item |
| Complain about industry-wide ambiguous references |
| @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})}, |
| where @var{expr} is @code{DOUBLE COMPLEX} (or any |
| complex type other than @code{COMPLEX}), unless |
| @option{-ff90} option specifies Fortran 90 interpretation |
| or new @option{-fugly-complex} option, in conjunction with |
| @option{-fnot-f90}, specifies @command{f2c} interpretation. |
| |
| @ifclear USERVISONLY |
| @item |
| Make improvements to diagnostics. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Speed up compiler a bit. |
| @end ifclear |
| |
| @ifclear USERVISONLY |
| @item |
| Improvements to documentation and indexing, including |
| a new chapter containing information on one, later |
| more, diagnostics that users are directed to pull |
| up automatically via a message in the diagnostic itself. |
| |
| (Hence the menu item @code{M} for the node |
| @code{Diagnostics} in the top-level menu of |
| the Info documentation.) |
| @end ifclear |
| @end itemize |
| |
| @ifclear DOC-OLDNEWS |
| @heading In previous versions: |
| |
| Information on previous versions is archived |
| in @file{@value{path-g77}/news.texi} |
| following the test of the @code{DOC-OLDNEWS} macro. |
| @end ifclear |
| |
| @ifset DOC-OLDNEWS |
| @c 1997-02-01: 0.5.19.1 released. |
| @heading In 0.5.19.1: |
| @itemize @bullet |
| @item |
| Code-generation bugs afflicting operations on complex |
| data have been fixed. |
| |
| These bugs occurred when assigning the result of an |
| operation to a complex variable (or array element) |
| that also served as an input to that operation. |
| |
| The operations affected by this bug were: @code{CONJG()}, |
| @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()}, |
| @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()}, |
| @code{CSQRT()}, @code{CDSQRT()}, complex division, and |
| raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER} |
| power. |
| (The related generic and @samp{Z}-prefixed intrinsics, |
| such as @code{ZSIN()}, also were affected.) |
| |
| For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I} |
| (where @samp{C} is @code{COMPLEX} and @samp{Z} is |
| @code{DOUBLE COMPLEX}) have been fixed. |
| @end itemize |
| |
| @c 1996-12-07: 0.5.19 released. |
| @heading In 0.5.19: |
| @itemize @bullet |
| @item |
| Fix @code{FORMAT} statement parsing so negative values for |
| specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)}) |
| are correctly processed as negative. |
| |
| @item |
| Fix @code{SIGNAL} intrinsic so it once again accepts a |
| procedure as its second argument. |
| |
| @item |
| A temporary kludge option provides bare-bones information on |
| @code{COMMON} and @code{EQUIVALENCE} members at debug time. |
| |
| @item |
| New @option{-fonetrip} option specifies FORTRAN-66-style |
| one-trip @code{DO} loops. |
| |
| @item |
| New @option{-fno-silent} option causes names of program units |
| to be printed as they are compiled, in a fashion similar to |
| UNIX @command{f77} and @command{f2c}. |
| |
| @item |
| New @option{-fugly-assumed} option specifies that arrays |
| dimensioned via @samp{DIMENSION X(1)}, for example, are to be |
| treated as assumed-size. |
| |
| @item |
| New @option{-fno-typeless-boz} option specifies that non-decimal-radix |
| constants using the prefixed-radix form (such as @samp{Z'1234'}) |
| are to be interpreted as @code{INTEGER} constants. |
| |
| @item |
| New @option{-ff66} option is a ``shorthand'' option that specifies |
| behaviors considered appropriate for FORTRAN 66 programs. |
| |
| @item |
| New @option{-ff77} option is a ``shorthand'' option that specifies |
| behaviors considered appropriate for UNIX @command{f77} programs. |
| |
| @item |
| New @option{-fugly-comma} and @option{-fugly-logint} options provided |
| to perform some of what @option{-fugly} used to do. |
| @option{-fugly} and @option{-fno-ugly} are now ``shorthand'' options, |
| in that they do nothing more than enable (or disable) other |
| @option{-fugly-*} options. |
| |
| @item |
| Fix parsing of assignment statements involving targets that |
| are substrings of elements of @code{CHARACTER} arrays having |
| names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and |
| @samp{REALFUNCTIONFOO}. |
| |
| @item |
| Fix crashes involving diagnosed code. |
| |
| @item |
| Fix handling of local @code{EQUIVALENCE} areas so certain cases |
| of valid Fortran programs are not misdiagnosed as improperly |
| extending the area backwards. |
| |
| @item |
| Support @command{gcc} version 2.7.2.1. |
| |
| @item |
| Upgrade to @code{libf2c} as of 1996-09-26, and |
| fix up some of the build procedures. |
| |
| @item |
| Change code generation for list-directed I/O so it allows |
| for new versions of @code{libf2c} that might return nonzero |
| status codes for some operations previously assumed to always |
| return zero. |
| |
| This change not only affects how @code{IOSTAT=} variables |
| are set by list-directed I/O, it also affects whether |
| @code{END=} and @code{ERR=} labels are reached by these |
| operations. |
| |
| @item |
| Add intrinsic support for new @code{FTELL} and @code{FSEEK} |
| procedures in @code{libf2c}. |
| |
| @item |
| Modify @code{fseek_()} in @code{libf2c} to be more portable |
| (though, in practice, there might be no systems where this |
| matters) and to catch invalid @code{whence} arguments. |
| |
| @item |
| Some useless warnings from the @option{-Wunused} option have |
| been eliminated. |
| |
| @item |
| Fix a problem building the @file{f771} executable |
| on AIX systems by linking with the @option{-bbigtoc} option. |
| |
| @item |
| Abort configuration if @command{gcc} has not been patched |
| using the patch file provided in the @file{gcc/f/gbe/} |
| subdirectory. |
| |
| @item |
| Add options @option{--help} and @option{--version} to the |
| @command{g77} command, to conform to GNU coding guidelines. |
| Also add printing of @command{g77} version number when |
| the @option{--verbose} (@option{-v}) option is used. |
| |
| @item |
| Change internally generated name for local @code{EQUIVALENCE} |
| areas to one based on the alphabetically sorted first name |
| in the list of names for entities placed at the beginning |
| of the areas. |
| |
| @item |
| Improvements to documentation and indexing. |
| @end itemize |
| |
| @c 1996-04-01: 0.5.18 released. |
| @heading In 0.5.18: |
| @itemize @bullet |
| @item |
| Add some rudimentary support for @code{INTEGER*1}, |
| @code{INTEGER*2}, @code{INTEGER*8}, |
| and their @code{LOGICAL} equivalents. |
| (This support works on most, maybe all, @command{gcc} targets.) |
| |
| Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov}) |
| for providing the patch for this! |
| |
| Among the missing elements from the support for these |
| features are full intrinsic support and constants. |
| |
| @item |
| Add some rudimentary support for the @code{BYTE} and |
| @code{WORD} type-declaration statements. |
| @code{BYTE} corresponds to @code{INTEGER*1}, |
| while @code{WORD} corresponds to @code{INTEGER*2}. |
| |
| Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov}) |
| for providing the patch for this! |
| |
| @item |
| The compiler code handling intrinsics has been largely |
| rewritten to accommodate the new types. |
| No new intrinsics or arguments for existing |
| intrinsics have been added, so there is, at this |
| point, no intrinsic to convert to @code{INTEGER*8}, |
| for example. |
| |
| @item |
| Support automatic arrays in procedures. |
| |
| @item |
| Reduce space/time requirements for handling large |
| @emph{sparsely} initialized aggregate arrays. |
| This improvement applies to only a subset of |
| the general problem to be addressed in 0.6. |
| |
| @item |
| Treat initial values of zero as if they weren't |
| specified (in DATA and type-declaration statements). |
| The initial values will be set to zero anyway, but the amount |
| of compile time processing them will be reduced, |
| in some cases significantly (though, again, this |
| is only a subset of the general problem to be |
| addressed in 0.6). |
| |
| A new option, @option{-fzeros}, is introduced to |
| enable the traditional treatment of zeros as any |
| other value. |
| |
| @item |
| With @option{-ff90} in force, @command{g77} incorrectly |
| interpreted @samp{REAL(Z)} as returning a @code{REAL} |
| result, instead of as a @code{DOUBLE PRECISION} |
| result. |
| (Here, @samp{Z} is @code{DOUBLE COMPLEX}.) |
| |
| With @option{-fno-f90} in force, the interpretation remains |
| unchanged, since this appears to be how at least some |
| F77 code using the @code{DOUBLE COMPLEX} extension expected |
| it to work. |
| |
| Essentially, @samp{REAL(Z)} in F90 is the same as |
| @samp{DBLE(Z)}, while in extended F77, it appears to |
| be the same as @samp{REAL(REAL(Z))}. |
| |
| @item |
| An expression involving exponentiation, where both operands |
| were type @code{INTEGER} and the right-hand operand |
| was negative, was erroneously evaluated. |
| |
| @item |
| Fix bugs involving @code{DATA} implied-@code{DO} constructs |
| (these involved an errant diagnostic and a crash, both on good |
| code, one involving subsequent statement-function definition). |
| |
| @item |
| Close @code{INCLUDE} files after processing them, so compiling source |
| files with lots of @code{INCLUDE} statements does not result in |
| being unable to open @code{INCLUDE} files after all the available |
| file descriptors are used up. |
| |
| @item |
| Speed up compiling, especially of larger programs, and perhaps |
| slightly reduce memory utilization while compiling (this is |
| @emph{not} the improvement planned for 0.6 involving large aggregate |
| areas)---these improvements result from simply turning |
| off some low-level code to do self-checking that hasn't been |
| triggered in a long time. |
| |
| @item |
| Introduce three new options that |
| implement optimizations in the @command{gcc} back end (GBE). |
| These options are @option{-fmove-all-movables}, @option{-freduce-all-givs}, |
| and @option{-frerun-loop-opt}, which are enabled, by default, |
| for Fortran compilations. |
| These optimizations are intended to help toon Fortran programs. |
| |
| @item |
| Patch the GBE to do a better job optimizing certain |
| kinds of references to array elements. |
| |
| @item |
| Due to patches to the GBE, the version number of @command{gcc} |
| also is patched to make it easier to manage installations, |
| especially useful if it turns out a @command{g77} change to the |
| GBE has a bug. |
| |
| The @command{g77}-modified version number is the @command{gcc} |
| version number with the string @samp{.f.@var{n}} appended, |
| where @samp{f} identifies the version as enhanced for |
| Fortran, and @var{n} is @samp{1} for the first Fortran |
| patch for that version of @command{gcc}, @samp{2} for the |
| second, and so on. |
| |
| So, this introduces version 2.7.2.f.1 of @command{gcc}. |
| |
| @item |
| Make several improvements and fixes to diagnostics, including |
| the removal of two that were inappropriate or inadequate. |
| |
| @item |
| Warning about two successive arithmetic operators, produced |
| by @option{-Wsurprising}, now produced @emph{only} when both |
| operators are, indeed, arithmetic (not relational/boolean). |
| |
| @item |
| @option{-Wsurprising} now warns about the remaining cases |
| of using non-integral variables for implied-@code{DO} |
| loops, instead of these being rejected unless @option{-fpedantic} |
| or @option{-fugly} specified. |
| |
| @item |
| Allow @code{SAVE} of a local variable or array, even after |
| it has been given an initial value via @code{DATA}, for example. |
| |
| @item |
| Introduce an Info version of @command{g77} documentation, which |
| supersedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and |
| @file{gcc/f/PROJECTS}. |
| These files will be removed in a future release. |
| The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and |
| @file{gcc/f/NEWS} now are automatically built from |
| the texinfo source when distributions are made. |
| |
| This effort was inspired by a first pass at translating |
| @file{g77-0.5.16/f/DOC} that was contributed to Craig by |
| David Ronis (@email{ronis@@onsager.chem.mcgill.ca}). |
| |
| @item |
| New @option{-fno-second-underscore} option to specify |
| that, when @option{-funderscoring} is in effect, a second |
| underscore is not to be appended to Fortran names already |
| containing an underscore. |
| |
| @item |
| Change the way iterative @code{DO} loops work to follow |
| the F90 standard. |
| In particular, calculation of the iteration count is |
| still done by converting the start, end, and increment |
| parameters to the type of the @code{DO} variable, but |
| the result of the calculation is always converted to |
| the default @code{INTEGER} type. |
| |
| (This should have no effect on existing code compiled |
| by @command{g77}, but code written to assume that use |
| of a @emph{wider} type for the @code{DO} variable |
| will result in an iteration count being fully calculated |
| using that wider type (wider |
| than default @code{INTEGER}) must be rewritten.) |
| |
| @item |
| Support @command{gcc} version 2.7.2. |
| |
| @item |
| Upgrade to @code{libf2c} as of 1996-03-23, and |
| fix up some of the build procedures. |
| |
| Note that the email addresses related to @command{f2c} |
| have changed---the distribution site now is |
| named @code{netlib.bell-labs.com}, and the |
| maintainer's new address is @email{dmg@@bell-labs.com}. |
| @end itemize |
| |
| @c 1995-11-18: 0.5.17 released. |
| @heading In 0.5.17: |
| @itemize @bullet |
| @item |
| @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a |
| system's @file{/dev/null} special file if run by user @code{root}. |
| |
| @strong{All users} of version 0.5.16 should ensure that |
| they have not removed @file{/dev/null} or replaced it with an ordinary |
| file (e.g. by comparing the output of @samp{ls -l /dev/null} with |
| @samp{ls -l /dev/zero}. |
| If the output isn't basically the |
| same, contact your system |
| administrator about restoring @file{/dev/null} to its proper status). |
| |
| This bug is particularly insidious because removing @file{/dev/null} as |
| a special file can go undetected for quite a while, aside from |
| various applications and programs exhibiting sudden, strange |
| behaviors. |
| |
| I sincerely apologize for not realizing the |
| implications of the fact that when @samp{g77 -v} runs the @command{ld} command |
| with @samp{-o /dev/null} that @command{ld} tries to @emph{remove} the executable |
| it is supposed to build (especially if it reports unresolved |
| references, which it should in this case)! |
| |
| @item |
| Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit. |
| |
| @item |
| Fix crash that can occur when diagnostics given outside of any |
| program unit (such as when input file contains @samp{@@foo}). |
| |
| @item |
| Fix crashes, infinite loops (hangs), and such involving diagnosed code. |
| |
| @item |
| Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments, |
| and issue clearer error message in cases where target of @code{ASSIGN} |
| or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should |
| never happen). |
| |
| @item |
| Make @code{libf2c} build procedures work on more systems again by |
| eliminating unnecessary invocations of @samp{ld -r -x} and @command{mv}. |
| |
| @item |
| Fix omission of @option{-funix-intrinsics-@dots{}} options in list of permitted |
| options to compiler. |
| |
| @item |
| Fix failure to always diagnose missing type declaration for |
| @code{IMPLICIT NONE}. |
| |
| @item |
| Fix compile-time performance problem (which could sometimes |
| crash the compiler, cause a hang, or whatever, due to a bug |
| in the back end) involving exponentiation with a large @code{INTEGER} |
| constant for the right-hand operator (e.g. @samp{I**32767}). |
| |
| @item |
| Fix build procedures so cross-compiling @command{g77} (the @command{fini} |
| utility in particular) is properly built using the host compiler. |
| |
| @item |
| Add new @option{-Wsurprising} option to warn about constructs that are |
| interpreted by the Fortran standard (and @command{g77}) in ways that |
| are surprising to many programmers. |
| |
| @item |
| Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing |
| @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics. |
| |
| @emph{Note:} You should |
| specify @samp{INTRINSIC ERF,ERFC} in any code where you might use |
| these as generic intrinsics, to improve likelihood of diagnostics |
| (instead of subtle run-time bugs) when using a compiler that |
| doesn't support these as intrinsics (e.g. @command{f2c}). |
| |
| @item |
| Remove from @option{-fno-pedantic} the diagnostic about @code{DO} |
| with non-@code{INTEGER} index variable; issue that under |
| @option{-Wsurprising} instead. |
| |
| @item |
| Clarify some diagnostics that say things like ``ignored'' when that's |
| misleading. |
| |
| @item |
| Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL} |
| operands. |
| |
| @item |
| Minor improvements to code generation for various operations on |
| @code{LOGICAL} operands. |
| |
| @item |
| Minor improvement to code generation for some @code{DO} loops on some |
| machines. |
| |
| @item |
| Support @command{gcc} version 2.7.1. |
| |
| @item |
| Upgrade to @code{libf2c} as of 1995-11-15. |
| @end itemize |
| |
| @c 1995-08-30: 0.5.16 released. |
| @heading In 0.5.16: |
| @itemize @bullet |
| @item |
| Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements |
| not involving @code{COMMON}. |
| |
| @item |
| Fix code-generation bugs involving invoking ``gratis'' library procedures |
| in @code{libf2c} from code compiled with @option{-fno-f2c} by making these |
| procedures known to @command{g77} as intrinsics (not affected by -fno-f2c). |
| This is known to fix code invoking @code{ERF()}, @code{ERFC()}, |
| @code{DERF()}, and @code{DERFC()}. |
| |
| @item |
| Update @code{libf2c} to include netlib patches through 1995-08-16, and |
| @code{#define} @code{WANT_LEAD_0} to 1 to make @command{g77}-compiled code more |
| consistent with other Fortran implementations by outputting |
| leading zeros in formatted and list-directed output. |
| |
| @item |
| Fix a code-generation bug involving adjustable dummy arrays with high |
| bounds whose primaries are changed during procedure execution, and |
| which might well improve code-generation performance for such arrays |
| compared to @command{f2c} plus @command{gcc} (but apparently only when using |
| @file{gcc-2.7.0} or later). |
| |
| @item |
| Fix a code-generation bug involving invocation of @code{COMPLEX} and |
| @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and |
| @code{DOUBLE COMPLEX} divides, when the result |
| of the invocation or divide is assigned directly to a variable |
| that overlaps one or more of the arguments to the invocation or divide. |
| |
| @item |
| Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is |
| nonconstant and the expression is used to dimension a dummy |
| array, since the @command{gcc} back end does not support the necessary |
| mechanics (and the @command{gcc} front end rejects the equivalent |
| construct, as it turns out). |
| |
| @item |
| Fix crash on expressions like @samp{COMPLEX**INTEGER}. |
| |
| @item |
| Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a |
| @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power. |
| |
| @item |
| Fix crashes and such involving diagnosed code. |
| |
| @item |
| Diagnose, instead of crashing on, statement function definitions |
| having duplicate dummy argument names. |
| |
| @item |
| Fix bug causing rejection of good code involving statement function |
| definitions. |
| |
| @item |
| Fix bug resulting in debugger not knowing size of local equivalence |
| area when any member of area has initial value (via @code{DATA}, |
| for example). |
| |
| @item |
| Fix installation bug that prevented installation of @command{g77} driver. |
| Provide for easy selection of whether to install copy of @command{g77} |
| as @command{f77} to replace the broken code. |
| |
| @item |
| Fix @command{gcc} driver (affects @command{g77} thereby) to not |
| gratuitously invoke the |
| @code{f771} program (e.g. when @option{-E} is specified). |
| |
| @item |
| Fix diagnostic to point to correct source line when it immediately |
| follows an @code{INCLUDE} statement. |
| |
| @item |
| Support more compiler options in @command{gcc}/@command{g77} when |
| compiling Fortran files. |
| These options include @option{-p}, @option{-pg}, @option{-aux-info}, @option{-P}, |
| correct setting of version-number macros for preprocessing, full |
| recognition of @option{-O0}, and |
| automatic insertion of configuration-specific linker specs. |
| |
| @item |
| Add new intrinsics that interface to existing routines in @code{libf2c}: |
| @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT}, |
| @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC}, |
| @code{SIGNAL}, and @code{SYSTEM}. |
| Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and |
| @code{SYSTEM} are intrinsic subroutines, not functions (since they |
| have side effects), so to get the return values from @code{SIGNAL} |
| and @code{SYSTEM}, append a final argument specifying an @code{INTEGER} |
| variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}). |
| |
| @item |
| Add new intrinsic group named @code{unix} to contain the new intrinsics, |
| and by default enable this new group. |
| |
| @item |
| Move @code{LOC()} intrinsic out of the @code{vxt} group to the new |
| @code{unix} group. |
| |
| @item |
| Improve @command{g77} so that @samp{g77 -v} by itself (or with |
| certain other options, including @option{-B}, @option{-b}, @option{-i}, |
| @option{-nostdlib}, and @option{-V}) reports lots more useful |
| version info, and so that long-form options @command{gcc} accepts are |
| understood by @command{g77} as well (even in truncated, unambiguous forms). |
| |
| @item |
| Add new @command{g77} option @option{--driver=name} to specify driver when |
| default, @command{gcc}, isn't appropriate. |
| |
| @item |
| Add support for @samp{#} directives (as output by the preprocessor) in the |
| compiler, and enable generation of those directives by the |
| preprocessor (when compiling @samp{.F} files) so diagnostics and debugging |
| info are more useful to users of the preprocessor. |
| |
| @item |
| Produce better diagnostics, more like @command{gcc}, with info such as |
| @samp{In function `foo':} and @samp{In file included from...:}. |
| |
| @item |
| Support @command{gcc}'s @option{-fident} and @option{-fno-ident} options. |
| |
| @item |
| When @option{-Wunused} in effect, don't warn about local variables used as |
| statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration |
| variables, even though, strictly speaking, these are not uses |
| of the variables themselves. |
| |
| @item |
| When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments |
| at all, since there's no way to turn this off for individual |
| cases (@command{g77} might someday start warning about these)---applies |
| to @command{gcc} versions 2.7.0 and later, since earlier versions didn't |
| warn about unused dummy arguments. |
| |
| @item |
| New option @option{-fno-underscoring} that inhibits transformation of names |
| (by appending one or two underscores) so users may experiment |
| with implications of such an environment. |
| |
| @item |
| Minor improvement to @file{gcc/f/info} module to make it easier to build |
| @command{g77} using the native (non-@command{gcc}) compiler on certain machines |
| (but definitely not all machines nor all non-@command{gcc} compilers). |
| Please |
| do not report bugs showing problems compilers have with |
| macros defined in @file{gcc/f/target.h} and used in places like |
| @file{gcc/f/expr.c}. |
| |
| @item |
| Add warning to be printed for each invocation of the compiler |
| if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size |
| is not 32 bits, |
| since @command{g77} is known to not work well for such cases. |
| |
| @item |
| Lots of new documentation (though work is still needed to put it into |
| canonical GNU format). |
| |
| @item |
| Build @code{libf2c} with @option{-g0}, not @option{-g2}, in effect |
| (by default), to produce |
| smaller library without lots of debugging clutter. |
| @end itemize |
| |
| @c 1995-05-19: 0.5.15 released. |
| @heading In 0.5.15: |
| @itemize @bullet |
| @item |
| Fix bad code generation involving @samp{X**I} and temporary, internal variables |
| generated by @command{g77} and the back end (such as for @code{DO} loops). |
| |
| @item |
| Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}. |
| |
| @item |
| Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}. |
| |
| @item |
| Fix crash or other erratic behavior when null character constant |
| (@samp{''}) is encountered. |
| |
| @item |
| Fix crash or other erratic behavior involving diagnosed code. |
| |
| @item |
| Fix code generation for external functions returning type @code{REAL} when |
| the @option{-ff2c} option is in force (which it is by default) so that |
| @command{f2c} compatibility is indeed provided. |
| |
| @item |
| Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified |
| with an array declarator. |
| |
| @item |
| New @option{-ffixed-line-length-@var{n}} option, where @var{n} is the |
| maximum length |
| of a typical fixed-form line, defaulting to 72 columns, such |
| that characters beyond column @var{n} are ignored, or @var{n} is @samp{none}, |
| meaning no characters are ignored. |
| does not affect lines |
| with @samp{&} in column 1, which are always processed as if |
| @option{-ffixed-line-length-none} was in effect. |
| |
| @item |
| No longer generate better code for some kinds of array references, |
| as @command{gcc} back end is to be fixed to do this even better, and it |
| turned out to slow down some code in some cases after all. |
| |
| @item |
| In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial |
| values (e.g. via @code{DATA}), uninitialized members now always |
| initialized to binary zeros (though this is not required by |
| the standard, and might not be done in future versions |
| of @command{g77}). |
| Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas |
| (essentially those with members of more than one type), the |
| uninitialized members were initialized to spaces, to |
| cater to @code{CHARACTER} types, but it seems no existing code expects |
| that, while much existing code expects binary zeros. |
| @end itemize |
| |
| @heading In 0.5.14: |
| @itemize @bullet |
| @item |
| Don't emit bad code when low bound of adjustable array is nonconstant |
| and thus might vary as an expression at run time. |
| |
| @item |
| Emit correct code for calculation of number of trips in @code{DO} loops |
| for cases |
| where the loop should not execute at all. |
| (This bug affected cases |
| where the difference between the begin and end values was less |
| than the step count, though probably not for floating-point cases.) |
| |
| @item |
| Fix crash when extra parentheses surround item in |
| @code{DATA} implied-@code{DO} list. |
| |
| @item |
| Fix crash over minor internal inconsistencies in handling diagnostics, |
| just substitute dummy strings where necessary. |
| |
| @item |
| Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic. |
| |
| @item |
| Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd} |
| is a string of one or more digits. |
| |
| @item |
| Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument. |
| |
| @item |
| Fix various crashes involving code with diagnosed errors. |
| |
| @item |
| Support @option{-I} option for @code{INCLUDE} statement, plus @command{gcc}'s |
| @file{header.gcc} facility for handling systems like MS-DOS. |
| |
| @item |
| Allow @code{INCLUDE} statement to be continued across multiple lines, |
| even allow it to coexist with other statements on the same line. |
| |
| @item |
| Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this |
| fixes a bug involving infinite loops reading EOF with empty list-directed |
| I/O list. |
| |
| @item |
| Remove all the @command{g77}-specific auto-configuration scripts, code, |
| and so on, |
| except for temporary substitutes for bsearch() and strtoul(), as |
| too many configure/build problems were reported in these areas. |
| People will have to fix their systems' problems themselves, or at |
| least somewhere other than @command{g77}, which expects a working ANSI C |
| environment (and, for now, a GNU C compiler to compile @command{g77} itself). |
| |
| @item |
| Complain if initialized common redeclared as larger in subsequent program |
| unit. |
| |
| @item |
| Warn if blank common initialized, since its size can vary and hence |
| related warnings that might be helpful won't be seen. |
| |
| @item |
| New @option{-fbackslash} option, on by default, that causes @samp{\} |
| within @code{CHARACTER} |
| and Hollerith constants to be interpreted a la GNU C. |
| Note that |
| this behavior is somewhat different from @command{f2c}'s, which supports only |
| a limited subset of backslash (escape) sequences. |
| |
| @item |
| Make @option{-fugly-args} the default. |
| |
| @item |
| New @option{-fugly-init} option, on by default, that allows typeless/Hollerith |
| to be specified as initial values for variables or named constants |
| (@code{PARAMETER}), and also allows character<->numeric conversion in |
| those contexts---turn off via @option{-fno-ugly-init}. |
| |
| @item |
| New @option{-finit-local-zero} option to initialize |
| local variables to binary zeros. |
| This does not affect whether they are @code{SAVE}d, i.e. made |
| automatic or static. |
| |
| @item |
| New @option{-Wimplicit} option to warn about implicitly typed variables, arrays, |
| and functions. |
| (Basically causes all program units to default to @code{IMPLICIT NONE}.) |
| |
| @item |
| @option{-Wall} now implies @option{-Wuninitialized} as with @command{gcc} |
| (i.e. unless @option{-O} not specified, since @option{-Wuninitialized} |
| requires @option{-O}), and implies @option{-Wunused} as well. |
| |
| @item |
| @option{-Wunused} no longer gives spurious messages for unused |
| @code{EXTERNAL} names (since they are assumed to refer to block data |
| program units, to make use of libraries more reliable). |
| |
| @item |
| Support @code{%LOC()} and @code{LOC()} of character arguments. |
| |
| @item |
| Support null (zero-length) character constants and expressions. |
| |
| @item |
| Support @command{f2c}'s @code{IMAG()} generic intrinsic. |
| |
| @item |
| Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of |
| character expressions that are valid in assignments but |
| not normally as actual arguments. |
| |
| @item |
| Support @command{f2c}-style @samp{&} in column 1 to mean continuation line. |
| |
| @item |
| Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE} |
| in @code{BLOCK DATA}, even though these are not allowed by the standard. |
| |
| @item |
| Allow @code{RETURN} in main program unit. |
| |
| @item |
| Changes to Hollerith-constant support to obey Appendix C of the |
| standard: |
| |
| @itemize @minus |
| @item |
| Now padded on the right with zeros, not spaces. |
| |
| @item |
| Hollerith ``format specifications'' in the form of arrays of |
| non-character allowed. |
| |
| @item |
| Warnings issued when non-space truncation occurs when converting |
| to another type. |
| |
| @item |
| When specified as actual argument, now passed |
| by reference to @code{INTEGER} (padded on right with spaces if constant |
| too small, otherwise fully intact if constant wider the @code{INTEGER} |
| type) instead of by value. |
| @end itemize |
| |
| @strong{Warning:} @command{f2c} differs on the |
| interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the |
| same as @samp{CALL FOO('X')}, but which the standard and @command{g77} treat |
| as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary |
| to widen to @code{INTEGER}), essentially. |
| |
| @item |
| Changes and fixes to typeless-constant support: |
| |
| @itemize @minus |
| @item |
| Now treated as a typeless double-length @code{INTEGER} value. |
| |
| @item |
| Warnings issued when overflow occurs. |
| |
| @item |
| Padded on the left with zeros when converting |
| to a larger type. |
| |
| @item |
| Should be properly aligned and ordered on |
| the target machine for whatever type it is turned into. |
| |
| @item |
| When specified as actual argument, now passed as reference to |
| a default @code{INTEGER} constant. |
| @end itemize |
| |
| @item |
| @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to |
| the expression plus a length for the expression just as if |
| it were a @code{CHARACTER} expression. |
| For example, @samp{CALL FOO(%DESCR(D))}, where |
| @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}. |
| |
| @item |
| Name of multi-entrypoint master function changed to incorporate |
| the name of the primary entry point instead of a decimal |
| value, so the name of the master function for @samp{SUBROUTINE X} |
| with alternate entry points is now @samp{__g77_masterfun_x}. |
| |
| @item |
| Remove redundant message about zero-step-count @code{DO} loops. |
| |
| @item |
| Clean up diagnostic messages, shortening many of them. |
| |
| @item |
| Fix typo in @command{g77} man page. |
| |
| @item |
| Clarify implications of constant-handling bugs in @file{f/BUGS}. |
| |
| @item |
| Generate better code for @samp{**} operator with a right-hand operand of |
| type @code{INTEGER}. |
| |
| @item |
| Generate better code for @code{SQRT()} and @code{DSQRT()}, |
| also when @option{-ffast-math} |
| specified, enable better code generation for @code{SIN()} and @code{COS()}. |
| |
| @item |
| Generate better code for some kinds of array references. |
| |
| @item |
| Speed up lexing somewhat (this makes the compilation phase noticeably |
| faster). |
| @end itemize |
| |
| @end ifset |
| @end ifclear |