OSDN Git Service

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