This release includes many changes since 0.5.19.1. A list is included
below.
The primary focus of this release is to add a number of new features
to g77, including support for 64-bit systems like DEC Alpha (AXP),
to fix a few longstanding bugs, like those afflicting programs
making use of COMPLEX types on some systems, and to provide further
performance improvements.
g77-0.5.20.tar.gz -- Complete 0.5.20 distribution
(A patch file against 0.5.19.1 was considered inappropriate for
this release, due to its size and the fact that it would have
created a new shell script without the proper permissions.)
Please report any bugs or questions to fort...@gnu.ai.mit.edu,
after first reviewing the documentation, and the .plan file
obtained by the "finger" or "ftp" commands described therein.
(GNU Fortran is a free replacement for the UNIX f77 Fortran compiler,
and is currently in beta testing. To build it requires the GNU CC
source distribution, Version 2.7.2.2.)
tq vm, (burley)
News About GNU Fortran
**********************
In 0.5.20:
==========
* The `-fno-typeless-boz' option is now the default.
This option specifies that non-decimal-radix constants using the
prefixed-radix form (such as `Z'1234'') are to be interpreted as
`INTEGER' constants. Specify `-ftypeless-boz' to cause such
constants to be interpreted as typeless.
(Version 0.5.19 introduced `-fno-typeless-boz' and its inverse.)
* Options `-ff90-intrinsics-enable' and `-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 `libU77'
intrinsics. Users of such programs might need to compile them
differently (using, for example, `-ff90-intrinsics-disable') or,
better yet, insert appropriate `EXTERNAL' statements specifying
that these names are not intended to be names of intrinsics.
* The `ALWAYS_FLUSH' macro is no longer defined when building
`libf2c', which should result in improved I/O performance,
especially over NFS.
*Note:* If you have code that depends on the behavior of `libf2c'
when built with `ALWAYS_FLUSH' defined, you will have to modify
`libf2c' accordingly before building it from this and future
versions of `g77'.
* Dave Love's implementation of `libU77' has been added to the
version of `libf2c' distributed with and built as part of `g77'.
`g77' now knows about the routines in this library as intrinsics.
* New option `-fvxt' specifies that the source file is written in
VXT Fortran, instead of GNU Fortran.
* The `-fvxt-not-f90' option has been deleted, along with its
inverse, `-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 `g77'.
* The `-fugly' option now issues a warning, as it likely will be
removed in a future version.
(Enabling all the `-fugly-*' options is unlikely to be feasible,
or sensible, in the future, so users should learn to specify only
those `-fugly-*' options they really need for a particular source
file.)
* The `-fugly-assumed' option, introduced in version 0.5.19, has
been changed to better accommodate old and new code.
* Make a number of fixes to the `g77' front end and the `gcc' back
end to better support Alpha (AXP) machines. This includes
providing at least one bug-fix to the `gcc' back end for Alphas.
* Related to supporting Alpha (AXP) machines, the `LOC()' intrinsic
and `%LOC()' construct now return values of integer type that is
the same width (holds the same number of bits) as the pointer type
on the machine.
On most machines, this won't make a difference, whereas on Alphas,
the type these constructs return is `INTEGER*8' instead of the
more common `INTEGER*4'.
* Emulate `COMPLEX' arithmetic in the `g77' front end, to avoid bugs
in `complex' support in the `gcc' back end. New option
`-fno-emulate-complex' causes `g77' to revert the 0.5.19 behavior.
* Fix bug whereby `REAL A(1)', for example, caused a compiler crash
if `-fugly-assumed' was in effect and A was a local (automatic)
array. That case is no longer affected by the new handling of
`-fugly-assumed'.
* Fix `g77' command driver so that `g77 -o foo.f' no longer deletes
`foo.f' before issuing other diagnostics, and so the `-x' option
is properly handled.
* Enable inlining of subroutines and functions by the `gcc' back end.
This works as it does for `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.
* Dummy arguments are no longer assumed to potentially alias
(overlap) other dummy arguments or `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 `-fforce-addr' also is specified.
New options `-falias-check', `-fargument-alias',
`-fargument-noalias', and `-fno-argument-noalias-global' control
the way `g77' handles potential aliasing.
* The `CONJG()' and `DCONJG()' intrinsics now are compiled in-line.
* The bug-fix for 0.5.19.1 has been re-done. The `g77' compiler has
been changed back to assume `libf2c' has no aliasing problems in
its implementations of the `COMPLEX' (and `DOUBLE COMPLEX')
intrinsics. The `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.
*Note:* This change requires version 0.5.20 of `libf2c', at least,
when linking code produced by any versions of `g77' other than
0.5.19.1. Use `g77 -v' to determine the version numbers of the
`libF77', `libI77', and `libU77' components of the `libf2c'
library. (If these version numbers are not printed--in
particular, if the linker complains about unresolved references to
names like `g77__fvers__'--that strongly suggests your
installation has an obsolete version of `libf2c'.)
* New option `-fugly-assign' specifies that the same memory
locations are to be used to hold the values assigned by both
statements `I = 3' and `ASSIGN 10 TO I', for example. (Normally,
`g77' uses a separate memory location to hold assigned statement
labels.)
* `FORMAT' and `ENTRY' statements now are allowed to precede
`IMPLICIT NONE' statements.
* Produce diagnostic for unsupported `SELECT CASE' on `CHARACTER'
type, instead of crashing, at compile time.
* Fix crashes involving diagnosed or invalid code.
* Change approach to building `libf2c' archive (`libf2c.a') so that
members are added to it only when truly necessary, so the user
that installs an already-built `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).
* Support `gcc' version 2.7.2.2 (modified by `g77' into version
2.7.2.2.f.2), and remove support for prior versions of `gcc'.
* Upgrade to `libf2c' as of 1997-02-08, and fix up some of the build
procedures.
* Improve general build procedures for `g77', fixing minor bugs
(such as deletion of any file named `f771' in the parent directory
of `gcc/').
* Enable full support of `INTEGER*8' available in `libf2c' and
`f2c.h' so that `f2c' users may make full use of its features via
the `g77' version of `f2c.h' and the `INTEGER*8' support routines
in the `g77' version of `libf2c'.
* Improve `g77' driver and `libf2c' so that `g77 -v' yields version
information on the library.
* The `SNGL' and `FLOAT' intrinsics now are specific intrinsics,
instead of synonyms for the generic intrinsic `REAL'.
* New intrinsics have been added. These are `REALPART', `IMAGPART',
`COMPLEX', `LONG', and `SHORT'.
* A new group of intrinsics, `gnu', has been added to contain the
new `REALPART', `IMAGPART', and `COMPLEX' intrinsics. An old
group, `dcp', has been removed.
* Complain about industry-wide ambiguous references `REAL(EXPR)' and
`AIMAG(EXPR)', where EXPR is `DOUBLE COMPLEX' (or any complex type
other than `COMPLEX'), unless `-ff90' option specifies Fortran 90
interpretation or new `-fugly-complex' option, in conjunction with
`-fnot-f90', specifies `f2c' interpretation.
* Make improvements to diagnostics.
* Speed up compiler a bit.
* 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 `M' for the node `Diagnostics' in the
top-level menu of the Info documentation.)
[ Most GNU software is packed using the GNU `gzip' compression program.
Source code is available on most sites distributing GNU software.
For information on how to order GNU software on tape or cd-rom, and
printed GNU manuals, check the file etc/ORDERS in the GNU Emacs
distribution, ftp the file /pub/gnu/GNUinfo/ORDERS on prep, or
e-mail a request to: g...@prep.ai.mit.edu
By ordering your GNU software from the FSF, you help us continue to
develop more free software. Media revenues are our primary source of
support. Donations to FSF are deductible on US tax returns.
The above software will soon be at these ftp sites as well.
Please try them before prep.ai.mit.edu as prep is very busy!
A possibly more up-to-date list is at URL
http://www.gnu.ai.mit.edu/order/ftp.html
thanx -...@prep.ai.mit.edu
ASIA: ftp.cs.titech.ac.jp, tron.um.u-tokyo.ac.jp/pub/GNU/prep
cair-archive.kaist.ac.kr/pub/gnu, ftp.nectec.or.th/pub/mirrors/gnu
AUSTRALIA: archie.au/gnu (archie.oz or archie.oz.au for ACSnet)
AFRICA: ftp.sun.ac.za/pub/gnu
MIDDLE-EAST: ftp.technion.ac.il/pub/unsupported/gnu
EUROPE: irisa.irisa.fr/pub/gnu, ftp.univ-lyon1.fr:pub/gnu,
ftp.mcc.ac.uk, unix.hensa.ac.uk/mirrors/uunet/systems/gnu,
src.doc.ic.ac.uk/gnu, ftp.ieunet.ie:pub/gnu, ftp.eunet.ch,
sunsite.cnlab-switch.ch/mirror/gnu, ftp.win.tue.nl/pub/gnu, ftp.nl.net,
ftp.informatik.rwth-aachen.de/pub/gnu, ftp.informatik.tu-muenchen.de,
ftp.germany.eu.net/packages/gnu, ftp.etsimo.uniovi.es/pub/gnu,
ftp.funet.fi/pub/gnu, ftp.denet.dk, ftp.stacken.kth.se, isy.liu.se,
ftp.luth.se/pub/unix/gnu, ftp.sunet.se/pub/gnu, archive.eu.net
SOUTH AMERICA: ftp.inf.utfsm.cl/pub/gnu, ftp.unicamp.br/pub/gnu
WESTERN CANADA: ftp.cs.ubc.ca/mirror2/gnu
USA: wuarchive.wustl.edu/systems/gnu, labrea.stanford.edu,
ftp.digex.net/pub/gnu, ftp.kpc.com/pub/mirror/gnu, f.ms.uky.edu/pub3/gnu,
jaguar.utah.edu/gnustuff, ftp.hawaii.edu/mirrors/gnu,
uiarchive.cso.uiuc.edu/pub/gnu, ftp.cs.columbia.edu/archives/gnu/prep,
archive.cis.ohio-state.edu/pub/gnu, gatekeeper.dec.com/pub/GNU,
ftp.uu.net/systems/gnu
]