OSDN Git Service

Update BUGS, INSTALL, NEWS 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-03-13:
70
71 In `egcs' 1.2 (versus 1.1.2):
72 =============================
73
74   1. Fix `g77' so it no longer crashes when compiling I/O statements
75      using keywords that define `INTEGER' values, such as `IOSTAT=J',
76      where J is other than default `INTEGER' (such as `INTEGER*2').
77      Instead, it issues a diagnostic.
78
79   2. The `-ax' option is now obeyed when compiling Fortran programs.
80      (It is passed to the `f771' driver.)
81
82    * Source file names with the suffixes `.FOR' and `.FPP' now are
83      recognized by `g77' as if they ended in `.for' and `.fpp',
84      respectively.
85
86    * `g77' now warns about a reference to an intrinsic that has an
87      interface that is not Year 2000 (Y2K) compliant.  Also, the
88      `libg2c' has been changed to increase the likelihood of catching
89      references to the implementations of these intrinsics using the
90      `EXTERNAL' mechanism (which would avoid the new warnings).
91
92   3. `g77' now warns about a reference to a function when the
93      corresponding *subsequent* function program unit disagrees with
94      the reference concerning the type of the function.
95
96   4. Improve documentation and indexing, including information on Year
97      2000 (Y2K) compliance.
98
99 In 0.5.24 and `egcs' 1.1.2 (versus 0.5.23 and 1.1.1):
100 =====================================================
101
102    * Fix the `IDate' Intrinsic (VXT) so the returned year is in the
103      documented, non-Y2K-compliant range of 0-99, instead of being
104      returned as 100 in the year 2000.
105
106    * Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
107      milliseconds value properly in VALUES(8).
108
109    * Fix the `LStat' intrinsic (in `libg2c') to return device-ID
110      information properly in SARRAY(7).
111
112    * Improve documentation.
113
114 In 0.5.24 and `egcs' 1.1.1 (versus 0.5.23 and 1.1):
115 ===================================================
116
117    * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
118      appropriate) whenever a `REWIND' is done.
119
120      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
121      version of `libf2c'.)
122
123    * Fix `libg2c' so it no longer crashes with a spurious diagnostic
124      upon doing any I/O following a direct formatted write.
125
126      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
127      version of `libf2c'.)
128
129    * Fix `g77' so it no longer crashes compiling references to the
130      `Rand' intrinsic on some systems.
131
132    * Fix `g77' portion of installation process so it works better on
133      some systems (those with shells requiring `else true' clauses on
134      `if' constructs for the completion code to be set properly).
135
136 In `egcs' 1.1 (versus 0.5.24):
137 ==============================
138
139   5. Fix `g77' crash compiling code containing the construct
140      `CMPLX(0.)' or similar.
141
142   6. Fix `g77' crash (or apparently infinite run-time) when compiling
143      certain complicated expressions involving `COMPLEX' arithmetic
144      (especially multiplication).
145
146   7. Fix a code-generation bug that afflicted Intel x86 targets when
147      `-O2' was specified compiling, for example, an old version of the
148      `DNRM2' routine.
149
150      The x87 coprocessor stack was being mismanaged in cases involving
151      assigned `GOTO' and `ASSIGN'.
152
153    * Align static double-precision variables and arrays on Intel x86
154      targets regardless of whether `-malign-double' is specified.
155
156      Generally, this affects only local variables and arrays having the
157      `SAVE' attribute or given initial values via `DATA'.
158
159 In `egcs' 1.1 (versus `egcs' 1.0.3):
160 ====================================
161
162   8. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
163      beyond the end of its `CHARACTER' argument, and in the `libU77'
164      intrinsics `GMTime' and `LTime' that overwrote their arguments.
165
166   9. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
167      longer elicit spurious diagnostics from `g77', even on systems
168      with pointers having different sizes than integers.
169
170      This bug is not known to have existed in any recent version of
171      `gcc'.  It was introduced in an early release of `egcs'.
172
173  10. Valid combinations of `EXTERNAL', passing that external as a dummy
174      argument without explicitly giving it a type, and, in a subsequent
175      program unit, referencing that external as an external function
176      with a different type no longer crash `g77'.
177
178  11. `CASE DEFAULT' no longer crashes `g77'.
179
180  12. The `-Wunused' option no longer issues a spurious warning about
181      the "master" procedure generated by `g77' for procedures
182      containing `ENTRY' statements.
183
184    * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
185      `INTEGER' expression.
186
187    * Fix `g77' `-g' option so procedures that use `ENTRY' can be
188      stepped through, line by line, in `gdb'.
189
190    * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
191
192    * Use `tempnam', if available, to open scratch files (as in
193      `OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment
194      variable, if present, is used.
195
196    * `g77''s version of `libf2c' separates out the setting of global
197      state (such as command-line arguments and signal handling) from
198      `main.o' into distinct, new library archive members.
199
200      This should make it easier to write portable applications that
201      have their own (non-Fortran) `main()' routine properly set up the
202      `libf2c' environment, even when `libf2c' (now `libg2c') is a
203      shared library.
204
205  13. `g77' no longer installs the `f77' command and `f77.1' man page in
206      the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
207      file exists in the source or build directory.  See the
208      installation documentation for more information.
209
210  14. `g77' no longer installs the `libf2c.a' library and `f2c.h'
211      include file in the `/usr' or `/usr/local' heirarchy, even if the
212      `f2c-install-ok' or `f2c-exists-ok' files exist in the source or
213      build directory.  See the installation documentation for more
214      information.
215
216  15. The `libf2c.a' library produced by `g77' has been renamed to
217      `libg2c.a'.  It is installed only in the `gcc' "private" directory
218      heirarchy, `gcc-lib'.  This allows system administrators and users
219      to choose which version of the `libf2c' library from `netlib' they
220      wish to use on a case-by-case basis.  See the installation
221      documentation for more information.
222
223  16. The `f2c.h' include (header) file produced by `g77' has been
224      renamed to `g2c.h'.  It is installed only in the `gcc' "private"
225      directory heirarchy, `gcc-lib'.  This allows system administrators
226      and users to choose which version of the include file from
227      `netlib' they wish to use on a case-by-case basis.  See the
228      installation documentation for more information.
229
230    * The `g77' command now expects the run-time library to be named
231      `libg2c.a' instead of `libf2c.a', to ensure that a version other
232      than the one built and installed as part of the same `g77' version
233      is picked up.
234
235  17. During the configuration and build process, `g77' creates
236      subdirectories it needs only as it needs them.  Other cleaning up
237      of the configuration and build process has been performed as well.
238
239  18. `install-info' now used to update the directory of Info
240      documentation to contain an entry for `g77' (during installation).
241
242    * Some diagnostics have been changed from warnings to errors, to
243      prevent inadvertent use of the resulting, probably buggy, programs.
244      These mostly include diagnostics about use of unsupported features
245      in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
246      about truncations of various sorts of constants.
247
248  19. Improve compilation of `FORMAT' expressions so that a null byte is
249      appended to the last operand if it is a constant.  This provides a
250      cleaner run-time diagnostic as provided by `libf2c' for statements
251      like `PRINT '(I1', 42'.
252
253  20. Improve documentation and indexing.
254
255  21. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
256      problems, including those involving some uses of the `T' format
257      specifier, and perhaps some build (porting) problems as well.
258
259 In 0.5.24 and `egcs' 1.1 (versus 0.5.23):
260 =========================================
261
262  22. `g77' no longer produces incorrect code and initial values for
263      `EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
264      ordering of members vis-a-vis their types, require initial padding.
265
266  23. `g77' no longer crashes when compiling code containing
267      specification statements such as `INTEGER(KIND=7) PTR'.
268
269  24. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
270      2)'.
271
272    * `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
273      expressions when they are used as arguments in procedure calls.
274      This change applies only to global (filewide) analysis, making it
275      consistent with how `g77' actually generates code for these cases.
276
277      Previously, `g77' treated these expressions as denoting special
278      "pointer" arguments for the purposes of filewide analysis.
279
280    * The `g77' driver now ensures that `-lg2c' is specified in the link
281      phase prior to any occurrence of `-lm'.  This prevents
282      accidentally linking to a routine in the SunOS4 `-lm' library when
283      the generated code wants to link to the one in `libf2c' (`libg2c').
284
285    * `g77' emits more debugging information when `-g' is used.
286
287      This new information allows, for example, `which __g77_length_a'
288      to be used in `gdb' to determine the type of the phantom length
289      argument supplied with `CHARACTER' variables.
290
291      This information pertains to internally-generated type, variable,
292      and other information, not to the longstanding deficiencies
293      vis-a-vis `COMMON' and `EQUIVALENCE'.
294
295    * The F90 `Date_and_Time' intrinsic now is supported.
296
297    * The F90 `System_Clock' intrinsic allows the optional arguments
298      (except for the `Count' argument) to be omitted.
299
300  25. Upgrade to `libf2c' as of 1998-06-18.
301
302  26. Improve documentation and indexing.
303
304 In previous versions:
305 =====================
306
307    Information on previous versions is not provided in this
308 `egcs/gcc/f/NEWS' file, to keep it short.  See `egcs/gcc/f/news.texi',
309 or any of its other derivations (Info, HTML, dvi forms) for such
310 information.
311