NEWS 15.3 KB
Newer Older
1 2 3
*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.
4

5 6 7 8 9
   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.
Jeff Law committed
10 11 12 13 14 15 16

News About GNU Fortran
**********************

   Changes made to recent versions of GNU Fortran are listed below,
with the most recent version first.

17 18
   The changes are generally listed in order:

Dave Love committed
19
  1. Code-generation and run-time-library bug-fixes
20

Dave Love committed
21 22
  2. Compiler and run-time-library crashes involving valid code that
     have been fixed
23 24 25 26 27 28 29 30 31 32 33 34 35 36

  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.

Dave Love committed
37 38 39 40 41 42 43 44 45
   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.

46 47 48 49 50
   *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'.
51

52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
   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'.

Craig Burley committed
69
   The following information was last updated on 1999-05-10:
70 71 72 73

In `egcs' 1.2 (versus 1.1.2):
=============================

Craig Burley committed
74 75 76 77 78 79
  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.

Craig Burley committed
80 81 82 83 84 85
  2. `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.

Craig Burley committed
86 87 88
  3. Automatic arrays now seem to be working on HP-UX systems.

  4. Fix `g77' so it no longer crashes when compiling I/O statements
89 90 91 92
     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.

Craig Burley committed
93
  5. Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is
94
     not default `INTEGER', such as `INTEGER*2', instead of producing a
Craig Burley committed
95 96
     spurious diagnostic.  Also fix `DATA (A(I),I=1,N)', where `N' is
     not default `INTEGER' to work instead of crashing `g77'.
97

Craig Burley committed
98
  6. The `-ax' option is now obeyed when compiling Fortran programs.
99
     (It is passed to the `f771' driver.)
100

Craig Burley committed
101 102 103 104 105 106 107 108 109 110
   * The new `-fsubscript-check' option causes `g77' to compile
     run-time bounds checks of array subscripts, as well as of
     substring start and end points.

     The current implementation uses the `libf2c' library routine
     `s_rnge' to print the diagnostic.  Since a future version of `g77'
     might use a different implementation, use the new
     `-ff2c-subscript-check' option if your application requires use of
     `s_rnge' or a compile-time diagnostic.

111 112 113 114
   * Source file names with the suffixes `.FOR' and `.FPP' now are
     recognized by `g77' as if they ended in `.for' and `.fpp',
     respectively.

Craig Burley committed
115 116 117 118 119 120
   * 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.

Craig Burley committed
121 122 123 124 125 126
   * `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).

Craig Burley committed
127
  7. `g77' now warns about a reference to a function when the
128 129 130
     corresponding *subsequent* function program unit disagrees with
     the reference concerning the type of the function.

131 132 133 134
   * `-fno-emulate-complex' is now the default option.  This should
     result in improved performance of code that uses the `COMPLEX'
     data type.

Craig Burley committed
135 136 137
   * The `-malign-double' option now reliably aligns *all*
     double-precision variables and arrays on Intel x86 targets.

Craig Burley committed
138
  8. Even without the `-malign-double' option, `g77' reliably aligns
139 140 141
     local double-precision variables that are not in `EQUIVALENCE'
     areas and not `SAVE''d.

Craig Burley committed
142
  9. A substantial portion of the `g77' front end's code-generation
143 144 145 146 147 148 149
     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.

Craig Burley committed
150
 10. Improve documentation and indexing, including information on Year
151 152 153
     2000 (Y2K) compliance, and providing more information on internals
     of the front end.

Craig Burley committed
154
 11. Upgrade to `libf2c' as of 1999-05-10.
155

156 157 158
In 0.5.24 and `egcs' 1.1.2 (versus 0.5.23 and 1.1.1):
=====================================================

Craig Burley committed
159 160 161
   * 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.
162

163 164 165 166 167 168 169 170
   * 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.

Dave Love committed
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
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):
==============================

Craig Burley committed
196
 12. Fix `g77' crash compiling code containing the construct
Dave Love committed
197 198
     `CMPLX(0.)' or similar.

Craig Burley committed
199
 13. Fix `g77' crash (or apparently infinite run-time) when compiling
Dave Love committed
200 201 202
     certain complicated expressions involving `COMPLEX' arithmetic
     (especially multiplication).

Craig Burley committed
203
 14. Fix a code-generation bug that afflicted Intel x86 targets when
Dave Love committed
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218
     `-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):
====================================

Craig Burley committed
219
 15. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
Dave Love committed
220 221 222
     beyond the end of its `CHARACTER' argument, and in the `libU77'
     intrinsics `GMTime' and `LTime' that overwrote their arguments.

Craig Burley committed
223
 16. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
Dave Love committed
224 225 226 227 228 229
     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'.

Craig Burley committed
230
 17. Valid combinations of `EXTERNAL', passing that external as a dummy
Dave Love committed
231 232 233 234
     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'.

Craig Burley committed
235
 18. `CASE DEFAULT' no longer crashes `g77'.
Dave Love committed
236

Craig Burley committed
237
 19. The `-Wunused' option no longer issues a spurious warning about
Dave Love committed
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
     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.

Craig Burley committed
262
 20. `g77' no longer installs the `f77' command and `f77.1' man page in
Dave Love committed
263 264 265 266
     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.

Craig Burley committed
267
 21. `g77' no longer installs the `libf2c.a' library and `f2c.h'
Dave Love committed
268 269 270 271 272
     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.

Craig Burley committed
273
 22. The `libf2c.a' library produced by `g77' has been renamed to
Dave Love committed
274 275 276 277 278 279
     `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.

Craig Burley committed
280
 23. The `f2c.h' include (header) file produced by `g77' has been
Dave Love committed
281 282 283 284 285 286 287 288 289 290 291
     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.

Craig Burley committed
292
 24. During the configuration and build process, `g77' creates
Dave Love committed
293 294 295
     subdirectories it needs only as it needs them.  Other cleaning up
     of the configuration and build process has been performed as well.

Craig Burley committed
296
 25. `install-info' now used to update the directory of Info
Dave Love committed
297 298 299 300 301 302 303 304
     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.

Craig Burley committed
305
 26. Improve compilation of `FORMAT' expressions so that a null byte is
Dave Love committed
306 307 308 309
     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'.

Craig Burley committed
310
 27. Improve documentation and indexing.
Dave Love committed
311

Craig Burley committed
312
 28. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
Dave Love committed
313 314 315 316 317
     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):
=========================================
Dave Love committed
318

Craig Burley committed
319
 29. `g77' no longer produces incorrect code and initial values for
Dave Love committed
320 321 322
     `EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
     ordering of members vis-a-vis their types, require initial padding.

Craig Burley committed
323
 30. `g77' no longer crashes when compiling code containing
Dave Love committed
324 325
     specification statements such as `INTEGER(KIND=7) PTR'.

Craig Burley committed
326
 31. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
327 328
     2)'.

Dave Love committed
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351
   * `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'.

Dave Love committed
352
   * The F90 `Date_and_Time' intrinsic now is supported.
Dave Love committed
353

Dave Love committed
354
   * The F90 `System_Clock' intrinsic allows the optional arguments
Dave Love committed
355 356
     (except for the `Count' argument) to be omitted.

Craig Burley committed
357
 32. Upgrade to `libf2c' as of 1998-06-18.
Jeff Law committed
358

Craig Burley committed
359
 33. Improve documentation and indexing.
Jeff Law committed
360

361 362
In previous versions:
=====================
Jeff Law committed
363

364 365 366 367
   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.
Jeff Law committed
368