OSDN Git Service

update NEWS, intdoc.texi derived files
[pf3gnuchains/gcc-fork.git] / gcc / f / NEWS
1 NOTE: This file is automatically generated from the files `news0.texi'
2 and `news.texi'.  `NEWS' is *not* a source file, although it is
3 normally included within source distributions.
4
5    This file lists recent changes to the GNU Fortran compiler.
6 Copyright (C) 1995-1999 Free Software Foundation, Inc.  You may copy,
7 distribute, and modify it freely as long as you preserve this copyright
8 notice and permission notice.
9
10 News About GNU Fortran
11 **********************
12
13    Changes made to recent versions of GNU Fortran are listed below,
14 with the most recent version first.
15
16    The changes are generally listed in order:
17
18   1. Code-generation and run-time-library bug-fixes
19
20   2. Compiler and run-time-library crashes involving valid code that
21      have been fixed
22
23   3. New features
24
25   4. Fixes and enhancements to existing features
26
27   5. New diagnostics
28
29   6. Internal improvements
30
31   7. Miscellany
32
33    This order is not strict--for example, some items involve a
34 combination of these elements.
35
36    Note that two variants of `g77' are tracked below.  The `egcs'
37 variant is described vis-a-vis previous versions of `egcs' and/or an
38 official FSF version, as appropriate.
39
40    Therefore, `egcs' versions sometimes have multiple listings to help
41 clarify how they differ from other versions, though this can make
42 getting a complete picture of what a particular `egcs' version contains
43 somewhat more difficult.
44
45 In `egcs' 1.2:
46 ==============
47
48    * Fix `g77' so it no longer crashes when compiling I/O statements
49      using keywords that define `INTEGER' values, such as `IOSTAT=J',
50      where J is other than default `INTEGER' (such as `INTEGER*2').
51      Instead, it issues a diagnostic.
52
53    * The `-ax' option is now obeyed when compiling Fortran programs.
54      (It is passed to the `f771' driver.)
55
56    * Source file names with the suffixes `.FOR' and `.FPP' now are
57      recognized by `g77' as if they ended in `.for' and `.fpp',
58      respectively.
59
60    * `g77' now warns about a reference to a function when the
61      corresponding *subsequent* function program unit disagrees with
62      the reference concerning the type of the function.
63
64    * Improve documentation and indexing, including information on Year
65      2000 (Y2K) compliance.
66
67 In 0.5.24 and `egcs' 1.1.2 (versus 0.5.23 and 1.1.1):
68 =====================================================
69
70    * Fix the `IDate' Intrinsic (VXT) so the returned year is in the
71      documented, non-Y2K-compliant range of 0-99, instead of being
72      returned as 100 in the year 2000.
73
74      *Note IDate Intrinsic (VXT)::, for more information.
75
76    * Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
77      milliseconds value properly in VALUES(8).
78
79    * Fix the `LStat' intrinsic (in `libg2c') to return device-ID
80      information properly in SARRAY(7).
81
82    * Improve documentation.
83
84 In 0.5.24 and `egcs' 1.1.1 (versus 0.5.23 and 1.1):
85 ===================================================
86
87    * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
88      appropriate) whenever a `REWIND' is done.
89
90      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
91      version of `libf2c'.)
92
93    * Fix `libg2c' so it no longer crashes with a spurious diagnostic
94      upon doing any I/O following a direct formatted write.
95
96      (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
97      version of `libf2c'.)
98
99    * Fix `g77' so it no longer crashes compiling references to the
100      `Rand' intrinsic on some systems.
101
102    * Fix `g77' portion of installation process so it works better on
103      some systems (those with shells requiring `else true' clauses on
104      `if' constructs for the completion code to be set properly).
105
106 In `egcs' 1.1 (versus 0.5.24):
107 ==============================
108
109    * Fix `g77' crash compiling code containing the construct
110      `CMPLX(0.)' or similar.
111
112    * Fix `g77' crash (or apparently infinite run-time) when compiling
113      certain complicated expressions involving `COMPLEX' arithmetic
114      (especially multiplication).
115
116    * Fix a code-generation bug that afflicted Intel x86 targets when
117      `-O2' was specified compiling, for example, an old version of the
118      `DNRM2' routine.
119
120      The x87 coprocessor stack was being mismanaged in cases involving
121      assigned `GOTO' and `ASSIGN'.
122
123    * Align static double-precision variables and arrays on Intel x86
124      targets regardless of whether `-malign-double' is specified.
125
126      Generally, this affects only local variables and arrays having the
127      `SAVE' attribute or given initial values via `DATA'.
128
129 In `egcs' 1.1 (versus `egcs' 1.0.3):
130 ====================================
131
132    * Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
133      beyond the end of its `CHARACTER' argument, and in the `libU77'
134      intrinsics `GMTime' and `LTime' that overwrote their arguments.
135
136    * Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
137      longer elicit spurious diagnostics from `g77', even on systems
138      with pointers having different sizes than integers.
139
140      This bug is not known to have existed in any recent version of
141      `gcc'.  It was introduced in an early release of `egcs'.
142
143    * Valid combinations of `EXTERNAL', passing that external as a dummy
144      argument without explicitly giving it a type, and, in a subsequent
145      program unit, referencing that external as an external function
146      with a different type no longer crash `g77'.
147
148    * `CASE DEFAULT' no longer crashes `g77'.
149
150    * The `-Wunused' option no longer issues a spurious warning about
151      the "master" procedure generated by `g77' for procedures
152      containing `ENTRY' statements.
153
154    * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
155      `INTEGER' expression.
156
157    * Fix `g77' `-g' option so procedures that use `ENTRY' can be
158      stepped through, line by line, in `gdb'.
159
160    * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
161
162    * Use `tempnam', if available, to open scratch files (as in
163      `OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment
164      variable, if present, is used.
165
166    * `g77''s version of `libf2c' separates out the setting of global
167      state (such as command-line arguments and signal handling) from
168      `main.o' into distinct, new library archive members.
169
170      This should make it easier to write portable applications that
171      have their own (non-Fortran) `main()' routine properly set up the
172      `libf2c' environment, even when `libf2c' (now `libg2c') is a
173      shared library.
174
175    * `g77' no longer installs the `f77' command and `f77.1' man page in
176      the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
177      file exists in the source or build directory.  See the
178      installation documentation for more information.
179
180    * `g77' no longer installs the `libf2c.a' library and `f2c.h'
181      include file in the `/usr' or `/usr/local' heirarchy, even if the
182      `f2c-install-ok' or `f2c-exists-ok' files exist in the source or
183      build directory.  See the installation documentation for more
184      information.
185
186    * The `libf2c.a' library produced by `g77' has been renamed to
187      `libg2c.a'.  It is installed only in the `gcc' "private" directory
188      heirarchy, `gcc-lib'.  This allows system administrators and users
189      to choose which version of the `libf2c' library from `netlib' they
190      wish to use on a case-by-case basis.  See the installation
191      documentation for more information.
192
193    * The `f2c.h' include (header) file produced by `g77' has been
194      renamed to `g2c.h'.  It is installed only in the `gcc' "private"
195      directory heirarchy, `gcc-lib'.  This allows system administrators
196      and users to choose which version of the include file from
197      `netlib' they wish to use on a case-by-case basis.  See the
198      installation documentation for more information.
199
200    * The `g77' command now expects the run-time library to be named
201      `libg2c.a' instead of `libf2c.a', to ensure that a version other
202      than the one built and installed as part of the same `g77' version
203      is picked up.
204
205    * During the configuration and build process, `g77' creates
206      subdirectories it needs only as it needs them.  Other cleaning up
207      of the configuration and build process has been performed as well.
208
209    * `install-info' now used to update the directory of Info
210      documentation to contain an entry for `g77' (during installation).
211
212    * Some diagnostics have been changed from warnings to errors, to
213      prevent inadvertent use of the resulting, probably buggy, programs.
214      These mostly include diagnostics about use of unsupported features
215      in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
216      about truncations of various sorts of constants.
217
218    * Improve compilation of `FORMAT' expressions so that a null byte is
219      appended to the last operand if it is a constant.  This provides a
220      cleaner run-time diagnostic as provided by `libf2c' for statements
221      like `PRINT '(I1', 42'.
222
223    * Improve documentation and indexing.
224
225    * The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
226      problems, including those involving some uses of the `T' format
227      specifier, and perhaps some build (porting) problems as well.
228
229 In 0.5.24 and `egcs' 1.1 (versus 0.5.23):
230 =========================================
231
232    * `g77' no longer produces incorrect code and initial values for
233      `EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
234      ordering of members vis-a-vis their types, require initial padding.
235
236    * `g77' no longer crashes when compiling code containing
237      specification statements such as `INTEGER(KIND=7) PTR'.
238
239    * `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
240      2)'.
241
242    * `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
243      expressions when they are used as arguments in procedure calls.
244      This change applies only to global (filewide) analysis, making it
245      consistent with how `g77' actually generates code for these cases.
246
247      Previously, `g77' treated these expressions as denoting special
248      "pointer" arguments for the purposes of filewide analysis.
249
250    * The `g77' driver now ensures that `-lg2c' is specified in the link
251      phase prior to any occurrence of `-lm'.  This prevents
252      accidentally linking to a routine in the SunOS4 `-lm' library when
253      the generated code wants to link to the one in `libf2c' (`libg2c').
254
255    * `g77' emits more debugging information when `-g' is used.
256
257      This new information allows, for example, `which __g77_length_a'
258      to be used in `gdb' to determine the type of the phantom length
259      argument supplied with `CHARACTER' variables.
260
261      This information pertains to internally-generated type, variable,
262      and other information, not to the longstanding deficiencies
263      vis-a-vis `COMMON' and `EQUIVALENCE'.
264
265    * The F90 `Date_and_Time' intrinsic now is supported.
266
267    * The F90 `System_Clock' intrinsic allows the optional arguments
268      (except for the `Count' argument) to be omitted.
269
270    * Upgrade to `libf2c' as of 1998-06-18.
271
272    * Improve documentation and indexing.
273
274 In 0.5.23 (versus 0.5.22):
275 ==========================
276
277    * This release contains several regressions against version 0.5.22
278      of `g77', due to using the "vanilla" `gcc' back end instead of
279      patching it to fix a few bugs and improve performance in a few
280      cases.
281
282      *Note Actual Bugs We Haven't Fixed Yet: Actual Bugs, available in
283      plain-text format in `gcc/f/BUGS', for information on the known
284      bugs in this version, including the regressions.
285
286      Features that have been dropped from this version of `g77' due to
287      their being implemented via `g77'-specific patches to the `gcc'
288      back end in previous releases include:
289
290         - Support for `__restrict__' keyword, the options
291           `-fargument-alias', `-fargument-noalias', and
292           `-fargument-noalias-global', and the corresponding
293           alias-analysis code.
294
295           (`egcs' has the alias-analysis code, but not the
296           `__restrict__' keyword.  `egcs' `g77' users benefit from the
297           alias-analysis code despite the lack of the `__restrict__'
298           keyword, which is a C-language construct.)
299
300         - Support for the GNU compiler options `-fmove-all-movables',
301           `-freduce-all-givs', and `-frerun-loop-opt'.
302
303           (`egcs' supports these options.  `g77' users of `egcs'
304           benefit from them even if they are not explicitly specified,
305           because the defaults are optimized for `g77' users.)
306
307         - Support for the `-W' option warning about integer division by
308           zero.
309
310         - The Intel x86-specific option `-malign-double' applying to
311           stack-allocated data as well as statically-allocate data.
312
313      Note that the `gcc/f/gbe/' subdirectory has been removed from this
314      distribution as a result of `g77' no longer including patches for
315      the `gcc' back end.
316
317    * Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
318      beyond the end of its `CHARACTER' argument, and in the `libU77'
319      intrinsics `GMTime' and `LTime' that overwrote their arguments.
320
321    * Support `gcc' version 2.8, and remove support for prior versions
322      of `gcc'.
323
324    * Remove support for the `--driver' option, as `g77' now does all
325      the driving, just like `gcc'.
326
327    * `CASE DEFAULT' no longer crashes `g77'.
328
329    * Valid combinations of `EXTERNAL', passing that external as a dummy
330      argument without explicitly giving it a type, and, in a subsequent
331      program unit, referencing that external as an external function
332      with a different type no longer crash `g77'.
333
334    * `g77' no longer installs the `f77' command and `f77.1' man page in
335      the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
336      file exists in the source or build directory.  See the
337      installation documentation for more information.
338
339    * `g77' no longer installs the `libf2c.a' library and `f2c.h'
340      include file in the `/usr' or `/usr/local' heirarchy, even if the
341      `f2c-install-ok' or `f2c-exists-ok' files exist in the source or
342      build directory.  See the installation documentation for more
343      information.
344
345    * The `libf2c.a' library produced by `g77' has been renamed to
346      `libg2c.a'.  It is installed only in the `gcc' "private" directory
347      heirarchy, `gcc-lib'.  This allows system administrators and users
348      to choose which version of the `libf2c' library from `netlib' they
349      wish to use on a case-by-case basis.  See the installation
350      documentation for more information.
351
352    * The `f2c.h' include (header) file produced by `g77' has been
353      renamed to `g2c.h'.  It is installed only in the `gcc' "private"
354      directory heirarchy, `gcc-lib'.  This allows system administrators
355      and users to choose which version of the include file from
356      `netlib' they wish to use on a case-by-case basis.  See the
357      installation documentation for more information.
358
359    * The `g77' command now expects the run-time library to be named
360      `libg2c.a' instead of `libf2c.a', to ensure that a version other
361      than the one built and installed as part of the same `g77' version
362      is picked up.
363
364    * The `-Wunused' option no longer issues a spurious warning about
365      the "master" procedure generated by `g77' for procedures
366      containing `ENTRY' statements.
367
368    * `g77''s version of `libf2c' separates out the setting of global
369      state (such as command-line arguments and signal handling) from
370      `main.o' into distinct, new library archive members.
371
372      This should make it easier to write portable applications that
373      have their own (non-Fortran) `main()' routine properly set up the
374      `libf2c' environment, even when `libf2c' (now `libg2c') is a
375      shared library.
376
377    * During the configuration and build process, `g77' creates
378      subdirectories it needs only as it needs them, thus avoiding
379      unnecessary creation of, for example, `stage1/f/runtime' when
380      doing a non-bootstrap build.  Other cleaning up of the
381      configuration and build process has been performed as well.
382
383    * `install-info' now used to update the directory of Info
384      documentation to contain an entry for `g77' (during installation).
385
386    * Some diagnostics have been changed from warnings to errors, to
387      prevent inadvertent use of the resulting, probably buggy, programs.
388      These mostly include diagnostics about use of unsupported features
389      in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
390      about truncations of various sorts of constants.
391
392    * Improve documentation and indexing.
393
394    * Upgrade to `libf2c' as of 1998-04-20.
395
396      This should fix a variety of problems, including those involving
397      some uses of the `T' format specifier, and perhaps some build
398      (porting) problems as well.
399
400 In 0.5.22 (versus 0.5.21):
401 ==========================
402
403    * Fix code generation for iterative `DO' loops that have one or more
404      references to the iteration variable, or to aliases of it, in
405      their control expressions.  For example, `DO 10 J=2,J' now is
406      compiled correctly.
407
408    * Fix a code-generation bug that afflicted Intel x86 targets when
409      `-O2' was specified compiling, for example, an old version of the
410      `DNRM2' routine.
411
412      The x87 coprocessor stack was being mismanaged in cases involving
413      assigned `GOTO' and `ASSIGN'.
414
415    * Fix `DTime' intrinsic so as not to truncate results to integer
416      values (on some systems).
417
418    * Fix `Signal' intrinsic so it offers portable support for 64-bit
419      systems (such as Digital Alphas running GNU/Linux).
420
421    * Fix run-time crash involving `NAMELIST' on 64-bit machines such as
422      Alphas.
423
424    * Fix `g77' version of `libf2c' so it no longer produces a spurious
425      `I/O recursion' diagnostic at run time when an I/O operation (such
426      as `READ *,I') is interrupted in a manner that causes the program
427      to be terminated via the `f_exit' routine (such as via `C-c').
428
429    * Fix `g77' crash triggered by `CASE' statement with an omitted
430      lower or upper bound.
431
432    * Fix `g77' crash compiling references to `CPU_Time' intrinsic.
433
434    * Fix `g77' crash (or apparently infinite run-time) when compiling
435      certain complicated expressions involving `COMPLEX' arithmetic
436      (especially multiplication).
437
438    * Fix `g77' crash on statements such as `PRINT *,
439      (REAL(Z(I)),I=1,2)', where `Z' is `DOUBLE COMPLEX'.
440
441    * Fix a `g++' crash.
442
443    * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
444      `INTEGER' expression.
445
446    * Fix `g77' `-g' option so procedures that use `ENTRY' can be
447      stepped through, line by line, in `gdb'.
448
449    * Fix a profiling-related bug in `gcc' back end for Intel x86
450      architecture.
451
452    * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
453
454    * Allow any numeric argument to intrinsics `Int2' and `Int8'.
455
456    * Use `tempnam', if available, to open scratch files (as in
457      `OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment
458      variable, if present, is used.
459
460    * Rename the `gcc' keyword `restrict' to `__restrict__', to avoid
461      rejecting valid, existing, C programs.  Support for `restrict' is
462      now more like support for `complex'.
463
464    * Fix `-fpedantic' to not reject procedure invocations such as
465      `I=J()' and `CALL FOO()'.
466
467    * Fix `-fugly-comma' to affect invocations of only external
468      procedures.  Restore rejection of gratuitous trailing omitted
469      arguments to intrinsics, as in `I=MAX(3,4,,)'.
470
471    * Fix compiler so it accepts `-fgnu-intrinsics-*' and
472      `-fbadu77-intrinsics-*' options.
473
474    * Improve diagnostic messages from `libf2c' so it is more likely
475      that the printing of the active format string is limited to the
476      string, with no trailing garbage being printed.
477
478      (Unlike `f2c', `g77' did not append a null byte to its compiled
479      form of every format string specified via a `FORMAT' statement.
480      However, `f2c' would exhibit the problem anyway for a statement
481      like `PRINT '(I)garbage', 1' by printing `(I)garbage' as the
482      format string.)
483
484    * Improve compilation of `FORMAT' expressions so that a null byte is
485      appended to the last operand if it is a constant.  This provides a
486      cleaner run-time diagnostic as provided by `libf2c' for statements
487      like `PRINT '(I1', 42'.
488
489    * Fix various crashes involving code with diagnosed errors.
490
491    * Fix cross-compilation bug when configuring `libf2c'.
492
493    * Improve diagnostics.
494
495    * Improve documentation and indexing.
496
497    * Upgrade to `libf2c' as of 1997-09-23.  This fixes a formatted-I/O
498      bug that afflicted 64-bit systems with 32-bit integers (such as
499      Digital Alpha running GNU/Linux).
500
501 In `egcs' 1.0.2 (versus `egcs' 1.0.1):
502 ======================================
503
504    * Fix `g77' crash triggered by `CASE' statement with an omitted
505      lower or upper bound.
506
507    * Fix `g77' crash on statements such as `PRINT *,
508      (REAL(Z(I)),I=1,2)', where `Z' is `DOUBLE COMPLEX'.
509
510    * Fix `-fPIC' (such as compiling for ELF targets) on the Intel x86
511      architecture target so invalid assembler code is no longer
512      produced.
513
514    * Fix `-fpedantic' to not reject procedure invocations such as
515      `I=J()' and `CALL FOO()'.
516
517    * Fix `-fugly-comma' to affect invocations of only external
518      procedures.  Restore rejection of gratuitous trailing omitted
519      arguments to intrinsics, as in `I=MAX(3,4,,)'.
520
521    * Fix compiler so it accepts `-fgnu-intrinsics-*' and
522      `-fbadu77-intrinsics-*' options.
523
524 In `egcs' 1.0.1 (versus `egcs' 1.0):
525 ====================================
526
527    * Fix run-time crash involving `NAMELIST' on 64-bit machines such as
528      Alphas.
529
530 In `egcs' 1.0 (versus 0.5.21):
531 ==============================
532
533    * Version 1.0 of `egcs' contains several regressions against version
534      0.5.21 of `g77', due to using the "vanilla" `gcc' back end instead
535      of patching it to fix a few bugs and improve performance in a few
536      cases.
537
538      *Note Actual Bugs We Haven't Fixed Yet: Actual Bugs, available in
539      plain-text format in `gcc/f/BUGS', for information on the known
540      bugs in this version, including the regressions.
541
542      Features that have been dropped from this version of `g77' due to
543      their being implemented via `g77'-specific patches to the `gcc'
544      back end in previous releases include:
545
546         - Support for the C-language `restrict' keyword.
547
548         - Support for the `-W' option warning about integer division by
549           zero.
550
551         - The Intel x86-specific option `-malign-double' applying to
552           stack-allocated data as well as statically-allocate data.
553
554      Note that the `gcc/f/gbe/' subdirectory has been removed from this
555      distribution as a result of `g77' being fully integrated with the
556      `egcs' variant of the `gcc' back end.
557
558    * Fix code generation for iterative `DO' loops that have one or more
559      references to the iteration variable, or to aliases of it, in
560      their control expressions.  For example, `DO 10 J=2,J' now is
561      compiled correctly.
562
563    * Fix `DTime' intrinsic so as not to truncate results to integer
564      values (on some systems).
565
566    * Some Fortran code, miscompiled by `g77' built on `gcc' version
567      2.8.1 on m68k-next-nextstep3 configurations when using the `-O2'
568      option, is now compiled correctly.  It is believed that a C
569      function known to miscompile on that configuration when using the
570      `-O2 -funroll-loops' options also is now compiled correctly.
571
572    * Remove support for non-`egcs' versions of `gcc'.
573
574    * Remove support for the `--driver' option, as `g77' now does all
575      the driving, just like `gcc'.
576
577    * Allow any numeric argument to intrinsics `Int2' and `Int8'.
578
579    * Improve diagnostic messages from `libf2c' so it is more likely
580      that the printing of the active format string is limited to the
581      string, with no trailing garbage being printed.
582
583      (Unlike `f2c', `g77' did not append a null byte to its compiled
584      form of every format string specified via a `FORMAT' statement.
585      However, `f2c' would exhibit the problem anyway for a statement
586      like `PRINT '(I)garbage', 1' by printing `(I)garbage' as the
587      format string.)
588
589    * Upgrade to `libf2c' as of 1997-09-23.  This fixes a formatted-I/O
590      bug that afflicted 64-bit systems with 32-bit integers (such as
591      Digital Alpha running GNU/Linux).
592
593 In 0.5.21:
594 ==========
595
596    * Fix a code-generation bug introduced by 0.5.20 caused by loop
597      unrolling (by specifying `-funroll-loops' or similar).  This bug
598      afflicted all code compiled by version 2.7.2.2.f.2 of `gcc' (C,
599      C++, Fortran, and so on).
600
601    * Fix a code-generation bug manifested when combining local
602      `EQUIVALENCE' with a `DATA' statement that follows the first
603      executable statement (or is treated as an executable-context
604      statement as a result of using the `-fpedantic' option).
605
606    * Fix a compiler crash that occured when an integer division by a
607      constant zero is detected.  Instead, when the `-W' option is
608      specified, the `gcc' back end issues a warning about such a case.
609      This bug afflicted all code compiled by version 2.7.2.2.f.2 of
610      `gcc' (C, C++, Fortran, and so on).
611
612    * Fix a compiler crash that occurred in some cases of procedure
613      inlining.  (Such cases became more frequent in 0.5.20.)
614
615    * Fix a compiler crash resulting from using `DATA' or similar to
616      initialize a `COMPLEX' variable or array to zero.
617
618    * Fix compiler crashes involving use of `AND', `OR', or `XOR'
619      intrinsics.
620
621    * Fix compiler bug triggered when using a `COMMON' or `EQUIVALENCE'
622      variable as the target of an `ASSIGN' or assigned-`GOTO' statement.
623
624    * Fix compiler crashes due to using the name of a some non-standard
625      intrinsics (such as `FTELL' or `FPUTC') as such and as the name of
626      a procedure or common block.  Such dual use of a name in a program
627      is allowed by the standard.
628
629    * Place automatic arrays on the stack, even if `SAVE' or the
630      `-fno-automatic' option is in effect.  This avoids a compiler
631      crash in some cases.
632
633    * The `-malign-double' option now reliably aligns `DOUBLE PRECISION'
634      optimally on Pentium and Pentium Pro architectures (586 and 686 in
635      `gcc').
636
637    * New option `-Wno-globals' disables warnings about "suspicious" use
638      of a name both as a global name and as the implicit name of an
639      intrinsic, and warnings about disagreements over the number or
640      natures of arguments passed to global procedures, or the natures
641      of the procedures themselves.
642
643      The default is to issue such warnings, which are new as of this
644      version of `g77'.
645
646    * New option `-fno-globals' disables diagnostics about potentially
647      fatal disagreements analysis problems, such as disagreements over
648      the number or natures of arguments passed to global procedures, or
649      the natures of those procedures themselves.
650
651      The default is to issue such diagnostics and flag the compilation
652      as unsuccessful.  With this option, the diagnostics are issued as
653      warnings, or, if `-Wno-globals' is specified, are not issued at
654      all.
655
656      This option also disables inlining of global procedures, to avoid
657      compiler crashes resulting from coding errors that these
658      diagnostics normally would identify.
659
660    * Diagnose cases where a reference to a procedure disagrees with the
661      type of that procedure, or where disagreements about the number or
662      nature of arguments exist.  This avoids a compiler crash.
663
664    * Fix parsing bug whereby `g77' rejected a second initialization
665      specification immediately following the first's closing `/' without
666      an intervening comma in a `DATA' statement, and the second
667      specification was an implied-DO list.
668
669    * Improve performance of the `gcc' back end so certain complicated
670      expressions involving `COMPLEX' arithmetic (especially
671      multiplication) don't appear to take forever to compile.
672
673    * Fix a couple of profiling-related bugs in `gcc' back end.
674
675    * Integrate GNU Ada's (GNAT's) changes to the back end, which
676      consist almost entirely of bug fixes.  These fixes are circa
677      version 3.10p of GNAT.
678
679    * Include some other `gcc' fixes that seem useful in `g77''s version
680      of `gcc'.  (See `gcc/ChangeLog' for details--compare it to that
681      file in the vanilla `gcc-2.7.2.3.tar.gz' distribution.)
682
683    * Fix `libU77' routines that accept file and other names to strip
684      trailing blanks from them, for consistency with other
685      implementations.  Blanks may be forcibly appended to such names by
686      appending a single null character (`CHAR(0)') to the significant
687      trailing blanks.
688
689    * Fix `CHMOD' intrinsic to work with file names that have embedded
690      blanks, commas, and so on.
691
692    * Fix `SIGNAL' intrinsic so it accepts an optional third `Status'
693      argument.
694
695    * Fix `IDATE()' intrinsic subroutine (VXT form) so it accepts
696      arguments in the correct order.  Documentation fixed accordingly,
697      and for `GMTIME()' and `LTIME()' as well.
698
699    * Make many changes to `libU77' intrinsics to support existing code
700      more directly.
701
702      Such changes include allowing both subroutine and function forms
703      of many routines, changing `MCLOCK()' and `TIME()' to return
704      `INTEGER(KIND=1)' values, introducing `MCLOCK8()' and `TIME8()' to
705      return `INTEGER(KIND=2)' values, and placing functions that are
706      intended to perform side effects in a new intrinsic group,
707      `badu77'.
708
709    * Improve `libU77' so it is more portable.
710
711    * Add options `-fbadu77-intrinsics-delete',
712      `-fbadu77-intrinsics-hide', and so on.
713
714    * Fix crashes involving diagnosed or invalid code.
715
716    * `g77' and `gcc' now do a somewhat better job detecting and
717      diagnosing arrays that are too large to handle before these cause
718      diagnostics during the assembler or linker phase, a compiler
719      crash, or generation of incorrect code.
720
721    * Make some fixes to alias analysis code.
722
723    * Add support for `restrict' keyword in `gcc' front end.
724
725    * Support `gcc' version 2.7.2.3 (modified by `g77' into version
726      2.7.2.3.f.1), and remove support for prior versions of `gcc'.
727
728    * Incorporate GNAT's patches to the `gcc' back end into `g77''s, so
729      GNAT users do not need to apply GNAT's patches to build both GNAT
730      and `g77' from the same source tree.
731
732    * Modify `make' rules and related code so that generation of Info
733      documentation doesn't require compilation using `gcc'.  Now, any
734      ANSI C compiler should be adequate to produce the `g77'
735      documentation (in particular, the tables of intrinsics) from
736      scratch.
737
738    * Add `INT2' and `INT8' intrinsics.
739
740    * Add `CPU_TIME' intrinsic.
741
742    * Add `ALARM' intrinsic.
743
744    * `CTIME' intrinsic now accepts any `INTEGER' argument, not just
745      `INTEGER(KIND=2)'.
746
747    * Warn when explicit type declaration disagrees with the type of an
748      intrinsic invocation.
749
750    * Support `*f771' entry in `gcc' `specs' file.
751
752    * Fix typo in `make' rule `g77-cross', used only for cross-compiling.
753
754    * Fix `libf2c' build procedure to re-archive library if previous
755      attempt to archive was interrupted.
756
757    * Change `gcc' to unroll loops only during the last invocation (of
758      as many as two invocations) of loop optimization.
759
760    * Improve handling of `-fno-f2c' so that code that attempts to pass
761      an intrinsic as an actual argument, such as `CALL FOO(ABS)', is
762      rejected due to the fact that the run-time-library routine is,
763      effectively, compiled with `-ff2c' in effect.
764
765    * Fix `g77' driver to recognize `-fsyntax-only' as an option that
766      inhibits linking, just like `-c' or `-S', and to recognize and
767      properly handle the `-nostdlib', `-M', `-MM', `-nodefaultlibs',
768      and `-Xlinker' options.
769
770    * Upgrade to `libf2c' as of 1997-08-16.
771
772    * Modify `libf2c' to consistently and clearly diagnose recursive I/O
773      (at run time).
774
775    * `g77' driver now prints version information (such as produced by
776      `g77 -v') to `stderr' instead of `stdout'.
777
778    * The `.r' suffix now designates a Ratfor source file, to be
779      preprocessed via the `ratfor' command, available separately.
780
781    * Fix some aspects of how `gcc' determines what kind of system is
782      being configured and what kinds are supported.  For example, GNU
783      Linux/Alpha ELF systems now are directly supported.
784
785    * Improve diagnostics.
786
787    * Improve documentation and indexing.
788
789    * Include all pertinent files for `libf2c' that come from
790      `netlib.bell-labs.com'; give any such files that aren't quite
791      accurate in `g77''s version of `libf2c' the suffix `.netlib'.
792
793    * Reserve `INTEGER(KIND=0)' for future use.
794
795 In 0.5.20:
796 ==========
797
798    * The `-fno-typeless-boz' option is now the default.
799
800      This option specifies that non-decimal-radix constants using the
801      prefixed-radix form (such as `Z'1234'') are to be interpreted as
802      `INTEGER' constants.  Specify `-ftypeless-boz' to cause such
803      constants to be interpreted as typeless.
804
805      (Version 0.5.19 introduced `-fno-typeless-boz' and its inverse.)
806
807    * Options `-ff90-intrinsics-enable' and `-fvxt-intrinsics-enable'
808      now are the defaults.
809
810      Some programs might use names that clash with intrinsic names
811      defined (and now enabled) by these options or by the new `libU77'
812      intrinsics.  Users of such programs might need to compile them
813      differently (using, for example, `-ff90-intrinsics-disable') or,
814      better yet, insert appropriate `EXTERNAL' statements specifying
815      that these names are not intended to be names of intrinsics.
816
817    * The `ALWAYS_FLUSH' macro is no longer defined when building
818      `libf2c', which should result in improved I/O performance,
819      especially over NFS.
820
821      *Note:* If you have code that depends on the behavior of `libf2c'
822      when built with `ALWAYS_FLUSH' defined, you will have to modify
823      `libf2c' accordingly before building it from this and future
824      versions of `g77'.
825
826    * Dave Love's implementation of `libU77' has been added to the
827      version of `libf2c' distributed with and built as part of `g77'.
828      `g77' now knows about the routines in this library as intrinsics.
829
830    * New option `-fvxt' specifies that the source file is written in
831      VXT Fortran, instead of GNU Fortran.
832
833    * The `-fvxt-not-f90' option has been deleted, along with its
834      inverse, `-ff90-not-vxt'.
835
836      If you used one of these deleted options, you should re-read the
837      pertinent documentation to determine which options, if any, are
838      appropriate for compiling your code with this version of `g77'.
839
840    * The `-fugly' option now issues a warning, as it likely will be
841      removed in a future version.
842
843      (Enabling all the `-fugly-*' options is unlikely to be feasible,
844      or sensible, in the future, so users should learn to specify only
845      those `-fugly-*' options they really need for a particular source
846      file.)
847
848    * The `-fugly-assumed' option, introduced in version 0.5.19, has
849      been changed to better accommodate old and new code.
850
851    * Make a number of fixes to the `g77' front end and the `gcc' back
852      end to better support Alpha (AXP) machines.  This includes
853      providing at least one bug-fix to the `gcc' back end for Alphas.
854
855    * Related to supporting Alpha (AXP) machines, the `LOC()' intrinsic
856      and `%LOC()' construct now return values of integer type that is
857      the same width (holds the same number of bits) as the pointer type
858      on the machine.
859
860      On most machines, this won't make a difference, whereas on Alphas,
861      the type these constructs return is `INTEGER*8' instead of the
862      more common `INTEGER*4'.
863
864    * Emulate `COMPLEX' arithmetic in the `g77' front end, to avoid bugs
865      in `complex' support in the `gcc' back end.  New option
866      `-fno-emulate-complex' causes `g77' to revert the 0.5.19 behavior.
867
868    * Fix bug whereby `REAL A(1)', for example, caused a compiler crash
869      if `-fugly-assumed' was in effect and A was a local (automatic)
870      array.  That case is no longer affected by the new handling of
871      `-fugly-assumed'.
872
873    * Fix `g77' command driver so that `g77 -o foo.f' no longer deletes
874      `foo.f' before issuing other diagnostics, and so the `-x' option
875      is properly handled.
876
877    * Enable inlining of subroutines and functions by the `gcc' back end.
878      This works as it does for `gcc' itself--program units may be
879      inlined for invocations that follow them in the same program unit,
880      as long as the appropriate compile-time options are specified.
881
882    * Dummy arguments are no longer assumed to potentially alias
883      (overlap) other dummy arguments or `COMMON' areas when any of
884      these are defined (assigned to) by Fortran code.
885
886      This can result in faster and/or smaller programs when compiling
887      with optimization enabled, though on some systems this effect is
888      observed only when `-fforce-addr' also is specified.
889
890      New options `-falias-check', `-fargument-alias',
891      `-fargument-noalias', and `-fno-argument-noalias-global' control
892      the way `g77' handles potential aliasing.
893
894    * The `CONJG()' and `DCONJG()' intrinsics now are compiled in-line.
895
896    * The bug-fix for 0.5.19.1 has been re-done.  The `g77' compiler has
897      been changed back to assume `libf2c' has no aliasing problems in
898      its implementations of the `COMPLEX' (and `DOUBLE COMPLEX')
899      intrinsics.  The `libf2c' has been changed to have no such
900      problems.
901
902      As a result, 0.5.20 is expected to offer improved performance over
903      0.5.19.1, perhaps as good as 0.5.19 in most or all cases, due to
904      this change alone.
905
906      *Note:* This change requires version 0.5.20 of `libf2c', at least,
907      when linking code produced by any versions of `g77' other than
908      0.5.19.1.  Use `g77 -v' to determine the version numbers of the
909      `libF77', `libI77', and `libU77' components of the `libf2c'
910      library.  (If these version numbers are not printed--in
911      particular, if the linker complains about unresolved references to
912      names like `g77__fvers__'--that strongly suggests your
913      installation has an obsolete version of `libf2c'.)
914
915    * New option `-fugly-assign' specifies that the same memory
916      locations are to be used to hold the values assigned by both
917      statements `I = 3' and `ASSIGN 10 TO I', for example.  (Normally,
918      `g77' uses a separate memory location to hold assigned statement
919      labels.)
920
921    * `FORMAT' and `ENTRY' statements now are allowed to precede
922      `IMPLICIT NONE' statements.
923
924    * Produce diagnostic for unsupported `SELECT CASE' on `CHARACTER'
925      type, instead of crashing, at compile time.
926
927    * Fix crashes involving diagnosed or invalid code.
928
929    * Change approach to building `libf2c' archive (`libf2c.a') so that
930      members are added to it only when truly necessary, so the user
931      that installs an already-built `g77' doesn't need to have write
932      access to the build tree (whereas the user doing the build might
933      not have access to install new software on the system).
934
935    * Support `gcc' version 2.7.2.2 (modified by `g77' into version
936      2.7.2.2.f.2), and remove support for prior versions of `gcc'.
937
938    * Upgrade to `libf2c' as of 1997-02-08, and fix up some of the build
939      procedures.
940
941    * Improve general build procedures for `g77', fixing minor bugs
942      (such as deletion of any file named `f771' in the parent directory
943      of `gcc/').
944
945    * Enable full support of `INTEGER*8' available in `libf2c' and
946      `f2c.h' so that `f2c' users may make full use of its features via
947      the `g77' version of `f2c.h' and the `INTEGER*8' support routines
948      in the `g77' version of `libf2c'.
949
950    * Improve `g77' driver and `libf2c' so that `g77 -v' yields version
951      information on the library.
952
953    * The `SNGL' and `FLOAT' intrinsics now are specific intrinsics,
954      instead of synonyms for the generic intrinsic `REAL'.
955
956    * New intrinsics have been added.  These are `REALPART', `IMAGPART',
957      `COMPLEX', `LONG', and `SHORT'.
958
959    * A new group of intrinsics, `gnu', has been added to contain the
960      new `REALPART', `IMAGPART', and `COMPLEX' intrinsics.  An old
961      group, `dcp', has been removed.
962
963    * Complain about industry-wide ambiguous references `REAL(EXPR)' and
964      `AIMAG(EXPR)', where EXPR is `DOUBLE COMPLEX' (or any complex type
965      other than `COMPLEX'), unless `-ff90' option specifies Fortran 90
966      interpretation or new `-fugly-complex' option, in conjunction with
967      `-fnot-f90', specifies `f2c' interpretation.
968
969    * Make improvements to diagnostics.
970
971    * Speed up compiler a bit.
972
973    * Improvements to documentation and indexing, including a new
974      chapter containing information on one, later more, diagnostics
975      that users are directed to pull up automatically via a message in
976      the diagnostic itself.
977
978      (Hence the menu item `M' for the node `Diagnostics' in the
979      top-level menu of the Info documentation.)
980
981 In 0.5.19.1:
982 ============
983
984    * Code-generation bugs afflicting operations on complex data have
985      been fixed.
986
987      These bugs occurred when assigning the result of an operation to a
988      complex variable (or array element) that also served as an input
989      to that operation.
990
991      The operations affected by this bug were: `CONJG()', `DCONJG()',
992      `CCOS()', `CDCOS()', `CLOG()', `CDLOG()', `CSIN()', `CDSIN()',
993      `CSQRT()', `CDSQRT()', complex division, and raising a `DOUBLE
994      COMPLEX' operand to an `INTEGER' power.  (The related generic and
995      `Z'-prefixed intrinsics, such as `ZSIN()', also were affected.)
996
997      For example, `C = CSQRT(C)', `Z = Z/C', and `Z = Z**I' (where `C'
998      is `COMPLEX' and `Z' is `DOUBLE COMPLEX') have been fixed.
999
1000 In 0.5.19:
1001 ==========
1002
1003    * Fix `FORMAT' statement parsing so negative values for specifiers
1004      such as `P' (e.g. `FORMAT(-1PF8.1)') are correctly processed as
1005      negative.
1006
1007    * Fix `SIGNAL' intrinsic so it once again accepts a procedure as its
1008      second argument.
1009
1010    * A temporary kludge option provides bare-bones information on
1011      `COMMON' and `EQUIVALENCE' members at debug time.
1012
1013    * New `-fonetrip' option specifies FORTRAN-66-style one-trip `DO'
1014      loops.
1015
1016    * New `-fno-silent' option causes names of program units to be
1017      printed as they are compiled, in a fashion similar to UNIX `f77'
1018      and `f2c'.
1019
1020    * New `-fugly-assumed' option specifies that arrays dimensioned via
1021      `DIMENSION X(1)', for example, are to be treated as assumed-size.
1022
1023    * New `-fno-typeless-boz' option specifies that non-decimal-radix
1024      constants using the prefixed-radix form (such as `Z'1234'') are to
1025      be interpreted as `INTEGER' constants.
1026
1027    * New `-ff66' option is a "shorthand" option that specifies
1028      behaviors considered appropriate for FORTRAN 66 programs.
1029
1030    * New `-ff77' option is a "shorthand" option that specifies
1031      behaviors considered appropriate for UNIX `f77' programs.
1032
1033    * New `-fugly-comma' and `-fugly-logint' options provided to perform
1034      some of what `-fugly' used to do.  `-fugly' and `-fno-ugly' are
1035      now "shorthand" options, in that they do nothing more than enable
1036      (or disable) other `-fugly-*' options.
1037
1038    * Fix parsing of assignment statements involving targets that are
1039      substrings of elements of `CHARACTER' arrays having names such as
1040      `READ', `WRITE', `GOTO', and `REALFUNCTIONFOO'.
1041
1042    * Fix crashes involving diagnosed code.
1043
1044    * Fix handling of local `EQUIVALENCE' areas so certain cases of
1045      valid Fortran programs are not misdiagnosed as improperly
1046      extending the area backwards.
1047
1048    * Support `gcc' version 2.7.2.1.
1049
1050    * Upgrade to `libf2c' as of 1996-09-26, and fix up some of the build
1051      procedures.
1052
1053    * Change code generation for list-directed I/O so it allows for new
1054      versions of `libf2c' that might return non-zero status codes for
1055      some operations previously assumed to always return zero.
1056
1057      This change not only affects how `IOSTAT=' variables are set by
1058      list-directed I/O, it also affects whether `END=' and `ERR='
1059      labels are reached by these operations.
1060
1061    * Add intrinsic support for new `FTELL' and `FSEEK' procedures in
1062      `libf2c'.
1063
1064    * Modify `fseek_()' in `libf2c' to be more portable (though, in
1065      practice, there might be no systems where this matters) and to
1066      catch invalid `whence' arguments.
1067
1068    * Some useless warnings from the `-Wunused' option have been
1069      eliminated.
1070
1071    * Fix a problem building the `f771' executable on AIX systems by
1072      linking with the `-bbigtoc' option.
1073
1074    * Abort configuration if `gcc' has not been patched using the patch
1075      file provided in the `gcc/f/gbe/' subdirectory.
1076
1077    * Add options `--help' and `--version' to the `g77' command, to
1078      conform to GNU coding guidelines.  Also add printing of `g77'
1079      version number when the `--verbose' (`-v') option is used.
1080
1081    * Change internally generated name for local `EQUIVALENCE' areas to
1082      one based on the alphabetically sorted first name in the list of
1083      names for entities placed at the beginning of the areas.
1084
1085    * Improvements to documentation and indexing.
1086
1087 In 0.5.18:
1088 ==========
1089
1090    * Add some rudimentary support for `INTEGER*1', `INTEGER*2',
1091      `INTEGER*8', and their `LOGICAL' equivalents.  (This support works
1092      on most, maybe all, `gcc' targets.)
1093
1094      Thanks to Scott Snyder (<snyder@d0sgif.fnal.gov>) for providing
1095      the patch for this!
1096
1097      Among the missing elements from the support for these features are
1098      full intrinsic support and constants.
1099
1100    * Add some rudimentary support for the `BYTE' and `WORD'
1101      type-declaration statements.  `BYTE' corresponds to `INTEGER*1',
1102      while `WORD' corresponds to `INTEGER*2'.
1103
1104      Thanks to Scott Snyder (<snyder@d0sgif.fnal.gov>) for providing
1105      the patch for this!
1106
1107    * The compiler code handling intrinsics has been largely rewritten
1108      to accommodate the new types.  No new intrinsics or arguments for
1109      existing intrinsics have been added, so there is, at this point,
1110      no intrinsic to convert to `INTEGER*8', for example.
1111
1112    * Support automatic arrays in procedures.
1113
1114    * Reduce space/time requirements for handling large *sparsely*
1115      initialized aggregate arrays.  This improvement applies to only a
1116      subset of the general problem to be addressed in 0.6.
1117
1118    * Treat initial values of zero as if they weren't specified (in DATA
1119      and type-declaration statements).  The initial values will be set
1120      to zero anyway, but the amount of compile time processing them
1121      will be reduced, in some cases significantly (though, again, this
1122      is only a subset of the general problem to be addressed in 0.6).
1123
1124      A new option, `-fzeros', is introduced to enable the traditional
1125      treatment of zeros as any other value.
1126
1127    * With `-ff90' in force, `g77' incorrectly interpreted `REAL(Z)' as
1128      returning a `REAL' result, instead of as a `DOUBLE PRECISION'
1129      result.  (Here, `Z' is `DOUBLE COMPLEX'.)
1130
1131      With `-fno-f90' in force, the interpretation remains unchanged,
1132      since this appears to be how at least some F77 code using the
1133      `DOUBLE COMPLEX' extension expected it to work.
1134
1135      Essentially, `REAL(Z)' in F90 is the same as `DBLE(Z)', while in
1136      extended F77, it appears to be the same as `REAL(REAL(Z))'.
1137
1138    * An expression involving exponentiation, where both operands were
1139      type `INTEGER' and the right-hand operand was negative, was
1140      erroneously evaluated.
1141
1142    * Fix bugs involving `DATA' implied-`DO' constructs (these involved
1143      an errant diagnostic and a crash, both on good code, one involving
1144      subsequent statement-function definition).
1145
1146    * Close `INCLUDE' files after processing them, so compiling source
1147      files with lots of `INCLUDE' statements does not result in being
1148      unable to open `INCLUDE' files after all the available file
1149      descriptors are used up.
1150
1151    * Speed up compiling, especially of larger programs, and perhaps
1152      slightly reduce memory utilization while compiling (this is *not*
1153      the improvement planned for 0.6 involving large aggregate
1154      areas)--these improvements result from simply turning off some
1155      low-level code to do self-checking that hasn't been triggered in a
1156      long time.
1157
1158    * Introduce three new options that implement optimizations in the
1159      `gcc' back end (GBE).  These options are `-fmove-all-movables',
1160      `-freduce-all-givs', and `-frerun-loop-opt', which are enabled, by
1161      default, for Fortran compilations.  These optimizations are
1162      intended to help toon Fortran programs.
1163
1164    * Patch the GBE to do a better job optimizing certain kinds of
1165      references to array elements.
1166
1167    * Due to patches to the GBE, the version number of `gcc' also is
1168      patched to make it easier to manage installations, especially
1169      useful if it turns out a `g77' change to the GBE has a bug.
1170
1171      The `g77'-modified version number is the `gcc' version number with
1172      the string `.f.N' appended, where `f' identifies the version as
1173      enhanced for Fortran, and N is `1' for the first Fortran patch for
1174      that version of `gcc', `2' for the second, and so on.
1175
1176      So, this introduces version 2.7.2.f.1 of `gcc'.
1177
1178    * Make several improvements and fixes to diagnostics, including the
1179      removal of two that were inappropriate or inadequate.
1180
1181    * Warning about two successive arithmetic operators, produced by
1182      `-Wsurprising', now produced *only* when both operators are,
1183      indeed, arithmetic (not relational/boolean).
1184
1185    * `-Wsurprising' now warns about the remaining cases of using
1186      non-integral variables for implied-`DO' loops, instead of these
1187      being rejected unless `-fpedantic' or `-fugly' specified.
1188
1189    * Allow `SAVE' of a local variable or array, even after it has been
1190      given an initial value via `DATA', for example.
1191
1192    * Introduce an Info version of `g77' documentation, which supercedes
1193      `gcc/f/CREDITS', `gcc/f/DOC', and `gcc/f/PROJECTS'.  These files
1194      will be removed in a future release.  The files `gcc/f/BUGS',
1195      `gcc/f/INSTALL', and `gcc/f/NEWS' now are automatically built from
1196      the texinfo source when distributions are made.
1197
1198      This effort was inspired by a first pass at translating
1199      `g77-0.5.16/f/DOC' that was contributed to Craig by David Ronis
1200      (<ronis@onsager.chem.mcgill.ca>).
1201
1202    * New `-fno-second-underscore' option to specify that, when
1203      `-funderscoring' is in effect, a second underscore is not to be
1204      appended to Fortran names already containing an underscore.
1205
1206    * Change the way iterative `DO' loops work to follow the F90
1207      standard.  In particular, calculation of the iteration count is
1208      still done by converting the start, end, and increment parameters
1209      to the type of the `DO' variable, but the result of the
1210      calculation is always converted to the default `INTEGER' type.
1211
1212      (This should have no effect on existing code compiled by `g77',
1213      but code written to assume that use of a *wider* type for the `DO'
1214      variable will result in an iteration count being fully calculated
1215      using that wider type (wider than default `INTEGER') must be
1216      rewritten.)
1217
1218    * Support `gcc' version 2.7.2.
1219
1220    * Upgrade to `libf2c' as of 1996-03-23, and fix up some of the build
1221      procedures.
1222
1223      Note that the email addresses related to `f2c' have changed--the
1224      distribution site now is named `netlib.bell-labs.com', and the
1225      maintainer's new address is <dmg@bell-labs.com>.
1226
1227 In 0.5.17:
1228 ==========
1229
1230    * *Fix serious bug* in `g77 -v' command that can cause removal of a
1231      system's `/dev/null' special file if run by user `root'.
1232
1233      *All users* of version 0.5.16 should ensure that they have not
1234      removed `/dev/null' or replaced it with an ordinary file (e.g. by
1235      comparing the output of `ls -l /dev/null' with `ls -l /dev/zero'.
1236      If the output isn't basically the same, contact your system
1237      administrator about restoring `/dev/null' to its proper status).
1238
1239      This bug is particularly insidious because removing `/dev/null' as
1240      a special file can go undetected for quite a while, aside from
1241      various applications and programs exhibiting sudden, strange
1242      behaviors.
1243
1244      I sincerely apologize for not realizing the implications of the
1245      fact that when `g77 -v' runs the `ld' command with `-o /dev/null'
1246      that `ld' tries to *remove* the executable it is supposed to build
1247      (especially if it reports unresolved references, which it should
1248      in this case)!
1249
1250    * Fix crash on `CHARACTER*(*) FOO' in a main or block data program
1251      unit.
1252
1253    * Fix crash that can occur when diagnostics given outside of any
1254      program unit (such as when input file contains `@foo').
1255
1256    * Fix crashes, infinite loops (hangs), and such involving diagnosed
1257      code.
1258
1259    * Fix `ASSIGN''ed variables so they can be `SAVE''d or dummy
1260      arguments, and issue clearer error message in cases where target
1261      of `ASSIGN' or `ASSIGN'ed `GOTO'/`FORMAT' is too small (which
1262      should never happen).
1263
1264    * Make `libf2c' build procedures work on more systems again by
1265      eliminating unnecessary invocations of `ld -r -x' and `mv'.
1266
1267    * Fix omission of `-funix-intrinsics-...' options in list of
1268      permitted options to compiler.
1269
1270    * Fix failure to always diagnose missing type declaration for
1271      `IMPLICIT NONE'.
1272
1273    * Fix compile-time performance problem (which could sometimes crash
1274      the compiler, cause a hang, or whatever, due to a bug in the back
1275      end) involving exponentiation with a large `INTEGER' constant for
1276      the right-hand operator (e.g. `I**32767').
1277
1278    * Fix build procedures so cross-compiling `g77' (the `fini' utility
1279      in particular) is properly built using the host compiler.
1280
1281    * Add new `-Wsurprising' option to warn about constructs that are
1282      interpreted by the Fortran standard (and `g77') in ways that are
1283      surprising to many programmers.
1284
1285    * Add `ERF()' and `ERFC()' as generic intrinsics mapping to existing
1286      `ERF'/`DERF' and `ERFC'/`DERFC' specific intrinsics.
1287
1288      *Note:* You should specify `INTRINSIC ERF,ERFC' in any code where
1289      you might use these as generic intrinsics, to improve likelihood
1290      of diagnostics (instead of subtle run-time bugs) when using a
1291      compiler that doesn't support these as intrinsics (e.g. `f2c').
1292
1293    * Remove from `-fno-pedantic' the diagnostic about `DO' with
1294      non-`INTEGER' index variable; issue that under `-Wsurprising'
1295      instead.
1296
1297    * Clarify some diagnostics that say things like "ignored" when that's
1298      misleading.
1299
1300    * Clarify diagnostic on use of `.EQ.'/`.NE.' on `LOGICAL' operands.
1301
1302    * Minor improvements to code generation for various operations on
1303      `LOGICAL' operands.
1304
1305    * Minor improvement to code generation for some `DO' loops on some
1306      machines.
1307
1308    * Support `gcc' version 2.7.1.
1309
1310    * Upgrade to `libf2c' as of 1995-11-15.
1311
1312 In 0.5.16:
1313 ==========
1314
1315    * Fix a code-generation bug involving complicated `EQUIVALENCE'
1316      statements not involving `COMMON'.
1317
1318    * Fix code-generation bugs involving invoking "gratis" library
1319      procedures in `libf2c' from code compiled with `-fno-f2c' by
1320      making these procedures known to `g77' as intrinsics (not affected
1321      by -fno-f2c).  This is known to fix code invoking `ERF()',
1322      `ERFC()', `DERF()', and `DERFC()'.
1323
1324    * Update `libf2c' to include netlib patches through 1995-08-16, and
1325      `#define' `WANT_LEAD_0' to 1 to make `g77'-compiled code more
1326      consistent with other Fortran implementations by outputting
1327      leading zeros in formatted and list-directed output.
1328
1329    * Fix a code-generation bug involving adjustable dummy arrays with
1330      high bounds whose primaries are changed during procedure
1331      execution, and which might well improve code-generation
1332      performance for such arrays compared to `f2c' plus `gcc' (but
1333      apparently only when using `gcc-2.7.0' or later).
1334
1335    * Fix a code-generation bug involving invocation of `COMPLEX' and
1336      `DOUBLE COMPLEX' `FUNCTION's and doing `COMPLEX' and `DOUBLE
1337      COMPLEX' divides, when the result of the invocation or divide is
1338      assigned directly to a variable that overlaps one or more of the
1339      arguments to the invocation or divide.
1340
1341    * Fix crash by not generating new optimal code for `X**I' if `I' is
1342      nonconstant and the expression is used to dimension a dummy array,
1343      since the `gcc' back end does not support the necessary mechanics
1344      (and the `gcc' front end rejects the equivalent construct, as it
1345      turns out).
1346
1347    * Fix crash on expressions like `COMPLEX**INTEGER'.
1348
1349    * Fix crash on expressions like `(1D0,2D0)**2', i.e. raising a
1350      `DOUBLE COMPLEX' constant to an `INTEGER' constant power.
1351
1352    * Fix crashes and such involving diagnosed code.
1353
1354    * Diagnose, instead of crashing on, statement function definitions
1355      having duplicate dummy argument names.
1356
1357    * Fix bug causing rejection of good code involving statement function
1358      definitions.
1359
1360    * Fix bug resulting in debugger not knowing size of local equivalence
1361      area when any member of area has initial value (via `DATA', for
1362      example).
1363
1364    * Fix installation bug that prevented installation of `g77' driver.
1365      Provide for easy selection of whether to install copy of `g77' as
1366      `f77' to replace the broken code.
1367
1368    * Fix `gcc' driver (affects `g77' thereby) to not gratuitously
1369      invoke the `f771' program (e.g. when `-E' is specified).
1370
1371    * Fix diagnostic to point to correct source line when it immediately
1372      follows an `INCLUDE' statement.
1373
1374    * Support more compiler options in `gcc'/`g77' when compiling
1375      Fortran files.  These options include `-p', `-pg', `-aux-info',
1376      `-P', correct setting of version-number macros for preprocessing,
1377      full recognition of `-O0', and automatic insertion of
1378      configuration-specific linker specs.
1379
1380    * Add new intrinsics that interface to existing routines in `libf2c':
1381      `ABORT', `DERF', `DERFC', `ERF', `ERFC', `EXIT', `FLUSH',
1382      `GETARG', `GETENV', `IARGC', `SIGNAL', and `SYSTEM'.  Note that
1383      `ABORT', `EXIT', `FLUSH', `SIGNAL', and `SYSTEM' are intrinsic
1384      subroutines, not functions (since they have side effects), so to
1385      get the return values from `SIGNAL' and `SYSTEM', append a final
1386      argument specifying an `INTEGER' variable or array element (e.g.
1387      `CALL SYSTEM('rm foo',ISTAT)').
1388
1389    * Add new intrinsic group named `unix' to contain the new intrinsics,
1390      and by default enable this new group.
1391
1392    * Move `LOC()' intrinsic out of the `vxt' group to the new `unix'
1393      group.
1394
1395    * Improve `g77' so that `g77 -v' by itself (or with certain other
1396      options, including `-B', `-b', `-i', `-nostdlib', and `-V')
1397      reports lots more useful version info, and so that long-form
1398      options `gcc' accepts are understood by `g77' as well (even in
1399      truncated, unambiguous forms).
1400
1401    * Add new `g77' option `--driver=name' to specify driver when
1402      default, `gcc', isn't appropriate.
1403
1404    * Add support for `#' directives (as output by the preprocessor) in
1405      the compiler, and enable generation of those directives by the
1406      preprocessor (when compiling `.F' files) so diagnostics and
1407      debugging info are more useful to users of the preprocessor.
1408
1409    * Produce better diagnostics, more like `gcc', with info such as `In
1410      function `foo':' and `In file included from...:'.
1411
1412    * Support `gcc''s `-fident' and `-fno-ident' options.
1413
1414    * When `-Wunused' in effect, don't warn about local variables used as
1415      statement-function dummy arguments or `DATA' implied-`DO' iteration
1416      variables, even though, strictly speaking, these are not uses of
1417      the variables themselves.
1418
1419    * When `-W -Wunused' in effect, don't warn about unused dummy
1420      arguments at all, since there's no way to turn this off for
1421      individual cases (`g77' might someday start warning about
1422      these)--applies to `gcc' versions 2.7.0 and later, since earlier
1423      versions didn't warn about unused dummy arguments.
1424
1425    * New option `-fno-underscoring' that inhibits transformation of
1426      names (by appending one or two underscores) so users may experiment
1427      with implications of such an environment.
1428
1429    * Minor improvement to `gcc/f/info' module to make it easier to build
1430      `g77' using the native (non-`gcc') compiler on certain machines
1431      (but definitely not all machines nor all non-`gcc' compilers).
1432      Please do not report bugs showing problems compilers have with
1433      macros defined in `gcc/f/target.h' and used in places like
1434      `gcc/f/expr.c'.
1435
1436    * Add warning to be printed for each invocation of the compiler if
1437      the target machine `INTEGER', `REAL', or `LOGICAL' size is not 32
1438      bits, since `g77' is known to not work well for such cases (to be
1439      fixed in Version 0.6--*note Actual Bugs We Haven't Fixed Yet:
1440      Actual Bugs.).
1441
1442    * Lots of new documentation (though work is still needed to put it
1443      into canonical GNU format).
1444
1445    * Build `libf2c' with `-g0', not `-g2', in effect (by default), to
1446      produce smaller library without lots of debugging clutter.
1447
1448 In 0.5.15:
1449 ==========
1450
1451    * Fix bad code generation involving `X**I' and temporary, internal
1452      variables generated by `g77' and the back end (such as for `DO'
1453      loops).
1454
1455    * Fix crash given `CHARACTER A;DATA A/.TRUE./'.
1456
1457    * Replace crash with diagnostic given `CHARACTER A;DATA A/1.0/'.
1458
1459    * Fix crash or other erratic behavior when null character constant
1460      (`''') is encountered.
1461
1462    * Fix crash or other erratic behavior involving diagnosed code.
1463
1464    * Fix code generation for external functions returning type `REAL'
1465      when the `-ff2c' option is in force (which it is by default) so
1466      that `f2c' compatibility is indeed provided.
1467
1468    * Disallow `COMMON I(10)' if `I' has previously been specified with
1469      an array declarator.
1470
1471    * New `-ffixed-line-length-N' option, where N is the maximum length
1472      of a typical fixed-form line, defaulting to 72 columns, such that
1473      characters beyond column N are ignored, or N is `none', meaning no
1474      characters are ignored.  does not affect lines with `&' in column
1475      1, which are always processed as if `-ffixed-line-length-none' was
1476      in effect.
1477
1478    * No longer generate better code for some kinds of array references,
1479      as `gcc' back end is to be fixed to do this even better, and it
1480      turned out to slow down some code in some cases after all.
1481
1482    * In `COMMON' and `EQUIVALENCE' areas with any members given initial
1483      values (e.g. via `DATA'), uninitialized members now always
1484      initialized to binary zeros (though this is not required by the
1485      standard, and might not be done in future versions of `g77').
1486      Previously, in some `COMMON'/`EQUIVALENCE' areas (essentially
1487      those with members of more than one type), the uninitialized
1488      members were initialized to spaces, to cater to `CHARACTER' types,
1489      but it seems no existing code expects that, while much existing
1490      code expects binary zeros.
1491
1492 In 0.5.14:
1493 ==========
1494
1495    * Don't emit bad code when low bound of adjustable array is
1496      nonconstant and thus might vary as an expression at run time.
1497
1498    * Emit correct code for calculation of number of trips in `DO' loops
1499      for cases where the loop should not execute at all.  (This bug
1500      affected cases where the difference between the begin and end
1501      values was less than the step count, though probably not for
1502      floating-point cases.)
1503
1504    * Fix crash when extra parentheses surround item in `DATA'
1505      implied-`DO' list.
1506
1507    * Fix crash over minor internal inconsistencies in handling
1508      diagnostics, just substitute dummy strings where necessary.
1509
1510    * Fix crash on some systems when compiling call to `MVBITS()'
1511      intrinsic.
1512
1513    * Fix crash on array assignment `TYPEDDD(...)=...', where DDD is a
1514      string of one or more digits.
1515
1516    * Fix crash on `DCMPLX()' with a single `INTEGER' argument.
1517
1518    * Fix various crashes involving code with diagnosed errors.
1519
1520    * Support `-I' option for `INCLUDE' statement, plus `gcc''s
1521      `header.gcc' facility for handling systems like MS-DOS.
1522
1523    * Allow `INCLUDE' statement to be continued across multiple lines,
1524      even allow it to coexist with other statements on the same line.
1525
1526    * Incorporate Bellcore fixes to `libf2c' through 1995-03-15--this
1527      fixes a bug involving infinite loops reading EOF with empty
1528      list-directed I/O list.
1529
1530    * Remove all the `g77'-specific auto-configuration scripts, code,
1531      and so on, except for temporary substitutes for bsearch() and
1532      strtoul(), as too many configure/build problems were reported in
1533      these areas.  People will have to fix their systems' problems
1534      themselves, or at least somewhere other than `g77', which expects
1535      a working ANSI C environment (and, for now, a GNU C compiler to
1536      compile `g77' itself).
1537
1538    * Complain if initialized common redeclared as larger in subsequent
1539      program unit.
1540
1541    * Warn if blank common initialized, since its size can vary and hence
1542      related warnings that might be helpful won't be seen.
1543
1544    * New `-fbackslash' option, on by default, that causes `\' within
1545      `CHARACTER' and Hollerith constants to be interpreted a la GNU C.
1546      Note that this behavior is somewhat different from `f2c''s, which
1547      supports only a limited subset of backslash (escape) sequences.
1548
1549    * Make `-fugly-args' the default.
1550
1551    * New `-fugly-init' option, on by default, that allows
1552      typeless/Hollerith to be specified as initial values for variables
1553      or named constants (`PARAMETER'), and also allows
1554      character<->numeric conversion in those contexts--turn off via
1555      `-fno-ugly-init'.
1556
1557    * New `-finit-local-zero' option to initialize local variables to
1558      binary zeros.  This does not affect whether they are `SAVE'd, i.e.
1559      made automatic or static.
1560
1561    * New `-Wimplicit' option to warn about implicitly typed variables,
1562      arrays, and functions.  (Basically causes all program units to
1563      default to `IMPLICIT NONE'.)
1564
1565    * `-Wall' now implies `-Wuninitialized' as with `gcc' (i.e. unless
1566      `-O' not specified, since `-Wuninitialized' requires `-O'), and
1567      implies `-Wunused' as well.
1568
1569    * `-Wunused' no longer gives spurious messages for unused `EXTERNAL'
1570      names (since they are assumed to refer to block data program
1571      units, to make use of libraries more reliable).
1572
1573    * Support `%LOC()' and `LOC()' of character arguments.
1574
1575    * Support null (zero-length) character constants and expressions.
1576
1577    * Support `f2c''s `IMAG()' generic intrinsic.
1578
1579    * Support `ICHAR()', `IACHAR()', and `LEN()' of character
1580      expressions that are valid in assignments but not normally as
1581      actual arguments.
1582
1583    * Support `f2c'-style `&' in column 1 to mean continuation line.
1584
1585    * Allow `NAMELIST', `EXTERNAL', `INTRINSIC', and `VOLATILE' in
1586      `BLOCK DATA', even though these are not allowed by the standard.
1587
1588    * Allow `RETURN' in main program unit.
1589
1590    * Changes to Hollerith-constant support to obey Appendix C of the
1591      standard:
1592
1593         - Now padded on the right with zeros, not spaces.
1594
1595         - Hollerith "format specifications" in the form of arrays of
1596           non-character allowed.
1597
1598         - Warnings issued when non-space truncation occurs when
1599           converting to another type.
1600
1601         - When specified as actual argument, now passed by reference to
1602           `INTEGER' (padded on right with spaces if constant too small,
1603           otherwise fully intact if constant wider the `INTEGER' type)
1604           instead of by value.
1605
1606      *Warning:* `f2c' differs on the interpretation of `CALL FOO(1HX)',
1607      which it treats exactly the same as `CALL FOO('X')', but which the
1608      standard and `g77' treat as `CALL FOO(%REF('X   '))' (padded with
1609      as many spaces as necessary to widen to `INTEGER'), essentially.
1610
1611    * Changes and fixes to typeless-constant support:
1612
1613         - Now treated as a typeless double-length `INTEGER' value.
1614
1615         - Warnings issued when overflow occurs.
1616
1617         - Padded on the left with zeros when converting to a larger
1618           type.
1619
1620         - Should be properly aligned and ordered on the target machine
1621           for whatever type it is turned into.
1622
1623         - When specified as actual argument, now passed as reference to
1624           a default `INTEGER' constant.
1625
1626    * `%DESCR()' of a non-`CHARACTER' expression now passes a pointer to
1627      the expression plus a length for the expression just as if it were
1628      a `CHARACTER' expression.  For example, `CALL FOO(%DESCR(D))',
1629      where `D' is `REAL*8', is the same as `CALL FOO(D,%VAL(8)))'.
1630
1631    * Name of multi-entrypoint master function changed to incorporate
1632      the name of the primary entry point instead of a decimal value, so
1633      the name of the master function for `SUBROUTINE X' with alternate
1634      entry points is now `__g77_masterfun_x'.
1635
1636    * Remove redundant message about zero-step-count `DO' loops.
1637
1638    * Clean up diagnostic messages, shortening many of them.
1639
1640    * Fix typo in `g77' man page.
1641
1642    * Clarify implications of constant-handling bugs in `f/BUGS'.
1643
1644    * Generate better code for `**' operator with a right-hand operand of
1645      type `INTEGER'.
1646
1647    * Generate better code for `SQRT()' and `DSQRT()', also when
1648      `-ffast-math' specified, enable better code generation for `SIN()'
1649      and `COS()'.
1650
1651    * Generate better code for some kinds of array references.
1652
1653    * Speed up lexing somewhat (this makes the compilation phase
1654      noticeably faster).
1655