X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=gcc%2Ff%2Fnews.texi;fp=gcc%2Ff%2Fnews.texi;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=37b08d9395c256ef09d9d8fbb8cb1d6081b8f5de;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/gcc/f/news.texi b/gcc/f/news.texi deleted file mode 100644 index 37b08d93..00000000 --- a/gcc/f/news.texi +++ /dev/null @@ -1,3107 +0,0 @@ -@c Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -@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 - -@set last-update-news 2002-10-28 - -@include root.texi - -@ifset DOC-NEWS -@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 -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 - -@ifclear USERVISONLY -An online, ``live'' version of this document -(derived directly from the mainline, development version -of @command{g77} within @command{gcc}) -is available at -@uref{http://www.gnu.org/software/gcc/onlinedocs/g77/News.html}. -@end ifclear - -The following information was last updated on @value{last-update-news}: - -@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 8308 -gcc-3.x does not compile files with suffix .r (RATFOR) [Fixed in 3.2.1] -@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 -@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 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 non-zero -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