| _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-3.1 version (and some other |
| versions) of the GNU Fortran compiler. Copyright (C) |
| 1995,1996,1997,1998,1999,2000 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. Note that all such variants are |
| now obsolete - the information is retained here only for its historical |
| value. |
| |
| 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-3.1 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 `gcc') is available at |
| `http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'. |
| |
| The following information was last updated on 2000-11-05: |
| |
| In development: |
| =============== |
| |
| * Using options `-g', `-ggdb' or `-gdwarf[-2]' (where appropriate |
| for your target) now also enables debugging information for COMMON |
| BLOCK and EQUIVALENCE items to be emitted. |
| |
| * The `TtyNam' intrinsics now set NAME to all spaces (at run time) |
| if the system has no `ttyname' implementation available. |
| |
| * Upgrade to `libf2c' as of 1999-06-28. |
| |
| This 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)'. |
| |
| In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2: |
| ======================================================= |
| |
| * `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. |
| |
| * `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). |
| |
| * `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. |
| |
| * `libg2c' (`libf2c') no longer loses track of the file being worked |
| on during a `BACKSPACE' operation. |
| |
| * `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)'. |
| |
| * Automatic arrays now seem to be working on HP-UX systems. |
| |
| * The `Date' intrinsic now returns the correct result on big-endian |
| systems. |
| |
| * 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. |
| |
| * 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'. |
| |
| * 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). |
| |
| * `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. |
| |
| * Even without the `-malign-double' option, `g77' reliably aligns |
| local double-precision variables that are not in `EQUIVALENCE' |
| areas and not `SAVE''d. |
| |
| * `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. |
| |
| * `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. |
| |
| * 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. |
| |
| * Improve documentation and indexing, including information on Year |
| 2000 (Y2K) compliance, and providing more information on internals |
| of the front end. |
| |
| * 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: |
| ================================== |
| |
| * 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. |
| |
| * 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'. |
| |
| * 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'. |
| |
| * `CASE DEFAULT' no longer crashes `g77'. |
| |
| * 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. |
| |
| * `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. |
| |
| * `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. |
| |
| * 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. |
| |
| * 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. |
| |
| * 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. |
| |
| * `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. |
| |
| * 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'. |
| |
| * Improve documentation and indexing. |
| |
| * 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: |
| ================================== |
| |
| * 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'. |
| |
| * `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. |
| |
| * Fix `g77' crash compiling code containing the construct |
| `CMPLX(0.)' or similar. |
| |
| * `g77' no longer crashes when compiling code containing |
| specification statements such as `INTEGER(KIND=7) PTR'. |
| |
| * `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. |
| |
| * 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. |
| |
| * Upgrade to `libf2c' as of 1998-06-18. |
| |
| * Improve documentation and indexing. |
| |
| In previous versions: |
| ===================== |
| |
| Information on previous versions is not provided in this |
| `gcc/gcc/f/NEWS' file, to keep it short. See `gcc/gcc/f/news.texi', or |
| any of its other derivations (Info, HTML, dvi forms) for such |
| information. |
| |