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 EGCS-1.2 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 EGCS-1.2 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://egcs.cygnus.com/onlinedocs/g77_news.html'.
69 The following information was last updated on 1999-05-03:
71 In `egcs' 1.2 (versus 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 generates bad code for an assignment to a
81 `COMPLEX' variable or array that partially overlaps one or more of
82 the sources of the same assignment (a very rare construction). It
83 now assigns through a temporary, in cases where such partial
84 overlap is deemed possible.
86 3. Fix `g77' so it no longer crashes when compiling I/O statements
87 using keywords that define `INTEGER' values, such as `IOSTAT=J',
88 where J is other than default `INTEGER' (such as `INTEGER*2').
89 Instead, it issues a diagnostic.
91 4. Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is
92 not default `INTEGER', such as `INTEGER*2', instead of producing a
93 spurious diagnostic. Also fix `DATA (A(I),I=1,N)', where `N' is
94 not default `INTEGER' to work instead of crashing `g77'.
96 5. The `-ax' option is now obeyed when compiling Fortran programs.
97 (It is passed to the `f771' driver.)
99 * The new `-fsubscript-check' option causes `g77' to compile
100 run-time bounds checks of array subscripts, as well as of
101 substring start and end points.
103 The current implementation uses the `libf2c' library routine
104 `s_rnge' to print the diagnostic. Since a future version of `g77'
105 might use a different implementation, use the new
106 `-ff2c-subscript-check' option if your application requires use of
107 `s_rnge' or a compile-time diagnostic.
109 * Source file names with the suffixes `.FOR' and `.FPP' now are
110 recognized by `g77' as if they ended in `.for' and `.fpp',
113 * The order of arguments to the *subroutine* forms of the `CTime',
114 `DTime', `ETime', and `TtyNam' intrinsics has been swapped. The
115 argument serving as the returned value for the corresponding
116 function forms now is the *second* argument, making these
117 consistent with the other subroutine forms of `libU77' intrinsics.
119 * `g77' now warns about a reference to an intrinsic that has an
120 interface that is not Year 2000 (Y2K) compliant. Also, the
121 `libg2c' has been changed to increase the likelihood of catching
122 references to the implementations of these intrinsics using the
123 `EXTERNAL' mechanism (which would avoid the new warnings).
125 6. `g77' now warns about a reference to a function when the
126 corresponding *subsequent* function program unit disagrees with
127 the reference concerning the type of the function.
129 * `-fno-emulate-complex' is now the default option. This should
130 result in improved performance of code that uses the `COMPLEX'
133 * The `-malign-double' option now reliably aligns *all*
134 double-precision variables and arrays on Intel x86 targets.
136 7. Even without the `-malign-double' option, `g77' reliably aligns
137 local double-precision variables that are not in `EQUIVALENCE'
138 areas and not `SAVE''d.
140 8. A substantial portion of the `g77' front end's code-generation
141 component was rewritten. It now generates code using facilities
142 more robustly supported by the `gcc' back end. One effect of this
143 rewrite is that some codes no longer produce a spurious "label LAB
144 used before containing binding contour" message.
146 * Support for the `-fugly' option has been removed.
148 9. Improve documentation and indexing, including information on Year
149 2000 (Y2K) compliance, and providing more information on internals
152 10. Upgrade to `libf2c' as of 1999-05-03.
154 In 0.5.24 and `egcs' 1.1.2 (versus 0.5.23 and 1.1.1):
155 =====================================================
157 * Fix the `IDate' intrinsic (VXT) (in `libg2c') so the returned year
158 is in the documented, non-Y2K-compliant range of 0-99, instead of
159 being returned as 100 in the year 2000.
161 * Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
162 milliseconds value properly in VALUES(8).
164 * Fix the `LStat' intrinsic (in `libg2c') to return device-ID
165 information properly in SARRAY(7).
167 * Improve documentation.
169 In 0.5.24 and `egcs' 1.1.1 (versus 0.5.23 and 1.1):
170 ===================================================
172 * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
173 appropriate) whenever a `REWIND' is done.
175 (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
176 version of `libf2c'.)
178 * Fix `libg2c' so it no longer crashes with a spurious diagnostic
179 upon doing any I/O following a direct formatted write.
181 (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
182 version of `libf2c'.)
184 * Fix `g77' so it no longer crashes compiling references to the
185 `Rand' intrinsic on some systems.
187 * Fix `g77' portion of installation process so it works better on
188 some systems (those with shells requiring `else true' clauses on
189 `if' constructs for the completion code to be set properly).
191 In `egcs' 1.1 (versus 0.5.24):
192 ==============================
194 11. Fix `g77' crash compiling code containing the construct
195 `CMPLX(0.)' or similar.
197 12. Fix `g77' crash (or apparently infinite run-time) when compiling
198 certain complicated expressions involving `COMPLEX' arithmetic
199 (especially multiplication).
201 13. Fix a code-generation bug that afflicted Intel x86 targets when
202 `-O2' was specified compiling, for example, an old version of the
205 The x87 coprocessor stack was being mismanaged in cases involving
206 assigned `GOTO' and `ASSIGN'.
208 * Align static double-precision variables and arrays on Intel x86
209 targets regardless of whether `-malign-double' is specified.
211 Generally, this affects only local variables and arrays having the
212 `SAVE' attribute or given initial values via `DATA'.
214 In `egcs' 1.1 (versus `egcs' 1.0.3):
215 ====================================
217 14. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
218 beyond the end of its `CHARACTER' argument, and in the `libU77'
219 intrinsics `GMTime' and `LTime' that overwrote their arguments.
221 15. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
222 longer elicit spurious diagnostics from `g77', even on systems
223 with pointers having different sizes than integers.
225 This bug is not known to have existed in any recent version of
226 `gcc'. It was introduced in an early release of `egcs'.
228 16. Valid combinations of `EXTERNAL', passing that external as a dummy
229 argument without explicitly giving it a type, and, in a subsequent
230 program unit, referencing that external as an external function
231 with a different type no longer crash `g77'.
233 17. `CASE DEFAULT' no longer crashes `g77'.
235 18. The `-Wunused' option no longer issues a spurious warning about
236 the "master" procedure generated by `g77' for procedures
237 containing `ENTRY' statements.
239 * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
240 `INTEGER' expression.
242 * Fix `g77' `-g' option so procedures that use `ENTRY' can be
243 stepped through, line by line, in `gdb'.
245 * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
247 * Use `tempnam', if available, to open scratch files (as in
248 `OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment
249 variable, if present, is used.
251 * `g77''s version of `libf2c' separates out the setting of global
252 state (such as command-line arguments and signal handling) from
253 `main.o' into distinct, new library archive members.
255 This should make it easier to write portable applications that
256 have their own (non-Fortran) `main()' routine properly set up the
257 `libf2c' environment, even when `libf2c' (now `libg2c') is a
260 19. `g77' no longer installs the `f77' command and `f77.1' man page in
261 the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
262 file exists in the source or build directory. See the
263 installation documentation for more information.
265 20. `g77' no longer installs the `libf2c.a' library and `f2c.h'
266 include file in the `/usr' or `/usr/local' heirarchy, even if the
267 `f2c-install-ok' or `f2c-exists-ok' files exist in the source or
268 build directory. See the installation documentation for more
271 21. The `libf2c.a' library produced by `g77' has been renamed to
272 `libg2c.a'. It is installed only in the `gcc' "private" directory
273 heirarchy, `gcc-lib'. This allows system administrators and users
274 to choose which version of the `libf2c' library from `netlib' they
275 wish to use on a case-by-case basis. See the installation
276 documentation for more information.
278 22. The `f2c.h' include (header) file produced by `g77' has been
279 renamed to `g2c.h'. It is installed only in the `gcc' "private"
280 directory heirarchy, `gcc-lib'. This allows system administrators
281 and users to choose which version of the include file from
282 `netlib' they wish to use on a case-by-case basis. See the
283 installation documentation for more information.
285 * The `g77' command now expects the run-time library to be named
286 `libg2c.a' instead of `libf2c.a', to ensure that a version other
287 than the one built and installed as part of the same `g77' version
290 23. During the configuration and build process, `g77' creates
291 subdirectories it needs only as it needs them. Other cleaning up
292 of the configuration and build process has been performed as well.
294 24. `install-info' now used to update the directory of Info
295 documentation to contain an entry for `g77' (during installation).
297 * Some diagnostics have been changed from warnings to errors, to
298 prevent inadvertent use of the resulting, probably buggy, programs.
299 These mostly include diagnostics about use of unsupported features
300 in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
301 about truncations of various sorts of constants.
303 25. Improve compilation of `FORMAT' expressions so that a null byte is
304 appended to the last operand if it is a constant. This provides a
305 cleaner run-time diagnostic as provided by `libf2c' for statements
306 like `PRINT '(I1', 42'.
308 26. Improve documentation and indexing.
310 27. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
311 problems, including those involving some uses of the `T' format
312 specifier, and perhaps some build (porting) problems as well.
314 In 0.5.24 and `egcs' 1.1 (versus 0.5.23):
315 =========================================
317 28. `g77' no longer produces incorrect code and initial values for
318 `EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
319 ordering of members vis-a-vis their types, require initial padding.
321 29. `g77' no longer crashes when compiling code containing
322 specification statements such as `INTEGER(KIND=7) PTR'.
324 30. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
327 * `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
328 expressions when they are used as arguments in procedure calls.
329 This change applies only to global (filewide) analysis, making it
330 consistent with how `g77' actually generates code for these cases.
332 Previously, `g77' treated these expressions as denoting special
333 "pointer" arguments for the purposes of filewide analysis.
335 * The `g77' driver now ensures that `-lg2c' is specified in the link
336 phase prior to any occurrence of `-lm'. This prevents
337 accidentally linking to a routine in the SunOS4 `-lm' library when
338 the generated code wants to link to the one in `libf2c' (`libg2c').
340 * `g77' emits more debugging information when `-g' is used.
342 This new information allows, for example, `which __g77_length_a'
343 to be used in `gdb' to determine the type of the phantom length
344 argument supplied with `CHARACTER' variables.
346 This information pertains to internally-generated type, variable,
347 and other information, not to the longstanding deficiencies
348 vis-a-vis `COMMON' and `EQUIVALENCE'.
350 * The F90 `Date_and_Time' intrinsic now is supported.
352 * The F90 `System_Clock' intrinsic allows the optional arguments
353 (except for the `Count' argument) to be omitted.
355 31. Upgrade to `libf2c' as of 1998-06-18.
357 32. Improve documentation and indexing.
359 In previous versions:
360 =====================
362 Information on previous versions is not provided in this
363 `egcs/gcc/f/NEWS' file, to keep it short. See `egcs/gcc/f/news.texi',
364 or any of its other derivations (Info, HTML, dvi forms) for such