413 lines
17 KiB
Plaintext
413 lines
17 KiB
Plaintext
*Note:* This file is automatically generated from the files
|
|
`news0.texi' and `news.texi'. `NEWS' is *not* a source file, although
|
|
it is normally included within source distributions.
|
|
|
|
This file lists news about the GCC-2.95 version (and some other
|
|
versions) of the GNU Fortran compiler. Copyright (C) 1995-1999 Free
|
|
Software Foundation, Inc. You may copy, distribute, and modify it
|
|
freely as long as you preserve this copyright notice and permission
|
|
notice.
|
|
|
|
News About GNU Fortran
|
|
**********************
|
|
|
|
Changes made to recent versions of GNU Fortran are listed below,
|
|
with the most recent version first.
|
|
|
|
The changes are generally listed in order:
|
|
|
|
1. Code-generation and run-time-library bug-fixes
|
|
|
|
2. Compiler and run-time-library crashes involving valid code that
|
|
have been fixed
|
|
|
|
3. New features
|
|
|
|
4. Fixes and enhancements to existing features
|
|
|
|
5. New diagnostics
|
|
|
|
6. Internal improvements
|
|
|
|
7. Miscellany
|
|
|
|
This order is not strict--for example, some items involve a
|
|
combination of these elements.
|
|
|
|
Note that two variants of `g77' are tracked below. The `egcs'
|
|
variant is described vis-a-vis previous versions of `egcs' and/or an
|
|
official FSF version, as appropriate.
|
|
|
|
Therefore, `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 `egcs' version contains
|
|
somewhat more difficult.
|
|
|
|
*Warning:* The information below is still under development, and
|
|
might not accurately reflect the `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 *released* `g77'.
|
|
|
|
In particular, while this information is intended to apply to the
|
|
GCC-2.95 version of `g77', only an official *release* of that version
|
|
is expected to contain documentation that is most consistent with the
|
|
`g77' product in that version.
|
|
|
|
Nevertheless, information on *previous* releases of `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 `g77' versions up-to-date.
|
|
|
|
An online, "live" version of this document (derived directly from
|
|
the mainline, development version of `g77' within `egcs') is available
|
|
at `http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
|
|
|
|
The following information was last updated on 1999-07-08:
|
|
|
|
In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
|
|
=======================================================
|
|
|
|
1. `g77' no longer generates bad code for assignments, or other
|
|
conversions, of `REAL' or `COMPLEX' constant expressions to type
|
|
`INTEGER(KIND=2)' (often referred to as `INTEGER*8').
|
|
|
|
For example, `INTEGER*8 J; J = 4E10' now works as documented.
|
|
|
|
2. `g77' no longer truncates `INTEGER(KIND=2)' (usually `INTEGER*8')
|
|
subscript expressions when evaluating array references on systems
|
|
with pointers widers than `INTEGER(KIND=1)' (such as Alphas).
|
|
|
|
3. `g77' no longer generates bad code for an assignment to a
|
|
`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.
|
|
|
|
4. `libg2c' (`libf2c') no longer loses track of the file being worked
|
|
on during a `BACKSPACE' operation.
|
|
|
|
5. `libg2c' (`libf2c') fixes a bug whereby input to a `NAMELIST' read
|
|
involving a repeat count, such as `K(5)=10*3', was not properly
|
|
handled by `libf2c'. The first item was written to `K(5)', but
|
|
the remaining nine were written elsewhere (still within the array),
|
|
not necessarily starting at `K(6)'.
|
|
|
|
6. Automatic arrays now seem to be working on HP-UX systems.
|
|
|
|
7. The `Date' intrinsic now returns the correct result on big-endian
|
|
systems.
|
|
|
|
8. Fix `g77' so it no longer crashes when compiling I/O statements
|
|
using keywords that define `INTEGER' values, such as `IOSTAT=J',
|
|
where J is other than default `INTEGER' (such as `INTEGER*2').
|
|
Instead, it issues a diagnostic.
|
|
|
|
9. Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is
|
|
not default `INTEGER', such as `INTEGER*2', instead of producing a
|
|
spurious diagnostic. Also fix `DATA (A(I),I=1,N)', where `N' is
|
|
not default `INTEGER' to work instead of crashing `g77'.
|
|
|
|
10. The `-ax' option is now obeyed when compiling Fortran programs.
|
|
(It is passed to the `f771' driver.)
|
|
|
|
* The new `-fbounds-check' option causes `g77' to compile run-time
|
|
bounds checks of array subscripts, as well as of substring start
|
|
and end points.
|
|
|
|
* `libg2c' now supports building as multilibbed library, which
|
|
provides better support for systems that require options such as
|
|
`-mieee' to work properly.
|
|
|
|
* Source file names with the suffixes `.FOR' and `.FPP' now are
|
|
recognized by `g77' as if they ended in `.for' and `.fpp',
|
|
respectively.
|
|
|
|
* The order of arguments to the *subroutine* forms of the `CTime',
|
|
`DTime', `ETime', and `TtyNam' intrinsics has been swapped. The
|
|
argument serving as the returned value for the corresponding
|
|
function forms now is the *second* argument, making these
|
|
consistent with the other subroutine forms of `libU77' intrinsics.
|
|
|
|
* `g77' now warns about a reference to an intrinsic that has an
|
|
interface that is not Year 2000 (Y2K) compliant. Also, `libg2c'
|
|
has been changed to increase the likelihood of catching references
|
|
to the implementations of these intrinsics using the `EXTERNAL'
|
|
mechanism (which would avoid the new warnings).
|
|
|
|
11. `g77' now warns about a reference to a function when the
|
|
corresponding *subsequent* function program unit disagrees with
|
|
the reference concerning the type of the function.
|
|
|
|
* `-fno-emulate-complex' is now the default option. This should
|
|
result in improved performance of code that uses the `COMPLEX'
|
|
data type.
|
|
|
|
* The `-malign-double' option now reliably aligns *all*
|
|
double-precision variables and arrays on Intel x86 targets.
|
|
|
|
12. Even without the `-malign-double' option, `g77' reliably aligns
|
|
local double-precision variables that are not in `EQUIVALENCE'
|
|
areas and not `SAVE''d.
|
|
|
|
13. `g77' now open-codes ("inlines") division of `COMPLEX' operands
|
|
instead of generating a run-time call to the `libf2c' routines
|
|
`c_div' or `z_div', unless the `-Os' option is specified.
|
|
|
|
* `g77' no longer generates code to maintain `errno', a C-language
|
|
concept, when performing operations such as the `SqRt' intrinsic.
|
|
|
|
14. `g77' developers can temporarily use the `-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.
|
|
|
|
15. A substantial portion of the `g77' front end's code-generation
|
|
component was rewritten. It now generates code using facilities
|
|
more robustly supported by the `gcc' back end. One effect of this
|
|
rewrite is that some codes no longer produce a spurious "label LAB
|
|
used before containing binding contour" message.
|
|
|
|
* Support for the `-fugly' option has been removed.
|
|
|
|
16. Improve documentation and indexing, including information on Year
|
|
2000 (Y2K) compliance, and providing more information on internals
|
|
of the front end.
|
|
|
|
17. Upgrade to `libf2c' as of 1999-05-10.
|
|
|
|
In 0.5.24 versus 0.5.23:
|
|
========================
|
|
|
|
There is no `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 `gcc' 2.8.1, as
|
|
0.5.24 was planned to require.
|
|
|
|
Due to `EGCS' becoming `GCC' (which is now an acronym for "GNU
|
|
Compiler Collection"), and `EGCS' 1.2 becoming officially designated
|
|
`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 `g77' versions within `EGCS' versions 1.0 and 1.1, as well as
|
|
in versions of `g77' documentation and notices during that period,
|
|
"mainline" `g77' version numbering resumes at 0.5.25 with `GCC' 2.95
|
|
(`EGCS' 1.2), skipping over 0.5.24 as a placeholder version number.
|
|
|
|
To repeat, there is no `g77' 0.5.24, but there is now a 0.5.25.
|
|
Please remain calm and return to your keypunch units.
|
|
|
|
In `EGCS' 1.1.2 versus `EGCS' 1.1.1:
|
|
====================================
|
|
|
|
* Fix the `IDate' intrinsic (VXT) (in `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.
|
|
|
|
* Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
|
|
milliseconds value properly in VALUES(8).
|
|
|
|
* Fix the `LStat' intrinsic (in `libg2c') to return device-ID
|
|
information properly in SARRAY(7).
|
|
|
|
* Improve documentation.
|
|
|
|
In `EGCS' 1.1.1 versus `EGCS' 1.1:
|
|
==================================
|
|
|
|
* Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
|
|
appropriate) whenever a `REWIND' is done.
|
|
|
|
(This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
|
|
version of `libf2c'.)
|
|
|
|
* Fix `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 `egcs' 1.1 in `g77''s
|
|
version of `libf2c'.)
|
|
|
|
* Fix `g77' so it no longer crashes compiling references to the
|
|
`Rand' intrinsic on some systems.
|
|
|
|
* Fix `g77' portion of installation process so it works better on
|
|
some systems (those with shells requiring `else true' clauses on
|
|
`if' constructs for the completion code to be set properly).
|
|
|
|
In `EGCS' 1.1 versus `EGCS' 1.0.3:
|
|
==================================
|
|
|
|
18. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
|
|
beyond the end of its `CHARACTER' argument, and in the `libU77'
|
|
intrinsics `GMTime' and `LTime' that overwrote their arguments.
|
|
|
|
19. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
|
|
longer elicit spurious diagnostics from `g77', even on systems
|
|
with pointers having different sizes than integers.
|
|
|
|
This bug is not known to have existed in any recent version of
|
|
`gcc'. It was introduced in an early release of `egcs'.
|
|
|
|
20. Valid combinations of `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 `g77'.
|
|
|
|
21. `CASE DEFAULT' no longer crashes `g77'.
|
|
|
|
22. The `-Wunused' option no longer issues a spurious warning about
|
|
the "master" procedure generated by `g77' for procedures
|
|
containing `ENTRY' statements.
|
|
|
|
* Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
|
|
`INTEGER' expression.
|
|
|
|
* Fix `g77' `-g' option so procedures that use `ENTRY' can be
|
|
stepped through, line by line, in `gdb'.
|
|
|
|
* Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
|
|
|
|
* Use `tempnam', if available, to open scratch files (as in
|
|
`OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment
|
|
variable, if present, is used.
|
|
|
|
* `g77''s version of `libf2c' separates out the setting of global
|
|
state (such as command-line arguments and signal handling) from
|
|
`main.o' into distinct, new library archive members.
|
|
|
|
This should make it easier to write portable applications that
|
|
have their own (non-Fortran) `main()' routine properly set up the
|
|
`libf2c' environment, even when `libf2c' (now `libg2c') is a
|
|
shared library.
|
|
|
|
23. `g77' no longer installs the `f77' command and `f77.1' man page in
|
|
the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
|
|
file exists in the source or build directory. See the
|
|
installation documentation for more information.
|
|
|
|
24. `g77' no longer installs the `libf2c.a' library and `f2c.h'
|
|
include file in the `/usr' or `/usr/local' heirarchy, even if the
|
|
`f2c-install-ok' or `f2c-exists-ok' files exist in the source or
|
|
build directory. See the installation documentation for more
|
|
information.
|
|
|
|
25. The `libf2c.a' library produced by `g77' has been renamed to
|
|
`libg2c.a'. It is installed only in the `gcc' "private" directory
|
|
heirarchy, `gcc-lib'. This allows system administrators and users
|
|
to choose which version of the `libf2c' library from `netlib' they
|
|
wish to use on a case-by-case basis. See the installation
|
|
documentation for more information.
|
|
|
|
26. The `f2c.h' include (header) file produced by `g77' has been
|
|
renamed to `g2c.h'. It is installed only in the `gcc' "private"
|
|
directory heirarchy, `gcc-lib'. This allows system administrators
|
|
and users to choose which version of the include file from
|
|
`netlib' they wish to use on a case-by-case basis. See the
|
|
installation documentation for more information.
|
|
|
|
* The `g77' command now expects the run-time library to be named
|
|
`libg2c.a' instead of `libf2c.a', to ensure that a version other
|
|
than the one built and installed as part of the same `g77' version
|
|
is picked up.
|
|
|
|
27. During the configuration and build process, `g77' creates
|
|
subdirectories it needs only as it needs them. Other cleaning up
|
|
of the configuration and build process has been performed as well.
|
|
|
|
28. `install-info' now used to update the directory of Info
|
|
documentation to contain an entry for `g77' (during installation).
|
|
|
|
* 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 `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
|
|
about truncations of various sorts of constants.
|
|
|
|
29. Improve compilation of `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 `libf2c' for statements
|
|
like `PRINT '(I1', 42'.
|
|
|
|
30. Improve documentation and indexing.
|
|
|
|
31. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
|
|
problems, including those involving some uses of the `T' format
|
|
specifier, and perhaps some build (porting) problems as well.
|
|
|
|
In `EGCS' 1.1 versus `g77' 0.5.23:
|
|
==================================
|
|
|
|
32. Fix a code-generation bug that afflicted Intel x86 targets when
|
|
`-O2' was specified compiling, for example, an old version of the
|
|
`DNRM2' routine.
|
|
|
|
The x87 coprocessor stack was being mismanaged in cases involving
|
|
assigned `GOTO' and `ASSIGN'.
|
|
|
|
33. `g77' no longer produces incorrect code and initial values for
|
|
`EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
|
|
ordering of members vis-a-vis their types, require initial padding.
|
|
|
|
34. Fix `g77' crash compiling code containing the construct
|
|
`CMPLX(0.)' or similar.
|
|
|
|
35. `g77' no longer crashes when compiling code containing
|
|
specification statements such as `INTEGER(KIND=7) PTR'.
|
|
|
|
36. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
|
|
2)'.
|
|
|
|
* `g77' now treats `%LOC(EXPR)' and `LOC(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 `g77' actually generates code for these cases.
|
|
|
|
Previously, `g77' treated these expressions as denoting special
|
|
"pointer" arguments for the purposes of filewide analysis.
|
|
|
|
37. Fix `g77' crash (or apparently infinite run-time) when compiling
|
|
certain complicated expressions involving `COMPLEX' arithmetic
|
|
(especially multiplication).
|
|
|
|
* Align static double-precision variables and arrays on Intel x86
|
|
targets regardless of whether `-malign-double' is specified.
|
|
|
|
Generally, this affects only local variables and arrays having the
|
|
`SAVE' attribute or given initial values via `DATA'.
|
|
|
|
* The `g77' driver now ensures that `-lg2c' is specified in the link
|
|
phase prior to any occurrence of `-lm'. This prevents
|
|
accidentally linking to a routine in the SunOS4 `-lm' library when
|
|
the generated code wants to link to the one in `libf2c' (`libg2c').
|
|
|
|
* `g77' emits more debugging information when `-g' is used.
|
|
|
|
This new information allows, for example, `which __g77_length_a'
|
|
to be used in `gdb' to determine the type of the phantom length
|
|
argument supplied with `CHARACTER' variables.
|
|
|
|
This information pertains to internally-generated type, variable,
|
|
and other information, not to the longstanding deficiencies
|
|
vis-a-vis `COMMON' and `EQUIVALENCE'.
|
|
|
|
* The F90 `Date_and_Time' intrinsic now is supported.
|
|
|
|
* The F90 `System_Clock' intrinsic allows the optional arguments
|
|
(except for the `Count' argument) to be omitted.
|
|
|
|
38. Upgrade to `libf2c' as of 1998-06-18.
|
|
|
|
39. Improve documentation and indexing.
|
|
|
|
In previous versions:
|
|
=====================
|
|
|
|
Information on previous versions is not provided in this
|
|
`egcs/gcc/f/NEWS' file, to keep it short. See `egcs/gcc/f/news.texi',
|
|
or any of its other derivations (Info, HTML, dvi forms) for such
|
|
information.
|
|
|