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