port, build, and install `g77', see "Problems Installing" in
`egcs/gcc/f/INSTALL'.
- The following information was last updated on 1999-04-03:
+ The following information was last updated on 1999-04-20:
* Automatic arrays possibly aren't working on HP-UX systems, at
least in HP-UX version 10.20. Writing into them apparently causes
targets, and front ends like `g77' should take advantage of this
when it becomes available.
- * The x86 target's `-malign-double' option no longer reliably aligns
- double-precision variables and arrays when they are placed in the
- stack frame.
-
- This can significantly reduce the performance of some applications,
- even on a run-to-run basis (that is, performance measurements can
- vary fairly widely depending on whether frequently used variables
- are properly aligned, and that can change from one program run to
- the next, even from one procedure call to the next).
-
- Versions 0.5.22 and earlier of `g77' included a patch to `gcc'
- that enabled this, but that patch has been deemed an improper
- (probably buggy) one for version 2.8 of `gcc' and for `egcs'.
-
- Note that version 1.1 of `egcs' aligns double-precision variables
- and arrays when they are in static storage even if
- `-malign-double' is not specified.
-
- There is ongoing investigation into how to make `-malign-double'
- work properly, also into how to make it unnecessary to get all
- double-precision variables and arrays aligned when such alignment
- would not violate the relevant specifications for processor and
- inter-procedural interfaces.
-
- For a suite of programs to test double-precision alignment, see
- `ftp://alpha.gnu.org/gnu/g77/align/'.
-
* The `libf2c' routines that perform some run-time arithmetic on
`COMPLEX' operands were modified circa version 0.5.20 of `g77' to
work properly even in the presence of aliased operands.
the mainline, development version of `g77' within `egcs') is available
at `http://egcs.cygnus.com/onlinedocs/g77_news.html'.
- The following information was last updated on 1999-04-03:
+ The following information was last updated on 1999-04-20:
In `egcs' 1.2 (versus 1.1.2):
=============================
where J is other than default `INTEGER' (such as `INTEGER*2').
Instead, it issues a diagnostic.
- 3. The `-ax' option is now obeyed when compiling Fortran programs.
+ 3. 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.
+
+ 4. The `-ax' option is now obeyed when compiling Fortran programs.
(It is passed to the `f771' driver.)
* Source file names with the suffixes `.FOR' and `.FPP' now are
references to the implementations of these intrinsics using the
`EXTERNAL' mechanism (which would avoid the new warnings).
- 4. `g77' now warns about a reference to a function when the
+ 5. `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.
* The `-malign-double' option now reliably aligns *all*
double-precision variables and arrays on Intel x86 targets.
- 5. Improve documentation and indexing, including information on Year
- 2000 (Y2K) compliance.
+ * Even without the `-malign-double' option, `g77' reliably aligns
+ local double-precision variables that are not in `EQUIVALENCE'
+ areas and not `SAVE''d.
+
+ * 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.
+
+ 6. Improve documentation and indexing, including information on Year
+ 2000 (Y2K) compliance, and providing more information on internals
+ of the front end.
+
+ 7. Upgrade to `libf2c' as of 1999-03-17.
In 0.5.24 and `egcs' 1.1.2 (versus 0.5.23 and 1.1.1):
=====================================================
In `egcs' 1.1 (versus 0.5.24):
==============================
- 6. Fix `g77' crash compiling code containing the construct
+ 8. Fix `g77' crash compiling code containing the construct
`CMPLX(0.)' or similar.
- 7. Fix `g77' crash (or apparently infinite run-time) when compiling
+ 9. Fix `g77' crash (or apparently infinite run-time) when compiling
certain complicated expressions involving `COMPLEX' arithmetic
(especially multiplication).
- 8. Fix a code-generation bug that afflicted Intel x86 targets when
+ 10. Fix a code-generation bug that afflicted Intel x86 targets when
`-O2' was specified compiling, for example, an old version of the
`DNRM2' routine.
In `egcs' 1.1 (versus `egcs' 1.0.3):
====================================
- 9. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
+ 11. 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.
- 10. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
+ 12. 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'.
- 11. Valid combinations of `EXTERNAL', passing that external as a dummy
+ 13. 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'.
- 12. `CASE DEFAULT' no longer crashes `g77'.
+ 14. `CASE DEFAULT' no longer crashes `g77'.
- 13. The `-Wunused' option no longer issues a spurious warning about
+ 15. The `-Wunused' option no longer issues a spurious warning about
the "master" procedure generated by `g77' for procedures
containing `ENTRY' statements.
`libf2c' environment, even when `libf2c' (now `libg2c') is a
shared library.
- 14. `g77' no longer installs the `f77' command and `f77.1' man page in
+ 16. `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.
- 15. `g77' no longer installs the `libf2c.a' library and `f2c.h'
+ 17. `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.
- 16. The `libf2c.a' library produced by `g77' has been renamed to
+ 18. 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.
- 17. The `f2c.h' include (header) file produced by `g77' has been
+ 19. 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
than the one built and installed as part of the same `g77' version
is picked up.
- 18. During the configuration and build process, `g77' creates
+ 20. 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.
- 19. `install-info' now used to update the directory of Info
+ 21. `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
in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
about truncations of various sorts of constants.
- 20. Improve compilation of `FORMAT' expressions so that a null byte is
+ 22. 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'.
- 21. Improve documentation and indexing.
+ 23. Improve documentation and indexing.
- 22. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
+ 24. 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 0.5.24 and `egcs' 1.1 (versus 0.5.23):
=========================================
- 23. `g77' no longer produces incorrect code and initial values for
+ 25. `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.
- 24. `g77' no longer crashes when compiling code containing
+ 26. `g77' no longer crashes when compiling code containing
specification statements such as `INTEGER(KIND=7) PTR'.
- 25. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
+ 27. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
2)'.
* `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
* The F90 `System_Clock' intrinsic allows the optional arguments
(except for the `Count' argument) to be omitted.
- 26. Upgrade to `libf2c' as of 1998-06-18.
+ 28. Upgrade to `libf2c' as of 1998-06-18.
- 27. Improve documentation and indexing.
+ 29. Improve documentation and indexing.
In previous versions:
=====================