diff options
Diffstat (limited to 'contrib/gcc/f/news.texi')
-rw-r--r-- | contrib/gcc/f/news.texi | 933 |
1 files changed, 780 insertions, 153 deletions
diff --git a/contrib/gcc/f/news.texi b/contrib/gcc/f/news.texi index 3885137..a4b6d68 100644 --- a/contrib/gcc/f/news.texi +++ b/contrib/gcc/f/news.texi @@ -2,18 +2,64 @@ @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 BUGS +@c The text of this file appears in the file NEWS @c in the G77 distribution, as well as in the G77 manual. -@c 1999-03-11 +@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-1999 -@ifclear NEWSONLY +@set last-update-news 1999-07-08 + +@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 @code{g77} that are visible +to the programmers who actually write and maintain Fortran +code they compile with @code{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 @code{g77}. +@xref{News,,News About GNU Fortran}, for information on +such changes to @code{g77}. +@end ifset + +@ifclear USERVISONLY @node News @chapter News About GNU Fortran -@end ifclear @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. @@ -45,6 +91,7 @@ Miscellany This order is not strict---for example, some items involve a combination of these elements. +@end ifclear Note that two variants of @code{g77} are tracked below. The @code{egcs} variant is described vis-a-vis @@ -58,35 +105,315 @@ 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 @code{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 @code{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 @code{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} @code{g77}. + +In particular, while this information is intended to apply to +the @value{which-g77} version of @code{g77}, +only an official @emph{release} of that version +is expected to contain documentation that is +most consistent with the @code{g77} product in that version. + +Nevertheless, information on @emph{previous} releases of @code{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 @code{g77} versions up-to-date. +@end ifset + +@ifclear USERVISONLY An online, ``live'' version of this document -(derived directly from the up-to-date mainline version +(derived directly from the mainline, development version of @code{g77} within @code{egcs}) is available at -@uref{http://egcs.cygnus.com/onlinedocs/g77_news.html}. +@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 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 1.1.2: +@itemize @bullet +@ifclear USERVISONLY +@item +@code{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 +@code{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 +@code{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 @code{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 @code{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 @code{g77}. +@end ifclear + +@ifclear USERVISONLY +@item +The @samp{-ax} option is now obeyed when compiling Fortran programs. +(It is passed to the @file{f771} driver.) +@end ifclear + +@item +The new @samp{-fbounds-check} option +causes @code{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 @samp{-mieee} +to work properly. + +@item +Source file names with the suffixes @samp{.FOR} and @samp{.FPP} +now are recognized by @code{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 +@code{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 +@code{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 +@samp{-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 @samp{-malign-double} option +now reliably aligns @emph{all} double-precision variables and arrays +on Intel x86 targets. + +@ifclear USERVISONLY +@item +Even without the @samp{-malign-double} option, +@code{g77} reliably aligns local double-precision variables +that are not in @code{EQUIVALENCE} areas +and not @code{SAVE}'d. +@end ifclear + +@ifclear USERVISONLY +@item +@code{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 @samp{-Os} option is specified. +@end ifclear + +@item +@code{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 +@code{g77} developers can temporarily use +the @samp{-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 -@heading In 0.5.24 and @code{egcs} 1.1.2 (versus 0.5.23 and 1.1.1): +@ifclear USERVISONLY +@item +A substantial portion of the @code{g77} front end's code-generation component +was rewritten. +It now generates code using facilities more robustly supported +by the @code{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 @samp{-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 @code{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 @code{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 @code{g77} versions within @code{EGCS} versions 1.0 and 1.1, +as well as in versions of @code{g77} documentation and notices +during that period, +``mainline'' @code{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 @code{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) +Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c}) so the returned year is in the documented, non-Y2K-compliant range -of 0--99, +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 @samp{Date_and_Time} intrinsic (in @code{libg2c}) +Fix the @code{Date_and_Time} intrinsic (in @code{libg2c}) to return the milliseconds value properly in @var{Values}(8). @item -Fix the @samp{LStat} intrinsic (in @code{libg2c}) +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 -@heading In 0.5.24 and @code{egcs} 1.1.1 (versus 0.5.23 and 1.1): +@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 @@ -105,67 +432,31 @@ upon doing any I/O following a direct formatted write. @item Fix @code{g77} so it no longer crashes compiling references -to the @samp{Rand} intrinsic on some systems. +to the @code{Rand} intrinsic on some systems. @item Fix @code{g77} portion of installation process so it works better on some systems (those with shells requiring @samp{else true} clauses -on @samp{if} constructs +on @code{if} constructs for the completion code to be set properly). @end itemize +@end ifclear -@heading In @code{egcs} 1.1 (versus 0.5.24): -@itemize @bullet -@item -Fix @code{g77} crash compiling code -containing the construct @samp{CMPLX(0.)} or similar. - -@item -Fix @code{g77} crash -(or apparently infinite run-time) -when compiling certain complicated expressions -involving @code{COMPLEX} arithmetic -(especially multiplication). - -@cindex DNRM2 -@cindex stack, 387 coprocessor -@cindex Intel x86 -@cindex -O2 -@item -Fix a code-generation bug that afflicted -Intel x86 targets when @samp{-O2} was specified -compiling, for example, an old version of -the @samp{DNRM2} routine. - -The x87 coprocessor stack was being -mismanaged in cases involving assigned @code{GOTO} -and @code{ASSIGN}. - -@cindex alignment -@cindex double-precision performance -@cindex -malign-double -@item -Align static double-precision variables and arrays -on Intel x86 targets -regardless of whether @samp{-malign-double} is specified. - -Generally, this affects only local variables and arrays -having the @code{SAVE} attribute -or given initial values via @code{DATA}. -@end itemize - -@c 1998-09-01: egcs-1.1 released. -@heading In @code{egcs} 1.1 (versus @code{egcs} 1.0.3): +@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 @samp{HostNm} -that wrote one byte beyond the end of its @samp{CHARACTER} +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 -@samp{GMTime} and @samp{LTime} +@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:*)}) @@ -176,7 +467,9 @@ different sizes than integers. This bug is not known to have existed in any recent version of @code{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 @@ -185,14 +478,19 @@ and, in a subsequent program unit, referencing that external as an external function with a different type no longer crash @code{g77}. +@end ifclear +@ifclear USERVISONLY @item @code{CASE DEFAULT} no longer crashes @code{g77}. +@end ifclear +@ifclear USERVISONLY @item The @samp{-Wunused} option no longer issues a spurious warning about the ``master'' procedure generated by @code{g77} for procedures containing @code{ENTRY} statements. +@end ifclear @item Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a @@ -200,7 +498,7 @@ compile-time constant @code{INTEGER} expression. @item Fix @code{g77} @samp{-g} option so procedures that -use @samp{ENTRY} can be stepped through, line by line, +use @code{ENTRY} can be stepped through, line by line, in @code{gdb}. @item @@ -225,6 +523,7 @@ 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 @code{g77} no longer installs the @file{f77} command and @file{f77.1} man page @@ -232,7 +531,9 @@ in the @file{/usr} or @file{/usr/local} heirarchy, 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 @code{g77} no longer installs the @file{libf2c.a} library and @file{f2c.h} include file @@ -240,7 +541,9 @@ in the @file{/usr} or @file{/usr/local} heirarchy, 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 @code{g77} has been renamed to @file{libg2c.a}. @@ -250,7 +553,9 @@ 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 @code{g77} has been renamed to @file{g2c.h}. @@ -260,6 +565,7 @@ 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 @code{g77} command now expects the run-time library @@ -267,17 +573,21 @@ 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 @code{g77} version is picked up. +@ifclear USERVISONLY @item During the configuration and build process, @code{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 @code{g77} (during installation). +@end ifclear @item Some diagnostics have been changed from warnings to errors, @@ -288,41 +598,76 @@ 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 @samp{T} format +those involving some uses of the @code{T} format specifier, and perhaps some build (porting) problems as well. +@end ifclear @end itemize -@heading In 0.5.24 and @code{egcs} 1.1 (versus 0.5.23): +@c 1998-09-03: EGCS 1.1 released. +@heading In @code{EGCS} 1.1 versus @code{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 @samp{-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 @code{g77} no longer produces incorrect code and initial values -for @samp{EQUIVALENCE} and @samp{COMMON} +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 @code{g77} crash compiling code +containing the construct @samp{CMPLX(0.)} or similar. +@end ifclear + +@ifclear USERVISONLY @item @code{g77} no longer crashes when compiling code containing specification statements such as @samp{INTEGER(KIND=7) PTR}. +@end ifclear +@ifclear USERVISONLY @item @code{g77} no longer crashes when compiling code such as @samp{J = SIGNAL(1, 2)}. +@end ifclear @item @code{g77} now treats @samp{%LOC(@var{expr})} and @@ -337,6 +682,27 @@ Previously, @code{g77} treated these expressions as denoting special ``pointer'' arguments for the purposes of filewide analysis. +@ifclear USERVISONLY +@item +Fix @code{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 @samp{-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 @code{g77} driver now ensures that @samp{-lg2c} is specified in the link phase prior to any @@ -353,31 +719,48 @@ in @code{libf2c} (@code{libg2c}). This new information allows, for example, @kbd{which __g77_length_a} to be used in @code{gdb} to determine the type of the phantom length argument -supplied with @samp{CHARACTER} variables. +supplied with @code{CHARACTER} variables. This information pertains to internally-generated type, variable, and other information, not to the longstanding deficiencies vis-a-vis -@samp{COMMON} and @samp{EQUIVALENCE}. +@code{COMMON} and @code{EQUIVALENCE}. @item -The F90 @samp{Date_and_Time} intrinsic now is +The F90 @code{Date_and_Time} intrinsic now is supported. @item -The F90 @samp{System_Clock} intrinsic allows -the optional arguments (except for the @samp{Count} +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): +@heading In 0.5.23 versus 0.5.22: @itemize @bullet @item This release contains several regressions against @@ -386,24 +769,12 @@ version 0.5.22 of @code{g77}, due to using the it to fix a few bugs and improve performance in a few cases. -@ifset last-up-date -@xref{Actual Bugs,,Actual Bugs We Haven't Fixed Yet}, -for information on the known bugs in this version, -including the regressions. -@end ifset - -@ifset NEWSONLY -See @file{egcs/gcc/f/BUGS}, -for information on the known bugs in this version, -including the regressions. -@end ifset - Features that have been dropped from this version of @code{g77} due to their being implemented via @code{g77}-specific patches to the @code{gcc} back end in previous releases include: -@itemize -- +@itemize @minus @item Support for @code{__restrict__} keyword, the options @samp{-fargument-alias}, @samp{-fargument-noalias}, @@ -437,33 +808,40 @@ 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 @code{g77} no longer including patches for the @code{gcc} back end. +@end ifclear +@ifclear USERVISONLY @item -Fix bugs in the @code{libU77} intrinsic @samp{HostNm} -that wrote one byte beyond the end of its @samp{CHARACTER} +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 -@samp{GMTime} and @samp{LTime} +@code{GMTime} and @code{LTime} that overwrote their arguments. +@end ifclear @item Support @code{gcc} version 2.8, and remove support for prior versions of @code{gcc}. @cindex -@w{}-driver option -@cindex g77 options, -@w{}-driver +@cindex @code{g77} options, -@w{}-driver @cindex options, -@w{}-driver @item Remove support for the @samp{--driver} option, as @code{g77} now does all the driving, just like @code{gcc}. +@ifclear USERVISONLY @item @code{CASE DEFAULT} no longer crashes @code{g77}. +@end ifclear +@ifclear USERVISONLY @item Valid combinations of @code{EXTERNAL}, passing that external as a dummy argument @@ -472,7 +850,9 @@ and, in a subsequent program unit, referencing that external as an external function with a different type no longer crash @code{g77}. +@end ifclear +@ifclear USERVISONLY @item @code{g77} no longer installs the @file{f77} command and @file{f77.1} man page @@ -480,7 +860,9 @@ in the @file{/usr} or @file{/usr/local} heirarchy, 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 @code{g77} no longer installs the @file{libf2c.a} library and @file{f2c.h} include file @@ -488,7 +870,9 @@ in the @file{/usr} or @file{/usr/local} heirarchy, 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 @code{g77} has been renamed to @file{libg2c.a}. @@ -498,7 +882,9 @@ 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 @code{g77} has been renamed to @file{g2c.h}. @@ -508,6 +894,7 @@ 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 @code{g77} command now expects the run-time library @@ -515,10 +902,12 @@ 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 @code{g77} version is picked up. +@ifclear USERVISONLY @item The @samp{-Wunused} option no longer issues a spurious warning about the ``master'' procedure generated by @code{g77} for procedures containing @code{ENTRY} statements. +@end ifclear @item @code{g77}'s version of @code{libf2c} separates out @@ -532,6 +921,7 @@ 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, @code{g77} creates subdirectories it needs only as it @@ -539,11 +929,14 @@ 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 @code{g77} (during installation). +@end ifclear @item Some diagnostics have been changed from warnings to errors, @@ -554,27 +947,34 @@ 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 @samp{T} format +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): +@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 @@ -583,54 +983,71 @@ For example, @samp{DO 10 J=2,J} now is compiled correctly. Fix a code-generation bug that afflicted Intel x86 targets when @samp{-O2} was specified compiling, for example, an old version of -the @samp{DNRM2} routine. +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 @code{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 @samp{f_exit} routine (such as via @kbd{C-c}). +via the @code{f_exit} routine (such as via @kbd{C-c}). +@end ifclear +@ifclear USERVISONLY @item Fix @code{g77} crash triggered by @code{CASE} statement with an omitted lower or upper bound. +@end ifclear +@ifclear USERVISONLY @item Fix @code{g77} crash compiling references to @code{CPU_Time} intrinsic. +@end ifclear +@ifclear USERVISONLY @item Fix @code{g77} crash (or apparently infinite run-time) when compiling certain complicated expressions involving @code{COMPLEX} arithmetic (especially multiplication). +@end ifclear +@ifclear USERVISONLY @item Fix @code{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 @code{g++} crash. +@end ifclear @item Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a @@ -638,12 +1055,14 @@ compile-time constant @code{INTEGER} expression. @item Fix @code{g77} @samp{-g} option so procedures that -use @samp{ENTRY} can be stepped through, line by line, +use @code{ENTRY} can be stepped through, line by line, in @code{gdb}. +@ifclear USERVISONLY @item Fix a profiling-related bug in @code{gcc} back end for Intel x86 architecture. +@end ifclear @item Allow any @code{REAL} argument to intrinsics @@ -666,9 +1085,11 @@ C programs. Support for @code{restrict} is now more like support for @code{complex}. +@ifclear USERVISONLY @item Fix @samp{-fpedantic} to not reject procedure invocations such as @samp{I=J()} and @samp{CALL FOO()}. +@end ifclear @item Fix @samp{-fugly-comma} to affect invocations of @@ -680,6 +1101,7 @@ arguments to intrinsics, as in @samp{I=MAX(3,4,,)}. Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and @samp{-fbadu77-intrinsics-*} options. +@ifclear USERVISONLY @item Improve diagnostic messages from @code{libf2c} so it is more likely that the printing of the @@ -692,45 +1114,63 @@ 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 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-15: egcs-1.0.2 released. -@heading In @code{egcs} 1.0.2 (versus @code{egcs} 1.0.1): +@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 @code{g77} crash triggered by @code{CASE} statement with an omitted lower or upper bound. +@end ifclear +@ifclear USERVISONLY @item Fix @code{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 @@ -739,32 +1179,39 @@ Fix @code{g77} crash on statements such as Fix @samp{-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 @samp{-fpedantic} to not reject procedure invocations such as @samp{I=J()} and @samp{CALL FOO()}. +@end ifclear +@ifclear USERVISONLY @item Fix @samp{-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 @samp{-fgnu-intrinsics-*} and @samp{-fbadu77-intrinsics-*} options. @end itemize -@c 1998-01-02: egcs-1.0.1 released. -@heading In @code{egcs} 1.0.1 (versus @code{egcs} 1.0): +@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 0.5.21): +@c 1997-12-03: EGCS 1.0 released. +@heading In @code{EGCS} 1.0 versus @code{g77} 0.5.21: @itemize @bullet @item Version 1.0 of @code{egcs} @@ -775,24 +1222,12 @@ due to using the it to fix a few bugs and improve performance in a few cases. -@ifset last-up-date -@xref{Actual Bugs,,Actual Bugs We Haven't Fixed Yet}, -for information on the known bugs in this version, -including the regressions. -@end ifset - -@ifset NEWSONLY -See @file{egcs/gcc/f/BUGS}, -for information on the known bugs in this version, -including the regressions. -@end ifset - Features that have been dropped from this version of @code{g77} due to their being implemented via @code{g77}-specific patches to the @code{gcc} back end in previous releases include: -@itemize -- +@itemize @minus @item Support for the C-language @code{restrict} keyword. @@ -806,26 +1241,48 @@ 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 @code{g77} being fully integrated with the @code{egcs} variant of the @code{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 @code{g77} built on @code{gcc} version 2.8.1 +on m68k-next-nextstep3 configurations +when using the @samp{-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 @code{gcc}. +@end ifclear @cindex -@w{}-driver option -@cindex g77 options, -@w{}-driver +@cindex @code{g77} options, -@w{}-driver @cindex options, -@w{}-driver @item Remove support for the @samp{--driver} option, @@ -836,6 +1293,7 @@ just like @code{gcc}. 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 @@ -848,17 +1306,21 @@ 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 @@ -866,7 +1328,9 @@ caused by loop unrolling (by specifying This bug afflicted all code compiled by version 2.7.2.2.f.2 of @code{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 @@ -875,7 +1339,9 @@ the first executable statement (or is treated as an executable-context statement as a result of using the @samp{-fpedantic} option). +@end ifclear +@ifclear USERVISONLY @item Fix a compiler crash that occured when an integer division by a constant zero is detected. @@ -884,34 +1350,52 @@ the @code{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 @code{gcc} (C, C++, Fortran, and so on). +@end ifclear +@ifset USERVISONLY +@item +When the @samp{-W} option is specified, @code{gcc}, @code{g77}, +and other GNU compilers that incorporate the @code{gcc} +back end as modified by @code{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 @samp{FTELL} or -@samp{FPUTC}) as such and as the name of a procedure +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 @code{g77}'s version of @code{libf2c} has been modified @c so that the external names of library's procedures do not @@ -924,30 +1408,34 @@ the standard. @c @c For example, the intrinsic @code{FPUTC} previously was @c implemented by @code{g77} as a call to the @code{libf2c} -@c routine @samp{fputc_}. +@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 @samp{G77_fputc_0}, -@c which does not conflict with the @samp{fputc_} external +@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 @samp{fputc_}, which is -@c simply a jacket routine that calls @samp{G77_fputc_0}. +@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 @samp{-fno-automatic} option is in effect. This avoids a compiler crash in some cases. +@end ifclear +@ifclear USERVISONLY @item The @samp{-malign-double} option now reliably aligns @code{DOUBLE PRECISION} optimally on Pentium and Pentium Pro architectures (586 and 686 in @code{gcc}). +@end ifclear @item New option @samp{-Wno-globals} disables warnings @@ -977,41 +1465,53 @@ 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 @code{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 @code{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 @code{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 @code{gcc} fixes that seem useful in @code{g77}'s version of @code{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 @@ -1027,13 +1527,15 @@ that have embedded blanks, commas, and so on. @item Fix @code{SIGNAL} intrinsic so it accepts an -optional third @samp{Status} argument. +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 @@ -1047,42 +1549,57 @@ 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 @samp{-fbadu77-intrinsics-delete}, @samp{-fbadu77-intrinsics-hide}, and so on. +@ifclear USERVISONLY @item Fix crashes involving diagnosed or invalid code. +@end ifclear +@ifclear USERVISONLY @item @code{g77} and @code{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 @code{gcc} front end. +@end ifclear +@ifclear USERVISONLY @item Support @code{gcc} version 2.7.2.3 (modified by @code{g77} into version 2.7.2.3.f.1), and remove support for prior versions of @code{gcc}. +@end ifclear +@ifclear USERVISONLY @item Incorporate GNAT's patches to the @code{gcc} back end into @code{g77}'s, so GNAT users do not need to apply GNAT's patches to build both GNAT and @code{g77} from the same source tree. +@end ifclear +@ifclear USERVISONLY @item Modify @code{make} rules and related code so that generation of Info documentation doesn't require @@ -1090,6 +1607,7 @@ compilation using @code{gcc}. Now, any ANSI C compiler should be adequate to produce the @code{g77} documentation (in particular, the tables of intrinsics) from scratch. +@end ifclear @item Add @code{INT2} and @code{INT8} intrinsics. @@ -1104,46 +1622,64 @@ Add @code{ALARM} intrinsic. @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 @code{gcc} @file{specs} file. +@end ifclear +@ifclear USERVISONLY @item -Fix typo in @code{make} rule @samp{g77-cross}, used only for +Fix typo in @code{make} rule @code{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 @code{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 @samp{-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 @samp{-ff2c} in effect. +@end ifclear +@ifclear USERVISONLY @item Fix @code{g77} driver to recognize @samp{-fsyntax-only} as an option that inhibits linking, just like @samp{-c} or @samp{-S}, and to recognize and properly handle the @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs}, and @samp{-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 @code{g77} driver now prints version information (such as produced @@ -1154,26 +1690,36 @@ The @samp{.r} suffix now designates a Ratfor source file, to be preprocessed via the @code{ratfor} command, available separately. +@ifclear USERVISONLY @item Fix some aspects of how @code{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 @code{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. @@ -1184,13 +1730,18 @@ The @samp{-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} constants. +are to be interpreted as @code{INTEGER(KIND=1)} constants. Specify @samp{-ftypeless-boz} to cause such constants to be interpreted as typeless. (Version 0.5.19 introduced @samp{-fno-typeless-boz} and its inverse.) +@ifset DOC-G77 +@xref{Fortran Dialect Options,,Options Controlling Fortran Dialect}, +for information on the @samp{-ftypeless-boz} option. +@end ifset + @item Options @samp{-ff90-intrinsics-enable} and @samp{-fvxt-intrinsics-enable} now are the @@ -1206,15 +1757,19 @@ statements specifying that these names are not intended to be names of intrinsics. @item -The @samp{ALWAYS_FLUSH} macro is no longer defined when +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 @samp{ALWAYS_FLUSH} defined, +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 @code{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 @@ -1226,6 +1781,11 @@ as intrinsics. New option @samp{-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 @samp{-fvxt} option is specified. +@end ifset + @item The @samp{-fvxt-not-f90} option has been deleted, along with its inverse, @samp{-ff90-not-vxt}. @@ -1235,6 +1795,10 @@ re-read the pertinent documentation to determine which options, if any, are appropriate for compiling your code with this version of @code{g77}. +@ifset DOC-G77 +@xref{Other Dialects}, for more information. +@end ifset + @item The @samp{-fugly} option now issues a warning, as it likely will be removed in a future version. @@ -1250,23 +1814,35 @@ The @samp{-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 @code{g77} front end and the @code{gcc} back end to better support Alpha (AXP) machines. This includes providing at least one bug-fix to the @code{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 integer type that is the same width (holds -the same number of bits) as the pointer type on the -machine. +values of @code{INTEGER(KIND=0)} type, +as defined by the GNU Fortran language. -On most machines, this won't make a difference, whereas -on Alphas, the type these constructs return is -@code{INTEGER*8} instead of the more common @code{INTEGER*4}. +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 @code{g77} front @@ -1275,19 +1851,24 @@ end, to avoid bugs in @code{complex} support in the New option @samp{-fno-emulate-complex} causes @code{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 @samp{-fugly-assumed} was in effect and @var{A} was a local (automatic) array. That case is no longer affected by the new handling of @samp{-fugly-assumed}. +@end ifclear +@ifclear USERVISONLY @item Fix @code{g77} command driver so that @samp{g77 -o foo.f} no longer deletes @file{foo.f} before issuing other diagnostics, and so the @samp{-x} option is properly handled. +@end ifclear +@ifclear USERVISONLY @item Enable inlining of subroutines and functions by the @code{gcc} back end. @@ -1295,6 +1876,7 @@ This works as it does for @code{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 @@ -1312,10 +1894,19 @@ New options @samp{-falias-check}, @samp{-fargument-alias}, and @samp{-fno-argument-noalias-global} control the way @code{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 @code{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 @code{g77} compiler has been changed back to @@ -1340,6 +1931,7 @@ 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 @samp{-fugly-assign} specifies that the @@ -1349,17 +1941,26 @@ values assigned by both statements @samp{I = 3} and (Normally, @code{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 @@ -1368,27 +1969,36 @@ an already-built @code{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 @code{gcc} version 2.7.2.2 (modified by @code{g77} into version 2.7.2.2.f.2), and remove support for prior versions of @code{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 @code{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*8} available in +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 @code{f2c} users may make full use of its features via the @code{g77} -version of @file{f2c.h} and the @code{INTEGER*8} +version of @file{f2c.h} and the @code{INTEGER(KIND=2)} support routines in the @code{g77} version of @code{libf2c}. @item @@ -1407,10 +2017,10 @@ These are @code{REALPART}, @code{IMAGPART}, @code{LONG}, and @code{SHORT}. @item -A new group of intrinsics, @samp{gnu}, has been added +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, @samp{dcp}, has been removed. +An old group, @code{dcp}, has been removed. @item Complain about industry-wide ambiguous references @@ -1421,23 +2031,38 @@ complex type other than @code{COMPLEX}), unless or new @samp{-fugly-complex} option, in conjunction with @samp{-fnot-f90}, specifies @code{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 @samp{M} for the node -@samp{Diagnostics} in the top-level menu of +(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 @@ -1449,14 +2074,14 @@ 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: @samp{CONJG()}, -@samp{DCONJG()}, @samp{CCOS()}, @samp{CDCOS()}, -@samp{CLOG()}, @samp{CDLOG()}, @samp{CSIN()}, @samp{CDSIN()}, -@samp{CSQRT()}, @samp{CDSQRT()}, complex division, and +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 @samp{ZSIN()}, also were affected.) +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 @@ -1468,7 +2093,7 @@ For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I} @itemize @bullet @item Fix @code{FORMAT} statement parsing so negative values for -specifiers such as @samp{P} (e.g. @samp{FORMAT(-1PF8.1)}) +specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)}) are correctly processed as negative. @item @@ -1552,7 +2177,7 @@ 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 @samp{whence} arguments. +matters) and to catch invalid @code{whence} arguments. @item Some useless warnings from the @samp{-Wunused} option have @@ -1564,7 +2189,7 @@ on AIX systems by linking with the @samp{-bbigtoc} option. @item Abort configuration if @code{gcc} has not been patched -using the patch file provided in the @samp{gcc/f/gbe/} +using the patch file provided in the @file{gcc/f/gbe/} subdirectory. @item @@ -1776,7 +2401,7 @@ maintainer's new address is @email{dmg@@bell-labs.com}. @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 @samp{root}. +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 @@ -1815,7 +2440,7 @@ never happen). @item Make @code{libf2c} build procedures work on more systems again by -eliminating unnecessary invocations of @samp{ld -r -x} and @samp{mv}. +eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}. @item Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted @@ -1894,7 +2519,7 @@ This is known to fix code invoking @code{ERF()}, @code{ERFC()}, @item Update @code{libf2c} to include netlib patches through 1995-08-16, and -@code{#define} @samp{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more +@code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more consistent with other Fortran implementations by outputting leading zeros in formatted and list-directed output. @@ -1976,12 +2601,12 @@ 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 @samp{unix} to contain the new intrinsics, +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 @samp{vxt} group to the new -@samp{unix} group. +Move @code{LOC()} intrinsic out of the @code{vxt} group to the new +@code{unix} group. @item Improve @code{g77} so that @samp{g77 -v} by itself (or with @@ -2038,8 +2663,7 @@ macros defined in @file{gcc/f/target.h} and used in places like 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 @code{g77} is known to not work well for such cases (to be -fixed in Version 0.6---@pxref{Actual Bugs,,Actual Bugs We Haven't Fixed Yet}). +since @code{g77} is known to not work well for such cases. @item Lots of new documentation (though work is still needed to put it into @@ -2239,7 +2863,7 @@ Allow @code{RETURN} in main program unit. Changes to Hollerith-constant support to obey Appendix C of the standard: -@itemize -- +@itemize @minus @item Now padded on the right with zeros, not spaces. @@ -2267,7 +2891,7 @@ to widen to @code{INTEGER}), essentially. @item Changes and fixes to typeless-constant support: -@itemize -- +@itemize @minus @item Now treated as a typeless double-length @code{INTEGER} value. @@ -2328,3 +2952,6 @@ Generate better code for some kinds of array references. Speed up lexing somewhat (this makes the compilation phase noticeably faster). @end itemize + +@end ifset +@end ifclear |