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