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