| *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 EGCS-1.2 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 |
| EGCS-1.2 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://egcs.cygnus.com/onlinedocs/g77_news.html'. |
| |
| The following information was last updated on 1999-04-03: |
| |
| In `egcs' 1.2 (versus 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. 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. |
| |
| 3. 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 |
| recognized by `g77' as if they ended in `.for' and `.fpp', |
| respectively. |
| |
| * `g77' now warns about a reference to an intrinsic that has an |
| interface that is not Year 2000 (Y2K) compliant. Also, the |
| `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). |
| |
| 4. `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. |
| |
| 5. Improve documentation and indexing, including information on Year |
| 2000 (Y2K) compliance. |
| |
| In 0.5.24 and `egcs' 1.1.2 (versus 0.5.23 and 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 0.5.24 and `egcs' 1.1.1 (versus 0.5.23 and 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 0.5.24): |
| ============================== |
| |
| 6. Fix `g77' crash compiling code containing the construct |
| `CMPLX(0.)' or similar. |
| |
| 7. 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 |
| `-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'. |
| |
| * 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'. |
| |
| In `egcs' 1.1 (versus `egcs' 1.0.3): |
| ==================================== |
| |
| 9. 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 |
| 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 |
| 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'. |
| |
| 13. 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. |
| |
| 14. `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' |
| 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 |
| `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 |
| 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. |
| |
| 18. 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 |
| 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. |
| |
| 20. 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. |
| |
| 22. 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 |
| `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 |
| specification statements such as `INTEGER(KIND=7) PTR'. |
| |
| 25. `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. |
| |
| * 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. |
| |
| 26. Upgrade to `libf2c' as of 1998-06-18. |
| |
| 27. 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. |
| |