diff options
Diffstat (limited to 'contrib/gcc/f/NEWS')
-rw-r--r-- | contrib/gcc/f/NEWS | 531 |
1 files changed, 531 insertions, 0 deletions
diff --git a/contrib/gcc/f/NEWS b/contrib/gcc/f/NEWS new file mode 100644 index 000000000000..cc73668ebd7a --- /dev/null +++ b/contrib/gcc/f/NEWS @@ -0,0 +1,531 @@ +_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.2 version (and some other +versions) of the GNU Fortran compiler. Copyright (C) +1995,1996,1997,1998,1999,2000,2001,2002 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 +obsolete _as of July 1999_ - 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. + + 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 2002-10-28: + +In `GCC' 3.2 versus `GCC' 3.1: +============================== + + * Problem Reports fixed (in chronological order of submission): + `8308' + gcc-3.x does not compile files with suffix .r (RATFOR) [Fixed + in 3.2.1] + +In `GCC' 3.1 (formerly known as g77-0.5.27) versus `GCC' 3.0: +============================================================= + + * Problem Reports fixed (in chronological order of submission): + `947' + Data statement initialization with subscript of kind INTEGER*2 + + `3743' + Reference to intrinsic `ISHFT' invalid + + `3807' + Function BESJN(integer,double) problems + + `3957' + g77 -pipe -xf77-cpp-input sends output to stdout + + `4279' + g77 -h" gives bogus output + + `4730' + ICE on valid input using CALL EXIT(%VAL(...)) + + `4752' + g77 -v -c -xf77-version /dev/null -xnone causes ice + + `4885' + BACKSPACE example that doesn't work as of gcc/g77-3.0.x + + `5122' + g77 rejects accepted use of INTEGER*2 as type of DATA + statement loop index + + `5397' + ICE on compiling source with 540 000 000 REAL array + + `5473' + ICE on BESJN(integer*8,real) + + `5837' + bug in loop unrolling + + * `g77' now has its man page generated from the texinfo + documentation, to guarantee that it remains up to date. + + * `g77' used to reject the following program on 32-bit targets: + PROGRAM PROG + DIMENSION A(140 000 000) + END + with the message: + prog.f: In program `prog': + prog.f:2: + DIMENSION A(140 000 000) + ^ + Array `a' at (^) is too large to handle + because 140 000 000 REALs is larger than the largest bit-extent + that can be expressed in 32 bits. However, bit-sizes never play a + role after offsets have been converted to byte addresses. + Therefore this check has been removed, and the limit is now 2 + Gbyte of memory (around 530 000 000 REALs). Note: On GNU/Linux + systems one has to compile programs that occupy more than 1 Gbyte + statically, i.e. `g77 -static ...'. + + * Based on work done by Juergen Pfeifer (<juergen.pfeifer@gmx.net>) + libf2c is now a shared library. One can still link in all objects + with the program by specifying the `-static' option. + + * Robert Anderson (<rwa@alumni.princeton.edu>) thought up a two line + change that enables g77 to compile such code as: + SUBROUTINE SUB(A, N) + DIMENSION N(2) + DIMENSION A(N(1),N(2)) + A(1,1) = 1. + END + Note the use of array elements in the bounds of the adjustable + array A. + + * George Helffrich (<george@geo.titech.ac.jp>) implemented a change + in substring index checking (when specifying `-fbounds-check') + that permits the use of zero length substrings of the form + `string(1:0)'. + + * Based on code developed by Pedro Vazquez + (<vazquez@penelope.iqm.unicamp.br>), the `libf2c' library is now + able to read and write files larger than 2 Gbyte on 32-bit target + machines, if the operating system supports this. + +In 0.5.26, `GCC' 3.0 versus `GCC' 2.95: +======================================= + + * When a REWIND was issued after a WRITE statement on an unformatted + file, the implicit truncation was performed by copying the + truncated file to /tmp and copying the result back. This has been + fixed by using the `ftruncate' OS function. Thanks go to the + GAMESS developers for bringing this to our attention. + + * 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. Thanks go to Andrew + Vaught (<andy@xena.eas.asu.edu>) and George Helffrich + (<george@geology.bristol.ac.uk>) for fixing this longstanding + problem. + + * It is not necessary anymore to use the option `-femulate-complex' + to compile Fortran code using COMPLEX arithmetic, even on 64-bit + machines (like the Alpha). This will improve code generation. + + * INTRINSIC arithmetic functions are now treated as routines that do + not depend on anything but their argument(s). This enables + further instruction scheduling, because it is known that they + cannot read or modify arbitrary locations. + + * Upgrade to `libf2c' as of 2000-12-05. + + This fixes a bug where a namelist containing initialization of + LOGICAL items and a variable starting with T or F would be read + incorrectly. + + * 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' hierarchy, 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' hierarchy, 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 + hierarchy, `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 hierarchy, `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. + |