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.97 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
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. Note that all such variants are
40 now obsolete - the information is retained here only for its historical
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-2.97 version of `g77', only an official _release_ of that version
56 is 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:
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
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
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',
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'
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
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
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
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
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
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
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,
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