OSDN Git Service

Daily bump.
[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 GCC-3.1 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.
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.  Note that all such variants are
40 now obsolete - the information is retained here only for its historical
41 value.
42
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.
47
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'.
53
54    In particular, while this information is intended to apply to the
55 GCC-3.1 version of `g77', only an official _release_ of that version is
56 expected to contain documentation that is most consistent with the
57 `g77' product in that version.
58
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.
63
64    That's due to attempts to keep this development version of news
65 about previous `g77' versions up-to-date.
66
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'.
70
71    The following information was last updated on 2000-11-05:
72
73 In development:
74 ===============
75
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.
79
80    * The `TtyNam' intrinsics now set NAME to all spaces (at run time)
81      if the system has no `ttyname' implementation available.
82
83    * Upgrade to `libf2c' as of 1999-06-28.
84
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)'.
90
91 In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
92 =======================================================
93
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').
97
98      For example, `INTEGER*8 J; J = 4E10' now works as documented.
99
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).
103
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.
109
110    * `libg2c' (`libf2c') no longer loses track of the file being worked
111      on during a `BACKSPACE' operation.
112
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)'.
118
119    * Automatic arrays now seem to be working on HP-UX systems.
120
121    * The `Date' intrinsic now returns the correct result on big-endian
122      systems.
123
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.
128
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'.
133
134    * The `-ax' option is now obeyed when compiling Fortran programs.
135      (It is passed to the `f771' driver.)
136
137    * The new `-fbounds-check' option causes `g77' to compile run-time
138      bounds checks of array subscripts, as well as of substring start
139      and end points.
140
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.
144
145    * Source file names with the suffixes `.FOR' and `.FPP' now are
146      recognized by `g77' as if they ended in `.for' and `.fpp',
147      respectively.
148
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.
154
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).
160
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.
164
165    * `-fno-emulate-complex' is now the default option.  This should
166      result in improved performance of code that uses the `COMPLEX'
167      data type.
168
169    * The `-malign-double' option now reliably aligns _all_
170      double-precision variables and arrays on Intel x86 targets.
171
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.
175
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.
179
180    * `g77' no longer generates code to maintain `errno', a C-language
181      concept, when performing operations such as the `SqRt' intrinsic.
182
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
186      normally used.
187
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.
193
194    * Support for the `-fugly' option has been removed.
195
196    * Improve documentation and indexing, including information on Year
197      2000 (Y2K) compliance, and providing more information on internals
198      of the front end.
199
200    * Upgrade to `libf2c' as of 1999-05-10.
201
202 In 0.5.24 versus 0.5.23:
203 ========================
204
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.
209
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.
213
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.
219
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.
222
223 In `EGCS' 1.1.2 versus `EGCS' 1.1.1:
224 ====================================
225
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.
229
230    * Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
231      milliseconds value properly in VALUES(8).
232
233    * Fix the `LStat' intrinsic (in `libg2c') to return device-ID
234      information properly in SARRAY(7).
235
236    * Improve documentation.
237
238 In `EGCS' 1.1.1 versus `EGCS' 1.1:
239 ==================================
240
241    * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
242      appropriate) whenever a `REWIND' is done.
243
244      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
245      version of `libf2c'.)
246
247    * Fix `libg2c' so it no longer crashes with a spurious diagnostic
248      upon doing any I/O following a direct formatted write.
249
250      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
251      version of `libf2c'.)
252
253    * Fix `g77' so it no longer crashes compiling references to the
254      `Rand' intrinsic on some systems.
255
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).
259
260 In `EGCS' 1.1 versus `EGCS' 1.0.3:
261 ==================================
262
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.
266
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.
270
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'.
273
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'.
278
279    * `CASE DEFAULT' no longer crashes `g77'.
280
281    * The `-Wunused' option no longer issues a spurious warning about
282      the "master" procedure generated by `g77' for procedures
283      containing `ENTRY' statements.
284
285    * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
286      `INTEGER' expression.
287
288    * Fix `g77' `-g' option so procedures that use `ENTRY' can be
289      stepped through, line by line, in `gdb'.
290
291    * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
292
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.
296
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.
300
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
304      shared library.
305
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.
310
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
315      information.
316
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.
323
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.
330
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
334      is picked up.
335
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.
339
340    * `install-info' now used to update the directory of Info
341      documentation to contain an entry for `g77' (during installation).
342
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.
348
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'.
353
354    * Improve documentation and indexing.
355
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.
359
360 In `EGCS' 1.1 versus `g77' 0.5.23:
361 ==================================
362
363    * Fix a code-generation bug that afflicted Intel x86 targets when
364      `-O2' was specified compiling, for example, an old version of the
365      `DNRM2' routine.
366
367      The x87 coprocessor stack was being mismanaged in cases involving
368      assigned `GOTO' and `ASSIGN'.
369
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.
373
374    * Fix `g77' crash compiling code containing the construct
375      `CMPLX(0.)' or similar.
376
377    * `g77' no longer crashes when compiling code containing
378      specification statements such as `INTEGER(KIND=7) PTR'.
379
380    * `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
381      2)'.
382
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.
387
388      Previously, `g77' treated these expressions as denoting special
389      "pointer" arguments for the purposes of filewide analysis.
390
391    * Fix `g77' crash (or apparently infinite run-time) when compiling
392      certain complicated expressions involving `COMPLEX' arithmetic
393      (especially multiplication).
394
395    * Align static double-precision variables and arrays on Intel x86
396      targets regardless of whether `-malign-double' is specified.
397
398      Generally, this affects only local variables and arrays having the
399      `SAVE' attribute or given initial values via `DATA'.
400
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').
405
406    * `g77' emits more debugging information when `-g' is used.
407
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.
411
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'.
415
416    * The F90 `Date_and_Time' intrinsic now is supported.
417
418    * The F90 `System_Clock' intrinsic allows the optional arguments
419      (except for the `Count' argument) to be omitted.
420
421    * Upgrade to `libf2c' as of 1998-06-18.
422
423    * Improve documentation and indexing.
424
425 In previous versions:
426 =====================
427
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
431 information.
432