NEWS 17.7 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

Craig Burley committed
5
   This file lists news about the GCC-2.95 version (and some other
6 7 8 9
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
   In particular, while this information is intended to apply to the
Craig Burley committed
53
GCC-2.95 version of `g77', only an official *release* of that version
54 55 56 57 58 59 60 61 62 63 64 65 66
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
67
at `http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
68

Craig Burley committed
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
   The following information was last updated on 1999-07-08:

In development:
===============

  1. The `TtyNam' intrinsics now set NAME to all spaces (at run time)
     if the system has no `ttyname' implementation available.

  2. 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)'.
84

Craig Burley committed
85 86
In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
=======================================================
87

Craig Burley committed
88
  3. `g77' no longer generates bad code for assignments, or other
Craig Burley committed
89 90 91 92 93
     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
94
  4. `g77' no longer truncates `INTEGER(KIND=2)' (usually `INTEGER*8')
Craig Burley committed
95 96 97
     subscript expressions when evaluating array references on systems
     with pointers widers than `INTEGER(KIND=1)' (such as Alphas).

Craig Burley committed
98
  5. `g77' no longer generates bad code for an assignment to a
Craig Burley committed
99 100 101 102 103
     `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
104
  6. `libg2c' (`libf2c') no longer loses track of the file being worked
105
     on during a `BACKSPACE' operation.
Craig Burley committed
106

Craig Burley committed
107 108 109 110 111 112 113 114 115 116
  7. `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)'.

  8. Automatic arrays now seem to be working on HP-UX systems.

  9. The `Date' intrinsic now returns the correct result on big-endian
     systems.
117

Craig Burley committed
118
 10. Fix `g77' so it no longer crashes when compiling I/O statements
119 120 121 122
     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
123
 11. Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is
124
     not default `INTEGER', such as `INTEGER*2', instead of producing a
Craig Burley committed
125 126
     spurious diagnostic.  Also fix `DATA (A(I),I=1,N)', where `N' is
     not default `INTEGER' to work instead of crashing `g77'.
127

Craig Burley committed
128
 12. The `-ax' option is now obeyed when compiling Fortran programs.
129
     (It is passed to the `f771' driver.)
130

Craig Burley committed
131 132 133
   * 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.
Craig Burley committed
134

Craig Burley committed
135 136 137 138
   * `libg2c' now supports building as multilibbed library, which
     provides better support for systems that require options such as
     `-mieee' to work properly.

139 140 141 142
   * 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
143 144 145 146 147 148
   * 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
149
   * `g77' now warns about a reference to an intrinsic that has an
Craig Burley committed
150 151 152 153
     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).
Craig Burley committed
154

Craig Burley committed
155
 13. `g77' now warns about a reference to a function when the
156 157 158
     corresponding *subsequent* function program unit disagrees with
     the reference concerning the type of the function.

159 160 161 162
   * `-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
163 164 165
   * The `-malign-double' option now reliably aligns *all*
     double-precision variables and arrays on Intel x86 targets.

Craig Burley committed
166
 14. Even without the `-malign-double' option, `g77' reliably aligns
167 168 169
     local double-precision variables that are not in `EQUIVALENCE'
     areas and not `SAVE''d.

Craig Burley committed
170
 15. `g77' now open-codes ("inlines") division of `COMPLEX' operands
Craig Burley committed
171 172 173
     instead of generating a run-time call to the `libf2c' routines
     `c_div' or `z_div', unless the `-Os' option is specified.

Craig Burley committed
174 175 176
   * `g77' no longer generates code to maintain `errno', a C-language
     concept, when performing operations such as the `SqRt' intrinsic.

Craig Burley committed
177
 16. `g77' developers can temporarily use the `-fflatten-arrays' option
Craig Burley committed
178 179 180 181
     to compare how the compiler handles code generation using C-like
     constructs as compared to the Fortran-like method constructs
     normally used.

Craig Burley committed
182
 17. A substantial portion of the `g77' front end's code-generation
183 184 185 186 187 188 189
     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
190
 18. Improve documentation and indexing, including information on Year
191 192 193
     2000 (Y2K) compliance, and providing more information on internals
     of the front end.

Craig Burley committed
194
 19. Upgrade to `libf2c' as of 1999-05-10.
Craig Burley committed
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212

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.
213

Craig Burley committed
214 215 216 217 218
   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:
====================================
219

Craig Burley committed
220 221 222
   * 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.
223

224 225 226 227 228 229 230 231
   * 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.

Craig Burley committed
232 233
In `EGCS' 1.1.1 versus `EGCS' 1.1:
==================================
Dave Love committed
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253

   * 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).

Craig Burley committed
254 255
In `EGCS' 1.1 versus `EGCS' 1.0.3:
==================================
Dave Love committed
256

Craig Burley committed
257
 20. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
Dave Love committed
258 259 260
     beyond the end of its `CHARACTER' argument, and in the `libU77'
     intrinsics `GMTime' and `LTime' that overwrote their arguments.

Craig Burley committed
261
 21. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
Dave Love committed
262 263 264 265 266 267
     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
268
 22. Valid combinations of `EXTERNAL', passing that external as a dummy
Dave Love committed
269 270 271 272
     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
273
 23. `CASE DEFAULT' no longer crashes `g77'.
Dave Love committed
274

Craig Burley committed
275
 24. The `-Wunused' option no longer issues a spurious warning about
Dave Love committed
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299
     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
300
 25. `g77' no longer installs the `f77' command and `f77.1' man page in
Dave Love committed
301 302 303 304
     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
305
 26. `g77' no longer installs the `libf2c.a' library and `f2c.h'
Dave Love committed
306 307 308 309 310
     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
311
 27. The `libf2c.a' library produced by `g77' has been renamed to
Dave Love committed
312 313 314 315 316 317
     `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
318
 28. The `f2c.h' include (header) file produced by `g77' has been
Dave Love committed
319 320 321 322 323 324 325 326 327 328 329
     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
330
 29. During the configuration and build process, `g77' creates
Dave Love committed
331 332 333
     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
334
 30. `install-info' now used to update the directory of Info
Dave Love committed
335 336 337 338 339 340 341 342
     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
343
 31. Improve compilation of `FORMAT' expressions so that a null byte is
Dave Love committed
344 345 346 347
     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
348
 32. Improve documentation and indexing.
Dave Love committed
349

Craig Burley committed
350
 33. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
Dave Love committed
351 352 353
     problems, including those involving some uses of the `T' format
     specifier, and perhaps some build (porting) problems as well.

Craig Burley committed
354 355 356
In `EGCS' 1.1 versus `g77' 0.5.23:
==================================

Craig Burley committed
357
 34. Fix a code-generation bug that afflicted Intel x86 targets when
Craig Burley committed
358 359 360 361 362
     `-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'.
Dave Love committed
363

Craig Burley committed
364
 35. `g77' no longer produces incorrect code and initial values for
Dave Love committed
365 366 367
     `EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
     ordering of members vis-a-vis their types, require initial padding.

Craig Burley committed
368
 36. Fix `g77' crash compiling code containing the construct
Craig Burley committed
369 370
     `CMPLX(0.)' or similar.

Craig Burley committed
371
 37. `g77' no longer crashes when compiling code containing
Dave Love committed
372 373
     specification statements such as `INTEGER(KIND=7) PTR'.

Craig Burley committed
374
 38. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
375 376
     2)'.

Dave Love committed
377 378 379 380 381 382 383 384
   * `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.

Craig Burley committed
385
 39. Fix `g77' crash (or apparently infinite run-time) when compiling
Craig Burley committed
386 387 388 389 390 391 392 393 394
     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'.

Dave Love committed
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
   * 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
410
   * The F90 `Date_and_Time' intrinsic now is supported.
Dave Love committed
411

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

Craig Burley committed
415
 40. Upgrade to `libf2c' as of 1998-06-18.
Jeff Law committed
416

Craig Burley committed
417
 41. Improve documentation and indexing.
Jeff Law committed
418

419 420
In previous versions:
=====================
Jeff Law committed
421

422 423 424 425
   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
426