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.
9 Changes made to recent versions of GNU Fortran are listed below,
10 with the most recent version first.
12 The changes are generally listed in order:
14 1. Code-generation and run-time-library bug-fixes
16 2. Compiler and run-time-library crashes involving valid code that
21 4. Fixes and enhancements to existing features
25 6. Internal improvements
29 This order is not strict--for example, some items involve a
30 combination of these elements.
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.
39 * `g77' no longer crashes when compiling code containing
40 specification statements such as `INTEGER(KIND=7) PTR'.
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.
47 Previously, `g77' treated these expressions as denoting special
48 "pointer" arguments for the purposes of filewide analysis.
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').
55 * `g77' emits more debugging information when `-g' is used.
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.
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'.
65 * The F90 `DATE_AND_TIME' intrinsic now is supported.
67 * The F90 `SYSTEM_CLOCK' intrinsic allows the optional arguments
68 (except for the `Count' argument) to be omitted.
70 * Upgrade to `libf2c' as of 1998-06-18.
72 * Improve documentation and indexing.
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
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.
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:
90 - Support for `__restrict__' keyword, the options
91 `-fargument-alias', `-fargument-noalias', and
92 `-fargument-noalias-global', and the corresponding
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.)
100 - Support for the GNU compiler options `-fmove-all-movables',
101 `-freduce-all-givs', and `-frerun-loop-opt'.
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'
108 - Support for the `-W' option warning about integer division by
111 - The Intel x86-specific option `-malign-double' applying to
112 stack-allocated data as well as statically-allocate data.
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
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.
122 * Support `gcc' version 2.8, and remove support for prior versions
125 * Remove support for the `--driver' option, as `g77' now does all
126 the driving, just like `gcc'.
128 * `CASE DEFAULT' no longer crashes `g77'.
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'.
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.
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
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.
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.
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
165 * The `-Wunused' option no longer issues a spurious warning about
166 the "master" procedure generated by `g77' for procedures
167 containing `ENTRY' statements.
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.
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
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.
184 * `install-info' now used to update the directory of Info
185 documentation to contain an entry for `g77' (during installation).
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.
193 * Improve documentation and indexing.
195 * Upgrade to `libf2c' as of 1998-04-20.
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.
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
209 * Fix a code-generation bug that afflicted Intel x86 targets when
210 `-O2' was specified compiling, for example, an old version of the
213 The x87 coprocessor stack was being mismanaged in cases involving
214 assigned `GOTO' and `ASSIGN'.
216 * Fix `DTime' intrinsic so as not to truncate results to integer
217 values (on some systems).
219 * Fix `SIGNAL' intrinsic so it offers portable support for 64-bit
220 systems (such as Digital Alphas running GNU/Linux).
222 * Fix run-time crash involving `NAMELIST' on 64-bit machines such as
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').
230 * Fix `g77' crash triggered by `CASE' statement with an omitted
231 lower or upper bound.
233 * Fix `g77' crash compiling references to `CPU_Time' intrinsic.
235 * Fix `g77' crash (or apparently infinite run-time) when compiling
236 certain complicated expressions involving `COMPLEX' arithmetic
237 (especially multiplication).
239 * Fix `g77' crash on statements such as `PRINT *,
240 (REAL(Z(I)),I=1,2)', where `Z' is `DOUBLE COMPLEX'.
244 * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
245 `INTEGER' expression.
247 * Fix `g77' `-g' option so procedures that use `ENTRY' can be
248 stepped through, line by line, in `gdb'.
250 * Fix a profiling-related bug in `gcc' back end for Intel x86
253 * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
255 * Allow any numeric argument to intrinsics `Int2' and `Int8'.
257 * Use `tempnam', if available, to open scratch files (as in
258 `OPEN(STATUS='SCRATCH')' so that the `TMPDIR' environment variable,
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'.
265 * Fix `-fpedantic' to not reject procedure invocations such as
266 `I=J()' and `CALL FOO()'.
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,,)'.
272 * Fix compiler so it accepts `-fgnu-intrinsics-*' and
273 `-fbadu77-intrinsics-*' options.
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.
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
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'.
290 * Fix various crashes involving code with diagnosed errors.
292 * Fix cross-compilation bug when configuring `libf2c'.
294 * Improve diagnostics.
296 * Improve documentation and indexing.
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).
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).
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).
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).
321 * Fix a compiler crash that occurred in some cases of procedure
322 inlining. (Such cases became more frequent in 0.5.20.)
324 * Fix a compiler crash resulting from using `DATA' or similar to
325 initialize a `COMPLEX' variable or array to zero.
327 * Fix compiler crashes involving use of `AND', `OR', or `XOR'
330 * Fix compiler bug triggered when using a `COMMON' or `EQUIVALENCE'
331 variable as the target of an `ASSIGN' or assigned-`GOTO' statement.
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.
338 * Place automatic arrays on the stack, even if `SAVE' or the
339 `-fno-automatic' option is in effect. This avoids a compiler
342 * The `-malign-double' option now reliably aligns `DOUBLE PRECISION'
343 optimally on Pentium and Pentium Pro architectures (586 and 686 in
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.
352 The default is to issue such warnings, which are new as of this
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.
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
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.
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.
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.
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.
382 * Fix a couple of profiling-related bugs in `gcc' back end.
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.
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.)
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
398 * Fix `CHMOD' intrinsic to work with file names that have embedded
399 blanks, commas, and so on.
401 * Fix `SIGNAL' intrinsic so it accepts an optional third `Status'
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.
408 * Make many changes to `libU77' intrinsics to support existing code
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,
418 * Improve `libU77' so it is more portable.
420 * Add options `-fbadu77-intrinsics-delete',
421 `-fbadu77-intrinsics-hide', and so on.
423 * Fix crashes involving diagnosed or invalid code.
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.
430 * Make some fixes to alias analysis code.
432 * Add support for `restrict' keyword in `gcc' front end.
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'.
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.
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
447 * Add `INT2' and `INT8' intrinsics.
449 * Add `CPU_TIME' intrinsic.
451 * Add `ALARM' intrinsic.
453 * `CTIME' intrinsic now accepts any `INTEGER' argument, not just
456 * Warn when explicit type declaration disagrees with the type of an
457 intrinsic invocation.
459 * Support `*f771' entry in `gcc' `specs' file.
461 * Fix typo in `make' rule `g77-cross', used only for cross-compiling.
463 * Fix `libf2c' build procedure to re-archive library if previous
464 attempt to archive was interrupted.
466 * Change `gcc' to unroll loops only during the last invocation (of
467 as many as two invocations) of loop optimization.
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.
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.
479 * Upgrade to `libf2c' as of 1997-08-16.
481 * Modify `libf2c' to consistently and clearly diagnose recursive I/O
484 * `g77' driver now prints version information (such as produced by
485 `g77 -v') to `stderr' instead of `stdout'.
487 * The `.r' suffix now designates a Ratfor source file, to be
488 preprocessed via the `ratfor' command, available separately.
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.
494 * Improve diagnostics.
496 * Improve documentation and indexing.
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'.
502 * Reserve `INTEGER(KIND=0)' for future use.
507 * The `-fno-typeless-boz' option is now the default.
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.
514 (Version 0.5.19 introduced `-fno-typeless-boz' and its inverse.)
516 * Options `-ff90-intrinsics-enable' and `-fvxt-intrinsics-enable'
517 now are the defaults.
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.
526 * The `ALWAYS_FLUSH' macro is no longer defined when building
527 `libf2c', which should result in improved I/O performance,
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
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.
539 * New option `-fvxt' specifies that the source file is written in
540 VXT Fortran, instead of GNU Fortran.
542 * The `-fvxt-not-f90' option has been deleted, along with its
543 inverse, `-ff90-not-vxt'.
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'.
549 * The `-fugly' option now issues a warning, as it likely will be
550 removed in a future version.
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
557 * The `-fugly-assumed' option, introduced in version 0.5.19, has
558 been changed to better accommodate old and new code.
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.
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
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'.
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.
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
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
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.
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.
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.
599 New options `-falias-check', `-fargument-alias',
600 `-fargument-noalias', and `-fno-argument-noalias-global' control
601 the way `g77' handles potential aliasing.
603 * The `CONJG()' and `DCONJG()' intrinsics now are compiled in-line.
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
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
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'.)
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
630 * `FORMAT' and `ENTRY' statements now are allowed to precede
631 `IMPLICIT NONE' statements.
633 * Produce diagnostic for unsupported `SELECT CASE' on `CHARACTER'
634 type, instead of crashing, at compile time.
636 * Fix crashes involving diagnosed or invalid code.
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).
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'.
647 * Upgrade to `libf2c' as of 1997-02-08, and fix up some of the build
650 * Improve general build procedures for `g77', fixing minor bugs
651 (such as deletion of any file named `f771' in the parent directory
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'.
659 * Improve `g77' driver and `libf2c' so that `g77 -v' yields version
660 information on the library.
662 * The `SNGL' and `FLOAT' intrinsics now are specific intrinsics,
663 instead of synonyms for the generic intrinsic `REAL'.
665 * New intrinsics have been added. These are `REALPART', `IMAGPART',
666 `COMPLEX', `LONG', and `SHORT'.
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.
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.
678 * Make improvements to diagnostics.
680 * Speed up compiler a bit.
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.
687 (Hence the menu item `M' for the node `Diagnostics' in the
688 top-level menu of the Info documentation.)
693 * Code-generation bugs afflicting operations on complex data have
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
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.)
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.
712 * Fix `FORMAT' statement parsing so negative values for specifiers
713 such as `P' (e.g. `FORMAT(-1PF8.1)') are correctly processed as
716 * Fix `SIGNAL' intrinsic so it once again accepts a procedure as its
719 * A temporary kludge option provides bare-bones information on
720 `COMMON' and `EQUIVALENCE' members at debug time.
722 * New `-fonetrip' option specifies FORTRAN-66-style one-trip `DO'
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'
729 * New `-fugly-assumed' option specifies that arrays dimensioned via
730 `DIMENSION X(1)', for example, are to be treated as assumed-size.
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.
736 * New `-ff66' option is a "shorthand" option that specifies
737 behaviors considered appropriate for FORTRAN 66 programs.
739 * New `-ff77' option is a "shorthand" option that specifies
740 behaviors considered appropriate for UNIX `f77' programs.
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.
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'.
751 * Fix crashes involving diagnosed code.
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.
757 * Support `gcc' version 2.7.2.1.
759 * Upgrade to `libf2c' as of 1996-09-26, and fix up some of the build
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.
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.
770 * Add intrinsic support for new `FTELL' and `FSEEK' procedures in
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.
777 * Some useless warnings from the `-Wunused' option have been
780 * Fix a problem building the `f771' executable on AIX systems by
781 linking with the `-bbigtoc' option.
783 * Abort configuration if `gcc' has not been patched using the patch
784 file provided in the `gcc/f/gbe/' subdirectory.
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.
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.
794 * Improvements to documentation and indexing.
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.)
803 Thanks to Scott Snyder (<snyder@d0sgif.fnal.gov>) for providing
806 Among the missing elements from the support for these features are
807 full intrinsic support and constants.
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'.
813 Thanks to Scott Snyder (<snyder@d0sgif.fnal.gov>) for providing
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.
821 * Support automatic arrays in procedures.
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.
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).
833 A new option, `-fzeros', is introduced to enable the traditional
834 treatment of zeros as any other value.
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'.)
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.
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))'.
847 * An expression involving exponentiation, where both operands were
848 type `INTEGER' and the right-hand operand was negative, was
849 erroneously evaluated.
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).
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.
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
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.
873 * Patch the GBE to do a better job optimizing certain kinds of
874 references to array elements.
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.
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.
885 So, this introduces version 2.7.2.f.1 of `gcc'.
887 * Make several improvements and fixes to diagnostics, including the
888 removal of two that were inappropriate or inadequate.
890 * Warning about two successive arithmetic operators, produced by
891 `-Wsurprising', now produced *only* when both operators are,
892 indeed, arithmetic (not relational/boolean).
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.
898 * Allow `SAVE' of a local variable or array, even after it has been
899 given an initial value via `DATA', for example.
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.
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>).
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.
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.
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
927 * Support `gcc' version 2.7.2.
929 * Upgrade to `libf2c' as of 1996-03-23, and fix up some of the build
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>.
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'.
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).
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
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
959 * Fix crash on `CHARACTER*(*) FOO' in a main or block data program
962 * Fix crash that can occur when diagnostics given outside of any
963 program unit (such as when input file contains `@foo').
965 * Fix crashes, infinite loops (hangs), and such involving diagnosed
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).
973 * Make `libf2c' build procedures work on more systems again by
974 eliminating unnecessary invocations of `ld -r -x' and `mv'.
976 * Fix omission of `-funix-intrinsics-...' options in list of
977 permitted options to compiler.
979 * Fix failure to always diagnose missing type declaration for
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').
987 * Fix build procedures so cross-compiling `g77' (the `fini' utility
988 in particular) is properly built using the host compiler.
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.
994 * Add `ERF()' and `ERFC()' as generic intrinsics mapping to existing
995 `ERF'/`DERF' and `ERFC'/`DERFC' specific intrinsics.
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').
1002 * Remove from `-fno-pedantic' the diagnostic about `DO' with
1003 non-`INTEGER' index variable; issue that under `-Wsurprising'
1006 * Clarify some diagnostics that say things like "ignored" when that's
1009 * Clarify diagnostic on use of `.EQ.'/`.NE.' on `LOGICAL' operands.
1011 * Minor improvements to code generation for various operations on
1014 * Minor improvement to code generation for some `DO' loops on some
1017 * Support `gcc' version 2.7.1.
1019 * Upgrade to `libf2c' as of 1995-11-15.
1024 * Fix a code-generation bug involving complicated `EQUIVALENCE'
1025 statements not involving `COMMON'.
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()'.
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.
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).
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.
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
1056 * Fix crash on expressions like `COMPLEX**INTEGER'.
1058 * Fix crash on expressions like `(1D0,2D0)**2', i.e. raising a
1059 `DOUBLE COMPLEX' constant to an `INTEGER' constant power.
1061 * Fix crashes and such involving diagnosed code.
1063 * Diagnose, instead of crashing on, statement function definitions
1064 having duplicate dummy argument names.
1066 * Fix bug causing rejection of good code involving statement function
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
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.
1077 * Fix `gcc' driver (affects `g77' thereby) to not gratuitously
1078 invoke the `f771' program (e.g. when `-E' is specified).
1080 * Fix diagnostic to point to correct source line when it immediately
1081 follows an `INCLUDE' statement.
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.
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)').
1098 * Add new intrinsic group named `unix' to contain the new intrinsics,
1099 and by default enable this new group.
1101 * Move `LOC()' intrinsic out of the `vxt' group to the new `unix'
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).
1110 * Add new `g77' option `--driver=name' to specify driver when
1111 default, `gcc', isn't appropriate.
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.
1118 * Produce better diagnostics, more like `gcc', with info such as `In
1119 function `foo':' and `In file included from...:'.
1121 * Support `gcc''s `-fident' and `-fno-ident' options.
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.
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.
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.
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
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:
1151 * Lots of new documentation (though work is still needed to put it
1152 into canonical GNU format).
1154 * Build `libf2c' with `-g0', not `-g2', in effect (by default), to
1155 produce smaller library without lots of debugging clutter.
1160 * Fix bad code generation involving `X**I' and temporary, internal
1161 variables generated by `g77' and the back end (such as for `DO'
1164 * Fix crash given `CHARACTER A;DATA A/.TRUE./'.
1166 * Replace crash with diagnostic given `CHARACTER A;DATA A/1.0/'.
1168 * Fix crash or other erratic behavior when null character constant
1169 (`''') is encountered.
1171 * Fix crash or other erratic behavior involving diagnosed code.
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.
1177 * Disallow `COMMON I(10)' if `I' has previously been specified with
1178 an array declarator.
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
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.
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.
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.
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.)
1213 * Fix crash when extra parentheses surround item in `DATA'
1216 * Fix crash over minor internal inconsistencies in handling
1217 diagnostics, just substitute dummy strings where necessary.
1219 * Fix crash on some systems when compiling call to `MVBITS()'
1222 * Fix crash on array assignment `TYPEDDD(...)=...', where DDD is a
1223 string of one or more digits.
1225 * Fix crash on `DCMPLX()' with a single `INTEGER' argument.
1227 * Fix various crashes involving code with diagnosed errors.
1229 * Support `-I' option for `INCLUDE' statement, plus `gcc''s
1230 `header.gcc' facility for handling systems like MS-DOS.
1232 * Allow `INCLUDE' statement to be continued across multiple lines,
1233 even allow it to coexist with other statements on the same line.
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.
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).
1247 * Complain if initialized common redeclared as larger in subsequent
1250 * Warn if blank common initialized, since its size can vary and hence
1251 related warnings that might be helpful won't be seen.
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.
1258 * Make `-fugly-args' the default.
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
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.
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'.)
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.
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).
1282 * Support `%LOC()' and `LOC()' of character arguments.
1284 * Support null (zero-length) character constants and expressions.
1286 * Support `f2c''s `IMAG()' generic intrinsic.
1288 * Support `ICHAR()', `IACHAR()', and `LEN()' of character
1289 expressions that are valid in assignments but not normally as
1292 * Support `f2c'-style `&' in column 1 to mean continuation line.
1294 * Allow `NAMELIST', `EXTERNAL', `INTRINSIC', and `VOLATILE' in
1295 `BLOCK DATA', even though these are not allowed by the standard.
1297 * Allow `RETURN' in main program unit.
1299 * Changes to Hollerith-constant support to obey Appendix C of the
1302 - Now padded on the right with zeros, not spaces.
1304 - Hollerith "format specifications" in the form of arrays of
1305 non-character allowed.
1307 - Warnings issued when non-space truncation occurs when
1308 converting to another type.
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.
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.
1320 * Changes and fixes to typeless-constant support:
1322 - Now treated as a typeless double-length `INTEGER' value.
1324 - Warnings issued when overflow occurs.
1326 - Padded on the left with zeros when converting to a larger
1329 - Should be properly aligned and ordered on the target machine
1330 for whatever type it is turned into.
1332 - When specified as actual argument, now passed as reference to
1333 a default `INTEGER' constant.
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)))'.
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'.
1345 * Remove redundant message about zero-step-count `DO' loops.
1347 * Clean up diagnostic messages, shortening many of them.
1349 * Fix typo in `g77' man page.
1351 * Clarify implications of constant-handling bugs in `f/BUGS'.
1353 * Generate better code for `**' operator with a right-hand operand of
1356 * Generate better code for `SQRT()' and `DSQRT()', also when
1357 `-ffast-math' specified, enable better code generation for `SIN()'
1360 * Generate better code for some kinds of array references.
1362 * Speed up lexing somewhat (this makes the compilation phase