OSDN Git Service

update derived files
[pf3gnuchains/gcc-fork.git] / gcc / f / NEWS
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.
4
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
9 notice.
10
11 News About GNU Fortran
12 **********************
13
14    Changes made to recent versions of GNU Fortran are listed below,
15 with the most recent version first.
16
17    The changes are generally listed in order:
18
19   1. Code-generation and run-time-library bug-fixes
20
21   2. Compiler and run-time-library crashes involving valid code that
22      have been fixed
23
24   3. New features
25
26   4. Fixes and enhancements to existing features
27
28   5. New diagnostics
29
30   6. Internal improvements
31
32   7. Miscellany
33
34    This order is not strict--for example, some items involve a
35 combination of these elements.
36
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.
40
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.
45
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'.
51
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.
56
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.
61
62    That's due to attempts to keep this development version of news
63 about previous `g77' versions up-to-date.
64
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'.
68
69    The following information was last updated on 1999-05-03:
70
71 In `egcs' 1.2 (versus 1.1.2):
72 =============================
73
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').
77
78      For example, `INTEGER*8 J; J = 4E10' now works as documented.
79
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.
85
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.
90
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'.
95
96   5. The `-ax' option is now obeyed when compiling Fortran programs.
97      (It is passed to the `f771' driver.)
98
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.
102
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.
108
109    * Source file names with the suffixes `.FOR' and `.FPP' now are
110      recognized by `g77' as if they ended in `.for' and `.fpp',
111      respectively.
112
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.
118
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).
124
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.
128
129    * `-fno-emulate-complex' is now the default option.  This should
130      result in improved performance of code that uses the `COMPLEX'
131      data type.
132
133    * The `-malign-double' option now reliably aligns *all*
134      double-precision variables and arrays on Intel x86 targets.
135
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.
139
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.
145
146    * Support for the `-fugly' option has been removed.
147
148   9. Improve documentation and indexing, including information on Year
149      2000 (Y2K) compliance, and providing more information on internals
150      of the front end.
151
152  10. Upgrade to `libf2c' as of 1999-05-03.
153
154 In 0.5.24 and `egcs' 1.1.2 (versus 0.5.23 and 1.1.1):
155 =====================================================
156
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.
160
161    * Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
162      milliseconds value properly in VALUES(8).
163
164    * Fix the `LStat' intrinsic (in `libg2c') to return device-ID
165      information properly in SARRAY(7).
166
167    * Improve documentation.
168
169 In 0.5.24 and `egcs' 1.1.1 (versus 0.5.23 and 1.1):
170 ===================================================
171
172    * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
173      appropriate) whenever a `REWIND' is done.
174
175      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
176      version of `libf2c'.)
177
178    * Fix `libg2c' so it no longer crashes with a spurious diagnostic
179      upon doing any I/O following a direct formatted write.
180
181      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
182      version of `libf2c'.)
183
184    * Fix `g77' so it no longer crashes compiling references to the
185      `Rand' intrinsic on some systems.
186
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).
190
191 In `egcs' 1.1 (versus 0.5.24):
192 ==============================
193
194  11. Fix `g77' crash compiling code containing the construct
195      `CMPLX(0.)' or similar.
196
197  12. Fix `g77' crash (or apparently infinite run-time) when compiling
198      certain complicated expressions involving `COMPLEX' arithmetic
199      (especially multiplication).
200
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
203      `DNRM2' routine.
204
205      The x87 coprocessor stack was being mismanaged in cases involving
206      assigned `GOTO' and `ASSIGN'.
207
208    * Align static double-precision variables and arrays on Intel x86
209      targets regardless of whether `-malign-double' is specified.
210
211      Generally, this affects only local variables and arrays having the
212      `SAVE' attribute or given initial values via `DATA'.
213
214 In `egcs' 1.1 (versus `egcs' 1.0.3):
215 ====================================
216
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.
220
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.
224
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'.
227
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'.
232
233  17. `CASE DEFAULT' no longer crashes `g77'.
234
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.
238
239    * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
240      `INTEGER' expression.
241
242    * Fix `g77' `-g' option so procedures that use `ENTRY' can be
243      stepped through, line by line, in `gdb'.
244
245    * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
246
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.
250
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.
254
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
258      shared library.
259
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.
264
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
269      information.
270
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.
277
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.
284
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
288      is picked up.
289
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.
293
294  24. `install-info' now used to update the directory of Info
295      documentation to contain an entry for `g77' (during installation).
296
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.
302
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'.
307
308  26. Improve documentation and indexing.
309
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.
313
314 In 0.5.24 and `egcs' 1.1 (versus 0.5.23):
315 =========================================
316
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.
320
321  29. `g77' no longer crashes when compiling code containing
322      specification statements such as `INTEGER(KIND=7) PTR'.
323
324  30. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
325      2)'.
326
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.
331
332      Previously, `g77' treated these expressions as denoting special
333      "pointer" arguments for the purposes of filewide analysis.
334
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').
339
340    * `g77' emits more debugging information when `-g' is used.
341
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.
345
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'.
349
350    * The F90 `Date_and_Time' intrinsic now is supported.
351
352    * The F90 `System_Clock' intrinsic allows the optional arguments
353      (except for the `Count' argument) to be omitted.
354
355  31. Upgrade to `libf2c' as of 1998-06-18.
356
357  32. Improve documentation and indexing.
358
359 In previous versions:
360 =====================
361
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
365 information.
366