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