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
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
26 4. Fixes and enhancements to existing features
30 6. Internal improvements
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://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
69 The following information was last updated on 1999-07-08:
71 In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
72 =======================================================
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').
78 For example, `INTEGER*8 J; J = 4E10' now works as documented.
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).
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.
90 4. `libg2c' (`libf2c') no longer loses track of the file being worked
91 on during a `BACKSPACE' operation.
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)'.
99 6. Automatic arrays now seem to be working on HP-UX systems.
101 7. The `Date' intrinsic now returns the correct result on big-endian
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.
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'.
114 10. The `-ax' option is now obeyed when compiling Fortran programs.
115 (It is passed to the `f771' driver.)
117 * The new `-fbounds-check' option causes `g77' to compile run-time
118 bounds checks of array subscripts, as well as of substring start
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.
125 * Source file names with the suffixes `.FOR' and `.FPP' now are
126 recognized by `g77' as if they ended in `.for' and `.fpp',
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.
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).
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.
145 * `-fno-emulate-complex' is now the default option. This should
146 result in improved performance of code that uses the `COMPLEX'
149 * The `-malign-double' option now reliably aligns *all*
150 double-precision variables and arrays on Intel x86 targets.
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.
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.
160 * `g77' no longer generates code to maintain `errno', a C-language
161 concept, when performing operations such as the `SqRt' intrinsic.
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
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.
174 * Support for the `-fugly' option has been removed.
176 16. Improve documentation and indexing, including information on Year
177 2000 (Y2K) compliance, and providing more information on internals
180 17. Upgrade to `libf2c' as of 1999-05-10.
182 In 0.5.24 versus 0.5.23:
183 ========================
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.
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.
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.
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.
203 In `EGCS' 1.1.2 versus `EGCS' 1.1.1:
204 ====================================
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.
210 * Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
211 milliseconds value properly in VALUES(8).
213 * Fix the `LStat' intrinsic (in `libg2c') to return device-ID
214 information properly in SARRAY(7).
216 * Improve documentation.
218 In `EGCS' 1.1.1 versus `EGCS' 1.1:
219 ==================================
221 * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
222 appropriate) whenever a `REWIND' is done.
224 (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
225 version of `libf2c'.)
227 * Fix `libg2c' so it no longer crashes with a spurious diagnostic
228 upon doing any I/O following a direct formatted write.
230 (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
231 version of `libf2c'.)
233 * Fix `g77' so it no longer crashes compiling references to the
234 `Rand' intrinsic on some systems.
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).
240 In `EGCS' 1.1 versus `EGCS' 1.0.3:
241 ==================================
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.
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.
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'.
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'.
259 21. `CASE DEFAULT' no longer crashes `g77'.
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.
265 * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
266 `INTEGER' expression.
268 * Fix `g77' `-g' option so procedures that use `ENTRY' can be
269 stepped through, line by line, in `gdb'.
271 * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
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.
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.
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
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.
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
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.
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.
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
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.
320 28. `install-info' now used to update the directory of Info
321 documentation to contain an entry for `g77' (during installation).
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.
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'.
334 30. Improve documentation and indexing.
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.
340 In `EGCS' 1.1 versus `g77' 0.5.23:
341 ==================================
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
347 The x87 coprocessor stack was being mismanaged in cases involving
348 assigned `GOTO' and `ASSIGN'.
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.
354 34. Fix `g77' crash compiling code containing the construct
355 `CMPLX(0.)' or similar.
357 35. `g77' no longer crashes when compiling code containing
358 specification statements such as `INTEGER(KIND=7) PTR'.
360 36. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
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.
368 Previously, `g77' treated these expressions as denoting special
369 "pointer" arguments for the purposes of filewide analysis.
371 37. Fix `g77' crash (or apparently infinite run-time) when compiling
372 certain complicated expressions involving `COMPLEX' arithmetic
373 (especially multiplication).
375 * Align static double-precision variables and arrays on Intel x86
376 targets regardless of whether `-malign-double' is specified.
378 Generally, this affects only local variables and arrays having the
379 `SAVE' attribute or given initial values via `DATA'.
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').
386 * `g77' emits more debugging information when `-g' is used.
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.
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'.
396 * The F90 `Date_and_Time' intrinsic now is supported.
398 * The F90 `System_Clock' intrinsic allows the optional arguments
399 (except for the `Count' argument) to be omitted.
401 38. Upgrade to `libf2c' as of 1998-06-18.
403 39. Improve documentation and indexing.
405 In previous versions:
406 =====================
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