Daily bump.
[official-gcc.git] / gcc / f / NEWS
blob39fa2e33953d7e3fb223bc9d9ded00ccc362888f
1 *Note:* This file is automatically generated from the files
2 `news0.texi' and `news.texi'.  `NEWS' is *not* a source file, although
3 it is normally included within source distributions.
5    This file lists news about the GCC-2.95 version (and some other
6 versions) of the GNU Fortran compiler.  Copyright (C) 1995-1999 Free
7 Software Foundation, Inc.  You may copy, distribute, and modify it
8 freely as long as you preserve this copyright notice and permission
9 notice.
11 News About GNU Fortran
12 **********************
14    Changes made to recent versions of GNU Fortran are listed below,
15 with the most recent version first.
17    The changes are generally listed in order:
19   1. Code-generation and run-time-library bug-fixes
21   2. Compiler and run-time-library crashes involving valid code that
22      have been fixed
24   3. New features
26   4. Fixes and enhancements to existing features
28   5. New diagnostics
30   6. Internal improvements
32   7. Miscellany
34    This order is not strict--for example, some items involve a
35 combination of these elements.
37    Note that two variants of `g77' are tracked below.  The `egcs'
38 variant is described vis-a-vis previous versions of `egcs' and/or an
39 official FSF version, as appropriate.
41    Therefore, `egcs' versions sometimes have multiple listings to help
42 clarify how they differ from other versions, though this can make
43 getting a complete picture of what a particular `egcs' version contains
44 somewhat more difficult.
46    *Warning:* The information below is still under development, and
47 might not accurately reflect the `g77' code base of which it is a part.
48 Efforts are made to keep it somewhat up-to-date, but they are
49 particularly concentrated on any version of this information that is
50 distributed as part of a *released* `g77'.
52    In particular, while this information is intended to apply to the
53 GCC-2.95 version of `g77', only an official *release* of that version
54 is expected to contain documentation that is most consistent with the
55 `g77' product in that version.
57    Nevertheless, information on *previous* releases of `g77', below, is
58 likely to be more up-to-date and accurate than the equivalent
59 information that accompanied those releases, assuming the last-updated
60 date of the information below is later than the dates of those releases.
62    That's due to attempts to keep this development version of news
63 about previous `g77' versions up-to-date.
65    An online, "live" version of this document (derived directly from
66 the mainline, development version of `g77' within `egcs') is available
67 at `http://egcs.cygnus.com/onlinedocs/g77_news.html'.
69    The following information was last updated on 1999-07-08:
71 In development:
72 ===============
74   1. The `TtyNam' intrinsics now set NAME to all spaces (at run time)
75      if the system has no `ttyname' implementation available.
77   2. Upgrade to `libf2c' as of 1999-06-28.
79      This fixes a bug whereby input to a `NAMELIST' read involving a
80      repeat count, such as `K(5)=10*3', was not properly handled by
81      `libf2c'.  The first item was written to `K(5)', but the remaining
82      nine were written elsewhere (still within the array), not
83      necessarily starting at `K(6)'.
85 In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
86 =======================================================
88   3. `g77' no longer generates bad code for assignments, or other
89      conversions, of `REAL' or `COMPLEX' constant expressions to type
90      `INTEGER(KIND=2)' (often referred to as `INTEGER*8').
92      For example, `INTEGER*8 J; J = 4E10' now works as documented.
94   4. `g77' no longer truncates `INTEGER(KIND=2)' (usually `INTEGER*8')
95      subscript expressions when evaluating array references on systems
96      with pointers widers than `INTEGER(KIND=1)' (such as Alphas).
98   5. `g77' no longer generates bad code for an assignment to a
99      `COMPLEX' variable or array that partially overlaps one or more of
100      the sources of the same assignment (a very rare construction).  It
101      now assigns through a temporary, in cases where such partial
102      overlap is deemed possible.
104   6. `libg2c' (`libf2c') no longer loses track of the file being worked
105      on during a `BACKSPACE' operation.
107   7. `libg2c' (`libf2c') fixes a bug whereby input to a `NAMELIST' read
108      involving a repeat count, such as `K(5)=10*3', was not properly
109      handled by `libf2c'.  The first item was written to `K(5)', but
110      the remaining nine were written elsewhere (still within the array),
111      not necessarily starting at `K(6)'.
113   8. Automatic arrays now seem to be working on HP-UX systems.
115   9. The `Date' intrinsic now returns the correct result on big-endian
116      systems.
118  10. Fix `g77' so it no longer crashes when compiling I/O statements
119      using keywords that define `INTEGER' values, such as `IOSTAT=J',
120      where J is other than default `INTEGER' (such as `INTEGER*2').
121      Instead, it issues a diagnostic.
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
125      spurious diagnostic.  Also fix `DATA (A(I),I=1,N)', where `N' is
126      not default `INTEGER' to work instead of crashing `g77'.
128  12. The `-ax' option is now obeyed when compiling Fortran programs.
129      (It is passed to the `f771' driver.)
131    * The new `-fbounds-check' option causes `g77' to compile run-time
132      bounds checks of array subscripts, as well as of substring start
133      and end points.
135    * `libg2c' now supports building as multilibbed library, which
136      provides better support for systems that require options such as
137      `-mieee' to work properly.
139    * Source file names with the suffixes `.FOR' and `.FPP' now are
140      recognized by `g77' as if they ended in `.for' and `.fpp',
141      respectively.
143    * The order of arguments to the *subroutine* forms of the `CTime',
144      `DTime', `ETime', and `TtyNam' intrinsics has been swapped.  The
145      argument serving as the returned value for the corresponding
146      function forms now is the *second* argument, making these
147      consistent with the other subroutine forms of `libU77' intrinsics.
149    * `g77' now warns about a reference to an intrinsic that has an
150      interface that is not Year 2000 (Y2K) compliant.  Also, `libg2c'
151      has been changed to increase the likelihood of catching references
152      to the implementations of these intrinsics using the `EXTERNAL'
153      mechanism (which would avoid the new warnings).
155  13. `g77' now warns about a reference to a function when the
156      corresponding *subsequent* function program unit disagrees with
157      the reference concerning the type of the function.
159    * `-fno-emulate-complex' is now the default option.  This should
160      result in improved performance of code that uses the `COMPLEX'
161      data type.
163    * The `-malign-double' option now reliably aligns *all*
164      double-precision variables and arrays on Intel x86 targets.
166  14. Even without the `-malign-double' option, `g77' reliably aligns
167      local double-precision variables that are not in `EQUIVALENCE'
168      areas and not `SAVE''d.
170  15. `g77' now open-codes ("inlines") division of `COMPLEX' operands
171      instead of generating a run-time call to the `libf2c' routines
172      `c_div' or `z_div', unless the `-Os' option is specified.
174    * `g77' no longer generates code to maintain `errno', a C-language
175      concept, when performing operations such as the `SqRt' intrinsic.
177  16. `g77' developers can temporarily use the `-fflatten-arrays' option
178      to compare how the compiler handles code generation using C-like
179      constructs as compared to the Fortran-like method constructs
180      normally used.
182  17. A substantial portion of the `g77' front end's code-generation
183      component was rewritten.  It now generates code using facilities
184      more robustly supported by the `gcc' back end.  One effect of this
185      rewrite is that some codes no longer produce a spurious "label LAB
186      used before containing binding contour" message.
188    * Support for the `-fugly' option has been removed.
190  18. Improve documentation and indexing, including information on Year
191      2000 (Y2K) compliance, and providing more information on internals
192      of the front end.
194  19. Upgrade to `libf2c' as of 1999-05-10.
196 In 0.5.24 versus 0.5.23:
197 ========================
199    There is no `g77' version 0.5.24 at this time, or planned.  0.5.24
200 is the version number designated for bug fixes and, perhaps, some new
201 features added, to 0.5.23.  Version 0.5.23 requires `gcc' 2.8.1, as
202 0.5.24 was planned to require.
204    Due to `EGCS' becoming `GCC' (which is now an acronym for "GNU
205 Compiler Collection"), and `EGCS' 1.2 becoming officially designated
206 `GCC' 2.95, there seems to be no need for an actual 0.5.24 release.
208    To reduce the confusion already resulting from use of 0.5.24 to
209 designate `g77' versions within `EGCS' versions 1.0 and 1.1, as well as
210 in versions of `g77' documentation and notices during that period,
211 "mainline" `g77' version numbering resumes at 0.5.25 with `GCC' 2.95
212 (`EGCS' 1.2), skipping over 0.5.24 as a placeholder version number.
214    To repeat, there is no `g77' 0.5.24, but there is now a 0.5.25.
215 Please remain calm and return to your keypunch units.
217 In `EGCS' 1.1.2 versus `EGCS' 1.1.1:
218 ====================================
220    * Fix the `IDate' intrinsic (VXT) (in `libg2c') so the returned year
221      is in the documented, non-Y2K-compliant range of 0-99, instead of
222      being returned as 100 in the year 2000.
224    * Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
225      milliseconds value properly in VALUES(8).
227    * Fix the `LStat' intrinsic (in `libg2c') to return device-ID
228      information properly in SARRAY(7).
230    * Improve documentation.
232 In `EGCS' 1.1.1 versus `EGCS' 1.1:
233 ==================================
235    * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
236      appropriate) whenever a `REWIND' is done.
238      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
239      version of `libf2c'.)
241    * Fix `libg2c' so it no longer crashes with a spurious diagnostic
242      upon doing any I/O following a direct formatted write.
244      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
245      version of `libf2c'.)
247    * Fix `g77' so it no longer crashes compiling references to the
248      `Rand' intrinsic on some systems.
250    * Fix `g77' portion of installation process so it works better on
251      some systems (those with shells requiring `else true' clauses on
252      `if' constructs for the completion code to be set properly).
254 In `EGCS' 1.1 versus `EGCS' 1.0.3:
255 ==================================
257  20. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
258      beyond the end of its `CHARACTER' argument, and in the `libU77'
259      intrinsics `GMTime' and `LTime' that overwrote their arguments.
261  21. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
262      longer elicit spurious diagnostics from `g77', even on systems
263      with pointers having different sizes than integers.
265      This bug is not known to have existed in any recent version of
266      `gcc'.  It was introduced in an early release of `egcs'.
268  22. Valid combinations of `EXTERNAL', passing that external as a dummy
269      argument without explicitly giving it a type, and, in a subsequent
270      program unit, referencing that external as an external function
271      with a different type no longer crash `g77'.
273  23. `CASE DEFAULT' no longer crashes `g77'.
275  24. The `-Wunused' option no longer issues a spurious warning about
276      the "master" procedure generated by `g77' for procedures
277      containing `ENTRY' statements.
279    * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
280      `INTEGER' expression.
282    * Fix `g77' `-g' option so procedures that use `ENTRY' can be
283      stepped through, line by line, in `gdb'.
285    * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
287    * Use `tempnam', if available, to open scratch files (as in
288      `OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment
289      variable, if present, is used.
291    * `g77''s version of `libf2c' separates out the setting of global
292      state (such as command-line arguments and signal handling) from
293      `main.o' into distinct, new library archive members.
295      This should make it easier to write portable applications that
296      have their own (non-Fortran) `main()' routine properly set up the
297      `libf2c' environment, even when `libf2c' (now `libg2c') is a
298      shared library.
300  25. `g77' no longer installs the `f77' command and `f77.1' man page in
301      the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
302      file exists in the source or build directory.  See the
303      installation documentation for more information.
305  26. `g77' no longer installs the `libf2c.a' library and `f2c.h'
306      include file in the `/usr' or `/usr/local' heirarchy, even if the
307      `f2c-install-ok' or `f2c-exists-ok' files exist in the source or
308      build directory.  See the installation documentation for more
309      information.
311  27. The `libf2c.a' library produced by `g77' has been renamed to
312      `libg2c.a'.  It is installed only in the `gcc' "private" directory
313      heirarchy, `gcc-lib'.  This allows system administrators and users
314      to choose which version of the `libf2c' library from `netlib' they
315      wish to use on a case-by-case basis.  See the installation
316      documentation for more information.
318  28. The `f2c.h' include (header) file produced by `g77' has been
319      renamed to `g2c.h'.  It is installed only in the `gcc' "private"
320      directory heirarchy, `gcc-lib'.  This allows system administrators
321      and users to choose which version of the include file from
322      `netlib' they wish to use on a case-by-case basis.  See the
323      installation documentation for more information.
325    * The `g77' command now expects the run-time library to be named
326      `libg2c.a' instead of `libf2c.a', to ensure that a version other
327      than the one built and installed as part of the same `g77' version
328      is picked up.
330  29. During the configuration and build process, `g77' creates
331      subdirectories it needs only as it needs them.  Other cleaning up
332      of the configuration and build process has been performed as well.
334  30. `install-info' now used to update the directory of Info
335      documentation to contain an entry for `g77' (during installation).
337    * Some diagnostics have been changed from warnings to errors, to
338      prevent inadvertent use of the resulting, probably buggy, programs.
339      These mostly include diagnostics about use of unsupported features
340      in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
341      about truncations of various sorts of constants.
343  31. Improve compilation of `FORMAT' expressions so that a null byte is
344      appended to the last operand if it is a constant.  This provides a
345      cleaner run-time diagnostic as provided by `libf2c' for statements
346      like `PRINT '(I1', 42'.
348  32. Improve documentation and indexing.
350  33. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
351      problems, including those involving some uses of the `T' format
352      specifier, and perhaps some build (porting) problems as well.
354 In `EGCS' 1.1 versus `g77' 0.5.23:
355 ==================================
357  34. Fix a code-generation bug that afflicted Intel x86 targets when
358      `-O2' was specified compiling, for example, an old version of the
359      `DNRM2' routine.
361      The x87 coprocessor stack was being mismanaged in cases involving
362      assigned `GOTO' and `ASSIGN'.
364  35. `g77' no longer produces incorrect code and initial values for
365      `EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
366      ordering of members vis-a-vis their types, require initial padding.
368  36. Fix `g77' crash compiling code containing the construct
369      `CMPLX(0.)' or similar.
371  37. `g77' no longer crashes when compiling code containing
372      specification statements such as `INTEGER(KIND=7) PTR'.
374  38. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
375      2)'.
377    * `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
378      expressions when they are used as arguments in procedure calls.
379      This change applies only to global (filewide) analysis, making it
380      consistent with how `g77' actually generates code for these cases.
382      Previously, `g77' treated these expressions as denoting special
383      "pointer" arguments for the purposes of filewide analysis.
385  39. Fix `g77' crash (or apparently infinite run-time) when compiling
386      certain complicated expressions involving `COMPLEX' arithmetic
387      (especially multiplication).
389    * Align static double-precision variables and arrays on Intel x86
390      targets regardless of whether `-malign-double' is specified.
392      Generally, this affects only local variables and arrays having the
393      `SAVE' attribute or given initial values via `DATA'.
395    * The `g77' driver now ensures that `-lg2c' is specified in the link
396      phase prior to any occurrence of `-lm'.  This prevents
397      accidentally linking to a routine in the SunOS4 `-lm' library when
398      the generated code wants to link to the one in `libf2c' (`libg2c').
400    * `g77' emits more debugging information when `-g' is used.
402      This new information allows, for example, `which __g77_length_a'
403      to be used in `gdb' to determine the type of the phantom length
404      argument supplied with `CHARACTER' variables.
406      This information pertains to internally-generated type, variable,
407      and other information, not to the longstanding deficiencies
408      vis-a-vis `COMMON' and `EQUIVALENCE'.
410    * The F90 `Date_and_Time' intrinsic now is supported.
412    * The F90 `System_Clock' intrinsic allows the optional arguments
413      (except for the `Count' argument) to be omitted.
415  40. Upgrade to `libf2c' as of 1998-06-18.
417  41. Improve documentation and indexing.
419 In previous versions:
420 =====================
422    Information on previous versions is not provided in this
423 `egcs/gcc/f/NEWS' file, to keep it short.  See `egcs/gcc/f/news.texi',
424 or any of its other derivations (Info, HTML, dvi forms) for such
425 information.