X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gcc%2Ff%2Fnews.texi;h=4b9ca0a6ebe8e5ca961804a3bb677108d417ace3;hb=25cfec087a0d4de0736e71f729c0a2befec92132;hp=31324ce41ff39dd9cf01c7dba2213391ad1c2c7e;hpb=6d4331962422e9333a9ca194aa9f81fc997f3cc7;p=platform%2Fupstream%2Fgcc.git diff --git a/gcc/f/news.texi b/gcc/f/news.texi index 31324ce..4b9ca0a 100644 --- a/gcc/f/news.texi +++ b/gcc/f/news.texi @@ -1,53 +1,1113 @@ -@c Copyright (C) 1995-1997 Free Software Foundation, Inc. +@c Copyright (C) 1995, 1996, 1997, 1998, 1999 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 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 1997-10-10 +@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 -@ifclear NEWSONLY +@set last-update-news 2000-11-05 + +@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 +@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 @code{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 now +obsolete - 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 @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 mainline, development version +of @code{g77} within @code{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 development: +@itemize @bullet +@ifclear USERVISONLY +@item +Using options @code{-g}, @code{-ggdb} or @code{-gdwarf[-2]} (where +appropriate for your target) now also enables debugging information +for COMMON BLOCK and EQUIVALENCE items to be emitted. +@end ifclear + +@ifclear USERVISONLY +@item +The @code{TtyNam} intrinsics now set @var{Name} to all spaces (at run time) +if the system has no @code{ttyname} implementation available. +@end ifclear + +@ifclear USERVISONLY +@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 +@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 + +@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) (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 +@code{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 +@code{g77}'s version of @code{libf2c}.) + +@item +Fix @code{g77} so it no longer crashes compiling references +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 @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 @code{g77}, +even on systems with pointers having +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 +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 @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 +compile-time constant @code{INTEGER} expression. + +@item +Fix @code{g77} @samp{-g} option so procedures that +use @code{ENTRY} can be stepped through, line by line, +in @code{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 +@code{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 +@code{g77} no longer installs the @file{f77} command +and @file{f77.1} man page +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 +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}. +It is installed only in the @code{gcc} ``private'' +directory heirarchy, @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 @code{g77} +has been renamed to @file{g2c.h}. +It is installed only in the @code{gcc} ``private'' +directory heirarchy, @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 @code{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 @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, +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 @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 @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 +@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 @code{g77} actually generates code +for these cases. + +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 +occurrence of @samp{-lm}. +This prevents accidentally linking to a routine +in the SunOS4 @samp{-lm} library +when the generated code wants to link to the one +in @code{libf2c} (@code{libg2c}). + +@item +@code{g77} emits more debugging information when +@samp{-g} is used. + +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 @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 @code{g77}, due to using the +``vanilla'' @code{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 @code{g77} due to their being implemented +via @code{g77}-specific patches to the @code{gcc} +back end in previous releases include: + +@itemize @minus +@item +Support for @code{__restrict__} keyword, +the options @samp{-fargument-alias}, @samp{-fargument-noalias}, +and @samp{-fargument-noalias-global}, +and the corresponding alias-analysis code. + +(@code{egcs} has the alias-analysis +code, but not the @code{__restrict__} keyword. +@code{egcs} @code{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 +@samp{-fmove-all-movables}, +@samp{-freduce-all-givs}, +and @samp{-frerun-loop-opt}. + +(@code{egcs} supports these options. +@code{g77} users of @code{egcs} benefit from them even if +they are not explicitly specified, +because the defaults are optimized for @code{g77} users.) + +@item +Support for the @samp{-W} option warning about +integer division by zero. + +@item +The Intel x86-specific option @samp{-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 @code{g77} no longer +including patches for the @code{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 @code{gcc} version 2.8, +and remove support for prior versions of @code{gcc}. + +@cindex -@w{}-driver option +@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 +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 @code{g77}. @end ifclear -@cindex versions, recent -@cindex recent versions -Changes made to recent versions of GNU Fortran are listed -below, with the most recent version first. +@ifclear USERVISONLY +@item +@code{g77} no longer installs the @file{f77} command +and @file{f77.1} man page +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 -The changes are generally listed with code-generation -bugs first, followed by compiler crashes involving valid -code, new features, fixes to existing features, new -diagnostics, internal improvements, and miscellany. -This order is not strict---for example, some items -involve a combination of these elements. +@ifclear USERVISONLY +@item +@code{g77} no longer installs the @file{libf2c.a} library +and @file{f2c.h} include file +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}. +It is installed only in the @code{gcc} ``private'' +directory heirarchy, @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 @code{g77} +has been renamed to @file{g2c.h}. +It is installed only in the @code{gcc} ``private'' +directory heirarchy, @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 @code{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 @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 +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, +@code{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 @code{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 -@heading In 0.5.22: +@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 @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 +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 +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 @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 compile-time constant @code{INTEGER} expression. @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. +Fix @code{g77} @samp{-g} option so procedures that +use @code{ENTRY} can be stepped through, line by line, +in @code{gdb}. +@ifclear USERVISONLY @item -Fix a compiler crash involving optimization of -certain complicated expressions involving @code{COMPLEX} -arithmetic (especially multiplication). +Fix a profiling-related bug in @code{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 -Fix an internal error compiling the @code{Cpu_Time} intrinsic. +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 @code{gcc} keyword @code{restrict} to @@ -56,30 +1116,242 @@ 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 +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 @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 +active format string is limited to the string, +with no trailing garbage being printed. + +(Unlike @code{f2c}, @code{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 +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 @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 +@cindex options, -fPIC +@item +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-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 @code{g77} 0.5.21: +@itemize @bullet +@item +Version 1.0 of @code{egcs} +contains several regressions against +version 0.5.21 of @code{g77}, +due to using the +``vanilla'' @code{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 @code{g77} due to their being implemented +via @code{g77}-specific patches to the @code{gcc} +back end in previous releases include: + +@itemize @minus +@item +Support for the C-language @code{restrict} keyword. + +@item +Support for the @samp{-W} option warning about +integer division by zero. + +@item +The Intel x86-specific option @samp{-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 @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) and allow general numeric -args for the @code{Int2} and @code{Int8} intrinsics. +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 @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}. + +@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 @code{f2c}, @code{g77} does not append +(Unlike @code{f2c}, @code{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 @@ -87,7 +1359,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 @@ -96,7 +1370,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. @@ -105,34 +1381,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 @@ -145,30 +1439,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 @@ -198,41 +1496,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 @@ -248,13 +1558,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 @@ -268,42 +1580,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 @@ -311,6 +1638,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. @@ -325,46 +1653,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 @@ -375,28 +1721,39 @@ 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. @heading In 0.5.20: @itemize @bullet @item @@ -404,13 +1761,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 @@ -426,15 +1788,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 @@ -446,6 +1812,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}. @@ -455,6 +1826,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. @@ -470,23 +1845,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 @@ -495,19 +1882,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. @@ -515,6 +1907,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 @@ -532,10 +1925,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 @@ -560,6 +1962,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 @@ -569,17 +1972,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 @@ -588,27 +2000,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 @@ -627,10 +2048,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 @@ -641,23 +2062,39 @@ 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 @item @@ -668,25 +2105,26 @@ 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 @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 @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 @@ -770,7 +2208,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 @@ -782,7 +2220,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 @@ -801,6 +2239,7 @@ of the areas. Improvements to documentation and indexing. @end itemize +@c 1996-04-01: 0.5.18 released. @heading In 0.5.18: @itemize @bullet @item @@ -988,11 +2427,12 @@ 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 @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 @@ -1031,7 +2471,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 @@ -1094,6 +2534,7 @@ Support @code{gcc} version 2.7.1. 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 @@ -1109,7 +2550,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. @@ -1191,12 +2632,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 @@ -1253,8 +2694,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 @@ -1266,6 +2706,7 @@ Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect 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 @@ -1453,7 +2894,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. @@ -1481,7 +2922,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. @@ -1542,3 +2983,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