1 @c Copyright (C) 1995-1997 Free Software Foundation, Inc.
2 @c This is part of the G77 manual.
3 @c For copying conditions, see the file g77.texi.
5 @c The text of this file appears in the file BUGS
6 @c in the G77 distribution, as well as in the G77 manual.
12 @chapter News About GNU Fortran
14 @cindex versions, recent
15 @cindex recent versions
17 Changes made to recent versions of GNU Fortran are listed
18 below, with the most recent version first.
20 The changes are generally listed in order:
24 Code-generation and run-time-library bug-fixes
27 Compiler and run-time-library crashes involving valid code
34 Fixes and enhancements to existing features
46 This order is not strict---for example, some items
47 involve a combination of these elements.
52 @code{g77} no longer crashes when compiling code
53 containing specification statements such as
54 @samp{INTEGER(KIND=7) PTR}.
57 @code{g77} now treats @samp{%LOC(@var{expr})} and
58 @samp{LOC(@var{expr})} as ``ordinary'' expressions
59 when they are used as arguments in procedure calls.
60 This change applies only to global (filewide) analysis,
61 making it consistent with
62 how @code{g77} actually generates code
65 Previously, @code{g77} treated these expressions
66 as denoting special ``pointer'' arguments
67 for the purposes of filewide analysis.
70 Improve documentation and indexing.
76 This release contains several regressions against
77 version 0.5.22 of @code{g77}, due to using the
78 ``vanilla'' @code{gcc} back end instead of patching
79 it to fix a few bugs and improve performance in a
82 @xref{Actual Bugs,,Actual Bugs We Haven't Fixed Yet},
83 available in plain-text format in @code{gcc/f/BUGS},
84 for information on the known bugs in this version,
85 including the regressions.
87 Features that have been dropped from this version
88 of @code{g77} due to their being implemented
89 via @code{g77}-specific patches to the @code{gcc}
90 back end in previous releases include:
94 Support for @code{__restrict__} keyword,
95 the options @samp{-fargument-alias}, @samp{-fargument-noalias},
96 and @samp{-fargument-noalias-global},
97 and the corresponding alias-analysis code.
99 (Version 1.0.1 of @code{egcs} has the alias-analysis
100 code, but not the @code{__restrict__} keyword.
101 @code{egcs} @code{g77} users benefit from the alias-analysis
102 code despite the lack of the @code{__restrict__} keyword,
103 which is a C-language construct.)
106 Support for the GNU compiler options
107 @samp{-fmove-all-movables},
108 @samp{-freduce-all-givs},
109 and @samp{-frerun-loop-opt}.
111 (Version 1.0.1 of @code{egcs} supports these options.
112 @code{g77} users of @code{egcs} benefit from them even if
113 they are not explicitly specified,
114 because the defaults are optimized for @code{g77} users.)
117 Support for the @samp{-W} option warning about
118 integer division by zero.
121 The Intel x86-specific option @samp{-malign-double}
122 applying to stack-allocated data
123 as well as statically-allocate data.
126 Note that the @file{gcc/f/gbe/} subdirectory has been removed
127 from this distribution as a result of @code{g77} no longer
128 including patches for the @code{gcc} back end.
131 Fix bugs in the @code{libU77} intrinsic @samp{HostNm}
132 that wrote one byte beyond the end of its @samp{CHARACTER}
134 and in the @code{libU77} intrinsics
135 @samp{GMTime} and @samp{LTime}
136 that overwrote their arguments.
139 Support @code{gcc} version 2.8,
140 and remove support for prior versions of @code{gcc}.
142 @cindex -@w{}-driver option
143 @cindex g77 options, -@w{}-driver
144 @cindex options, -@w{}-driver
146 Remove support for the @samp{--driver} option,
147 as @code{g77} now does all the driving,
148 just like @code{gcc}.
151 @code{CASE DEFAULT} no longer crashes @code{g77}.
154 Valid combinations of @code{EXTERNAL},
155 passing that external as a dummy argument
156 without explicitly giving it a type,
157 and, in a subsequent program unit,
158 referencing that external as
159 an external function with a different type
160 no longer crash @code{g77}.
163 @code{g77} no longer installs the @file{f77} command
164 and @file{f77.1} man page
165 in the @file{/usr} or @file{/usr/local} heirarchy,
166 even if the @file{f77-install-ok} file exists
167 in the source or build directory.
168 See the installation documentation for more information.
171 @code{g77} no longer installs the @file{libf2c.a} library
172 and @file{f2c.h} include file
173 in the @file{/usr} or @file{/usr/local} heirarchy,
174 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
175 in the source or build directory.
176 See the installation documentation for more information.
179 The @file{libf2c.a} library produced by @code{g77} has been
180 renamed to @file{libg2c.a}.
181 It is installed only in the @code{gcc} ``private''
182 directory heirarchy, @file{gcc-lib}.
183 This allows system administrators and users to choose which
184 version of the @code{libf2c} library from @code{netlib} they
185 wish to use on a case-by-case basis.
186 See the installation documentation for more information.
189 The @file{f2c.h} include (header) file produced by @code{g77}
190 has been renamed to @file{g2c.h}.
191 It is installed only in the @code{gcc} ``private''
192 directory heirarchy, @file{gcc-lib}.
193 This allows system administrators and users to choose which
194 version of the include file from @code{netlib} they
195 wish to use on a case-by-case basis.
196 See the installation documentation for more information.
199 The @code{g77} command now expects the run-time library
200 to be named @code{libg2c.a} instead of @code{libf2c.a},
201 to ensure that a version other than the one built and
202 installed as part of the same @code{g77} version is picked up.
205 The @samp{-Wunused} option no longer issues a spurious
206 warning about the ``master'' procedure generated by
207 @code{g77} for procedures containing @code{ENTRY} statements.
210 @code{g77}'s version of @code{libf2c} separates out
211 the setting of global state
212 (such as command-line arguments and signal handling)
213 from @file{main.o} into distinct, new library
216 This should make it easier to write portable applications
217 that have their own (non-Fortran) @code{main()} routine
218 properly set up the @code{libf2c} environment, even
219 when @code{libf2c} (now @code{libg2c}) is a shared library.
222 During the configuration and build process,
223 @code{g77} creates subdirectories it needs only as it
224 needs them, thus avoiding unnecessary creation of, for example,
225 @file{stage1/f/runtime} when doing a non-bootstrap build.
226 Other cleaning up of the configuration and build process
227 has been performed as well.
230 @code{install-info} now used to update the directory of
231 Info documentation to contain an entry for @code{g77}
232 (during installation).
235 Some diagnostics have been changed from warnings to errors,
236 to prevent inadvertent use of the resulting, probably buggy,
238 These mostly include diagnostics about use of unsupported features
239 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
240 @code{WRITE} statements,
241 and about truncations of various sorts of constants.
244 Improve documentation and indexing.
247 Upgrade to @code{libf2c} as of 1998-04-20.
249 This should fix a variety of problems, including
250 those involving some uses of the @samp{T} format
251 specifier, and perhaps some build (porting) problems
258 Fix code generation for iterative @code{DO} loops that
259 have one or more references to the iteration variable,
260 or to aliases of it, in their control expressions.
261 For example, @samp{DO 10 J=2,J} now is compiled correctly.
264 @cindex stack, 387 coprocessor
268 Fix a code-generation bug that afflicted
269 Intel x86 targets when @samp{-O2} was specified
270 compiling, for example, an old version of
271 the @samp{DNRM2} routine.
273 The x87 coprocessor stack was being
274 mismanaged in cases involving assigned @code{GOTO}
278 Fix @code{DTime} intrinsic so as not to truncate
279 results to integer values (on some systems).
282 Fix @code{SIGNAL} intrinsic so it offers portable
283 support for 64-bit systems (such as Digital Alphas
287 Fix run-time crash involving @code{NAMELIST} on 64-bit
288 machines such as Alphas.
291 Fix @code{g77} version of @code{libf2c} so it no longer
292 produces a spurious @samp{I/O recursion} diagnostic at run time
293 when an I/O operation (such as @samp{READ *,I}) is interrupted
294 in a manner that causes the program to be terminated
295 via the @samp{f_exit} routine (such as via @kbd{C-c}).
298 Fix @code{g77} crash triggered by @code{CASE} statement with
299 an omitted lower or upper bound.
302 Fix @code{g77} crash compiling references to @code{CPU_Time}
307 (or apparently infinite run-time)
308 when compiling certain complicated expressions
309 involving @code{COMPLEX} arithmetic
310 (especially multiplication).
313 Fix @code{g77} crash on statements such as
314 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
315 @samp{Z} is @code{DOUBLE COMPLEX}.
318 Fix a @code{g++} crash.
321 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
322 compile-time constant @code{INTEGER} expression.
325 Fix @code{g77} @samp{-g} option so procedures that
326 use @samp{ENTRY} can be stepped through, line by line,
330 Fix a profiling-related bug in @code{gcc} back end for
331 Intel x86 architecture.
334 Allow any @code{REAL} argument to intrinsics
335 @code{Second} and @code{CPU_Time}.
338 Allow any numeric argument to intrinsics
339 @code{Int2} and @code{Int8}.
342 Use @code{tempnam}, if available, to open scratch files
343 (as in @samp{OPEN(STATUS='SCRATCH')}
344 so that the @code{TMPDIR} environment variable,
348 Rename the @code{gcc} keyword @code{restrict} to
349 @code{__restrict__}, to avoid rejecting valid, existing,
351 Support for @code{restrict} is now more like support
355 Fix @samp{-fpedantic} to not reject procedure invocations
356 such as @samp{I=J()} and @samp{CALL FOO()}.
359 Fix @samp{-fugly-comma} to affect invocations of
360 only external procedures.
361 Restore rejection of gratuitous trailing omitted
362 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
365 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
366 @samp{-fbadu77-intrinsics-*} options.
369 Improve diagnostic messages from @code{libf2c}
370 so it is more likely that the printing of the
371 active format string is limited to the string,
372 with no trailing garbage being printed.
374 (Unlike @code{f2c}, @code{g77} did not append
375 a null byte to its compiled form of every
376 format string specified via a @code{FORMAT} statement.
377 However, @code{f2c} would exhibit the problem
378 anyway for a statement like @samp{PRINT '(I)garbage', 1}
379 by printing @samp{(I)garbage} as the format string.)
382 Improve compilation of FORMAT expressions so that
383 a null byte is appended to the last operand if it
385 This provides a cleaner run-time diagnostic as provided
386 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
389 Fix various crashes involving code with diagnosed errors.
392 Fix cross-compilation bug when configuring @code{libf2c}.
398 Improve documentation and indexing.
401 Upgrade to @code{libf2c} as of 1997-09-23.
402 This fixes a formatted-I/O bug that afflicted
403 64-bit systems with 32-bit integers
404 (such as Digital Alpha running GNU/Linux).
410 Fix a code-generation bug introduced by 0.5.20
411 caused by loop unrolling (by specifying
412 @samp{-funroll-loops} or similar).
413 This bug afflicted all code compiled by
414 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
418 Fix a code-generation bug manifested when
419 combining local @code{EQUIVALENCE} with a
420 @code{DATA} statement that follows
421 the first executable statement (or is
422 treated as an executable-context statement
423 as a result of using the @samp{-fpedantic}
427 Fix a compiler crash that occured when an
428 integer division by a constant zero is detected.
429 Instead, when the @samp{-W} option is specified,
430 the @code{gcc} back end issues a warning about such a case.
431 This bug afflicted all code compiled by
432 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
436 Fix a compiler crash that occurred in some cases
437 of procedure inlining.
438 (Such cases became more frequent in 0.5.20.)
441 Fix a compiler crash resulting from using @code{DATA}
442 or similar to initialize a @code{COMPLEX} variable or
446 Fix compiler crashes involving use of @code{AND}, @code{OR},
447 or @code{XOR} intrinsics.
450 Fix compiler bug triggered when using a @code{COMMON}
451 or @code{EQUIVALENCE} variable
452 as the target of an @code{ASSIGN}
453 or assigned-@code{GOTO} statement.
456 Fix compiler crashes due to using the name of a some
457 non-standard intrinsics (such as @samp{FTELL} or
458 @samp{FPUTC}) as such and as the name of a procedure
460 Such dual use of a name in a program is allowed by
463 @c @code{g77}'s version of @code{libf2c} has been modified
464 @c so that the external names of library's procedures do not
465 @c conflict with names used for Fortran procedures compiled
467 @c An additional layer of jacket procedures has been added
468 @c to @code{libf2c} to map the old names to the new names,
469 @c for automatic use by programs that interface to the
470 @c library procedures via the external-procedure mechanism.
472 @c For example, the intrinsic @code{FPUTC} previously was
473 @c implemented by @code{g77} as a call to the @code{libf2c}
474 @c routine @samp{fputc_}.
475 @c This would conflict with a Fortran procedure named @code{FPUTC}
476 @c (using default compiler options), and this conflict
477 @c would cause a crash under certain circumstances.
479 @c Now, the intrinsic @code{FPUTC} calls @samp{G77_fputc_0},
480 @c which does not conflict with the @samp{fputc_} external
481 @c that implements a Fortran procedure named @code{FPUTC}.
483 @c Programs that refer to @code{FPUTC} as an external procedure
484 @c without supplying their own implementation will link to
485 @c the new @code{libf2c} routine @samp{fputc_}, which is
486 @c simply a jacket routine that calls @samp{G77_fputc_0}.
489 Place automatic arrays on the stack, even if
490 @code{SAVE} or the @samp{-fno-automatic} option
492 This avoids a compiler crash in some cases.
495 The @samp{-malign-double} option now reliably aligns
496 @code{DOUBLE PRECISION} optimally on Pentium and
497 Pentium Pro architectures (586 and 686 in @code{gcc}).
500 New option @samp{-Wno-globals} disables warnings
501 about ``suspicious'' use of a name both as a global
502 name and as the implicit name of an intrinsic, and
503 warnings about disagreements over the number or natures of
504 arguments passed to global procedures, or the
505 natures of the procedures themselves.
507 The default is to issue such warnings, which are
508 new as of this version of @code{g77}.
511 New option @samp{-fno-globals} disables diagnostics
512 about potentially fatal disagreements
513 analysis problems, such as disagreements over the
514 number or natures of arguments passed to global
515 procedures, or the natures of those procedures themselves.
517 The default is to issue such diagnostics and flag
518 the compilation as unsuccessful.
519 With this option, the diagnostics are issued as
520 warnings, or, if @samp{-Wno-globals} is specified,
521 are not issued at all.
523 This option also disables inlining of global procedures,
524 to avoid compiler crashes resulting from coding errors
525 that these diagnostics normally would identify.
528 Diagnose cases where a reference to a procedure
529 disagrees with the type of that procedure, or
530 where disagreements about the number or nature
532 This avoids a compiler crash.
535 Fix parsing bug whereby @code{g77} rejected a
536 second initialization specification immediately
537 following the first's closing @samp{/} without
538 an intervening comma in a @code{DATA} statement,
539 and the second specification was an implied-DO list.
542 Improve performance of the @code{gcc} back end so
543 certain complicated expressions involving @code{COMPLEX}
544 arithmetic (especially multiplication) don't appear to
545 take forever to compile.
548 Fix a couple of profiling-related bugs in @code{gcc}
552 Integrate GNU Ada's (GNAT's) changes to the back end,
553 which consist almost entirely of bug fixes.
554 These fixes are circa version 3.10p of GNAT.
557 Include some other @code{gcc} fixes that seem useful in
558 @code{g77}'s version of @code{gcc}.
559 (See @file{gcc/ChangeLog} for details---compare it
560 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
564 Fix @code{libU77} routines that accept file and other names
565 to strip trailing blanks from them, for consistency
566 with other implementations.
567 Blanks may be forcibly appended to such names by
568 appending a single null character (@samp{CHAR(0)})
569 to the significant trailing blanks.
572 Fix @code{CHMOD} intrinsic to work with file names
573 that have embedded blanks, commas, and so on.
576 Fix @code{SIGNAL} intrinsic so it accepts an
577 optional third @samp{Status} argument.
580 Fix @code{IDATE()} intrinsic subroutine (VXT form)
581 so it accepts arguments in the correct order.
582 Documentation fixed accordingly, and for
583 @code{GMTIME()} and @code{LTIME()} as well.
586 Make many changes to @code{libU77} intrinsics to
587 support existing code more directly.
589 Such changes include allowing both subroutine and
590 function forms of many routines, changing @code{MCLOCK()}
591 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
592 introducing @code{MCLOCK8()} and @code{TIME8()} to
593 return @code{INTEGER(KIND=2)} values,
594 and placing functions that are intended to perform
595 side effects in a new intrinsic group, @code{badu77}.
598 Improve @code{libU77} so it is more portable.
601 Add options @samp{-fbadu77-intrinsics-delete},
602 @samp{-fbadu77-intrinsics-hide}, and so on.
605 Fix crashes involving diagnosed or invalid code.
608 @code{g77} and @code{gcc} now do a somewhat better
609 job detecting and diagnosing arrays that are too
610 large to handle before these cause diagnostics
611 during the assembler or linker phase, a compiler
612 crash, or generation of incorrect code.
615 Make some fixes to alias analysis code.
618 Add support for @code{restrict} keyword in @code{gcc}
622 Support @code{gcc} version 2.7.2.3
623 (modified by @code{g77} into version 2.7.2.3.f.1),
625 support for prior versions of @code{gcc}.
628 Incorporate GNAT's patches to the @code{gcc} back
629 end into @code{g77}'s, so GNAT users do not need
630 to apply GNAT's patches to build both GNAT and @code{g77}
631 from the same source tree.
634 Modify @code{make} rules and related code so that
635 generation of Info documentation doesn't require
636 compilation using @code{gcc}.
637 Now, any ANSI C compiler should be adequate to
638 produce the @code{g77} documentation (in particular,
639 the tables of intrinsics) from scratch.
642 Add @code{INT2} and @code{INT8} intrinsics.
645 Add @code{CPU_TIME} intrinsic.
648 Add @code{ALARM} intrinsic.
651 @code{CTIME} intrinsic now accepts any @code{INTEGER}
652 argument, not just @code{INTEGER(KIND=2)}.
655 Warn when explicit type declaration disagrees with
656 the type of an intrinsic invocation.
659 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
662 Fix typo in @code{make} rule @samp{g77-cross}, used only for
666 Fix @code{libf2c} build procedure to re-archive library
667 if previous attempt to archive was interrupted.
670 Change @code{gcc} to unroll loops only during the last
671 invocation (of as many as two invocations) of loop
675 Improve handling of @samp{-fno-f2c} so that code that
676 attempts to pass an intrinsic as an actual argument,
677 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
678 that the run-time-library routine is, effectively,
679 compiled with @samp{-ff2c} in effect.
682 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
683 as an option that inhibits linking, just like @samp{-c} or
684 @samp{-S}, and to recognize and properly handle the
685 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
686 and @samp{-Xlinker} options.
689 Upgrade to @code{libf2c} as of 1997-08-16.
692 Modify @code{libf2c} to consistently and clearly diagnose
693 recursive I/O (at run time).
696 @code{g77} driver now prints version information (such as produced
697 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
700 The @samp{.r} suffix now designates a Ratfor source file,
701 to be preprocessed via the @code{ratfor} command, available
705 Fix some aspects of how @code{gcc} determines what kind of
706 system is being configured and what kinds are supported.
707 For example, GNU Linux/Alpha ELF systems now are directly
714 Improve documentation and indexing.
717 Include all pertinent files for @code{libf2c} that come
718 from @code{netlib.bell-labs.com}; give any such files
719 that aren't quite accurate in @code{g77}'s version of
720 @code{libf2c} the suffix @samp{.netlib}.
723 Reserve @code{INTEGER(KIND=0)} for future use.
729 The @samp{-fno-typeless-boz} option is now the default.
731 This option specifies that non-decimal-radix
732 constants using the prefixed-radix form (such as @samp{Z'1234'})
733 are to be interpreted as @code{INTEGER} constants.
734 Specify @samp{-ftypeless-boz} to cause such
735 constants to be interpreted as typeless.
737 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
741 Options @samp{-ff90-intrinsics-enable} and
742 @samp{-fvxt-intrinsics-enable} now are the
745 Some programs might use names that clash with
746 intrinsic names defined (and now enabled) by these
747 options or by the new @code{libU77} intrinsics.
748 Users of such programs might need to compile them
749 differently (using, for example, @samp{-ff90-intrinsics-disable})
750 or, better yet, insert appropriate @code{EXTERNAL}
751 statements specifying that these names are not intended
752 to be names of intrinsics.
755 The @samp{ALWAYS_FLUSH} macro is no longer defined when
756 building @code{libf2c}, which should result in improved
757 I/O performance, especially over NFS.
759 @emph{Note:} If you have code that depends on the behavior
760 of @code{libf2c} when built with @samp{ALWAYS_FLUSH} defined,
761 you will have to modify @code{libf2c} accordingly before
762 building it from this and future versions of @code{g77}.
765 Dave Love's implementation of @code{libU77} has been
766 added to the version of @code{libf2c} distributed with
767 and built as part of @code{g77}.
768 @code{g77} now knows about the routines in this library
772 New option @samp{-fvxt} specifies that the
773 source file is written in VXT Fortran, instead of GNU Fortran.
776 The @samp{-fvxt-not-f90} option has been deleted,
777 along with its inverse, @samp{-ff90-not-vxt}.
779 If you used one of these deleted options, you should
780 re-read the pertinent documentation to determine which
781 options, if any, are appropriate for compiling your
782 code with this version of @code{g77}.
785 The @samp{-fugly} option now issues a warning, as it
786 likely will be removed in a future version.
788 (Enabling all the @samp{-fugly-*} options is unlikely
789 to be feasible, or sensible, in the future,
790 so users should learn to specify only those
791 @samp{-fugly-*} options they really need for a
792 particular source file.)
795 The @samp{-fugly-assumed} option, introduced in
796 version 0.5.19, has been changed to
797 better accommodate old and new code.
800 Make a number of fixes to the @code{g77} front end and
801 the @code{gcc} back end to better support Alpha (AXP)
803 This includes providing at least one bug-fix to the
804 @code{gcc} back end for Alphas.
807 Related to supporting Alpha (AXP) machines, the @code{LOC()}
808 intrinsic and @code{%LOC()} construct now return
809 values of integer type that is the same width (holds
810 the same number of bits) as the pointer type on the
813 On most machines, this won't make a difference, whereas
814 on Alphas, the type these constructs return is
815 @code{INTEGER*8} instead of the more common @code{INTEGER*4}.
818 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
819 end, to avoid bugs in @code{complex} support in the
821 New option @samp{-fno-emulate-complex}
822 causes @code{g77} to revert the 0.5.19 behavior.
825 Fix bug whereby @samp{REAL A(1)}, for example, caused
826 a compiler crash if @samp{-fugly-assumed} was in effect
827 and @var{A} was a local (automatic) array.
828 That case is no longer affected by the new
829 handling of @samp{-fugly-assumed}.
832 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
833 no longer deletes @file{foo.f} before issuing other
834 diagnostics, and so the @samp{-x} option is properly
838 Enable inlining of subroutines and functions by the @code{gcc}
840 This works as it does for @code{gcc} itself---program units
841 may be inlined for invocations that follow them in the same
842 program unit, as long as the appropriate compile-time
843 options are specified.
846 Dummy arguments are no longer assumed to potentially alias
848 other dummy arguments or @code{COMMON} areas when any of
849 these are defined (assigned to) by Fortran code.
851 This can result in faster and/or smaller programs when
852 compiling with optimization enabled, though on some
853 systems this effect is observed only when @samp{-fforce-addr}
856 New options @samp{-falias-check}, @samp{-fargument-alias},
857 @samp{-fargument-noalias},
858 and @samp{-fno-argument-noalias-global} control the
859 way @code{g77} handles potential aliasing.
862 The @code{CONJG()} and @code{DCONJG()} intrinsics now
863 are compiled in-line.
866 The bug-fix for 0.5.19.1 has been re-done.
867 The @code{g77} compiler has been changed back to
868 assume @code{libf2c} has no aliasing problems in
869 its implementations of the @code{COMPLEX} (and
870 @code{DOUBLE COMPLEX}) intrinsics.
871 The @code{libf2c} has been changed to have no such
874 As a result, 0.5.20 is expected to offer improved performance
875 over 0.5.19.1, perhaps as good as 0.5.19 in most
876 or all cases, due to this change alone.
878 @emph{Note:} This change requires version 0.5.20 of
879 @code{libf2c}, at least, when linking code produced
880 by any versions of @code{g77} other than 0.5.19.1.
881 Use @samp{g77 -v} to determine the version numbers
882 of the @code{libF77}, @code{libI77}, and @code{libU77}
883 components of the @code{libf2c} library.
884 (If these version numbers are not printed---in
885 particular, if the linker complains about unresolved
886 references to names like @samp{g77__fvers__}---that
887 strongly suggests your installation has an obsolete
888 version of @code{libf2c}.)
891 New option @samp{-fugly-assign} specifies that the
892 same memory locations are to be used to hold the
893 values assigned by both statements @samp{I = 3} and
894 @samp{ASSIGN 10 TO I}, for example.
895 (Normally, @code{g77} uses a separate memory location
896 to hold assigned statement labels.)
899 @code{FORMAT} and @code{ENTRY} statements now are allowed to
900 precede @code{IMPLICIT NONE} statements.
903 Produce diagnostic for unsupported @code{SELECT CASE} on
904 @code{CHARACTER} type, instead of crashing, at compile time.
907 Fix crashes involving diagnosed or invalid code.
910 Change approach to building @code{libf2c} archive
911 (@file{libf2c.a}) so that members are added to it
912 only when truly necessary, so the user that installs
913 an already-built @code{g77} doesn't need to have write
914 access to the build tree (whereas the user doing the
915 build might not have access to install new software
919 Support @code{gcc} version 2.7.2.2
920 (modified by @code{g77} into version 2.7.2.2.f.2),
922 support for prior versions of @code{gcc}.
925 Upgrade to @code{libf2c} as of 1997-02-08, and
926 fix up some of the build procedures.
929 Improve general build procedures for @code{g77},
930 fixing minor bugs (such as deletion of any file
931 named @file{f771} in the parent directory of @code{gcc/}).
934 Enable full support of @code{INTEGER*8} available in
935 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
936 may make full use of its features via the @code{g77}
937 version of @file{f2c.h} and the @code{INTEGER*8}
938 support routines in the @code{g77} version of @code{libf2c}.
941 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
942 yields version information on the library.
945 The @code{SNGL} and @code{FLOAT} intrinsics now are
946 specific intrinsics, instead of synonyms for the
947 generic intrinsic @code{REAL}.
950 New intrinsics have been added.
951 These are @code{REALPART}, @code{IMAGPART},
953 @code{LONG}, and @code{SHORT}.
956 A new group of intrinsics, @samp{gnu}, has been added
957 to contain the new @code{REALPART}, @code{IMAGPART},
958 and @code{COMPLEX} intrinsics.
959 An old group, @samp{dcp}, has been removed.
962 Complain about industry-wide ambiguous references
963 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
964 where @var{expr} is @code{DOUBLE COMPLEX} (or any
965 complex type other than @code{COMPLEX}), unless
966 @samp{-ff90} option specifies Fortran 90 interpretation
967 or new @samp{-fugly-complex} option, in conjunction with
968 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
971 Make improvements to diagnostics.
974 Speed up compiler a bit.
977 Improvements to documentation and indexing, including
978 a new chapter containing information on one, later
979 more, diagnostics that users are directed to pull
980 up automatically via a message in the diagnostic itself.
982 (Hence the menu item @samp{M} for the node
983 @samp{Diagnostics} in the top-level menu of
984 the Info documentation.)
987 @heading In 0.5.19.1:
990 Code-generation bugs afflicting operations on complex
991 data have been fixed.
993 These bugs occurred when assigning the result of an
994 operation to a complex variable (or array element)
995 that also served as an input to that operation.
997 The operations affected by this bug were: @samp{CONJG()},
998 @samp{DCONJG()}, @samp{CCOS()}, @samp{CDCOS()},
999 @samp{CLOG()}, @samp{CDLOG()}, @samp{CSIN()}, @samp{CDSIN()},
1000 @samp{CSQRT()}, @samp{CDSQRT()}, complex division, and
1001 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
1003 (The related generic and @samp{Z}-prefixed intrinsics,
1004 such as @samp{ZSIN()}, also were affected.)
1006 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
1007 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
1008 @code{DOUBLE COMPLEX}) have been fixed.
1014 Fix @code{FORMAT} statement parsing so negative values for
1015 specifiers such as @samp{P} (e.g. @samp{FORMAT(-1PF8.1)})
1016 are correctly processed as negative.
1019 Fix @code{SIGNAL} intrinsic so it once again accepts a
1020 procedure as its second argument.
1023 A temporary kludge option provides bare-bones information on
1024 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
1027 New @samp{-fonetrip} option specifies FORTRAN-66-style
1028 one-trip @code{DO} loops.
1031 New @samp{-fno-silent} option causes names of program units
1032 to be printed as they are compiled, in a fashion similar to
1033 UNIX @code{f77} and @code{f2c}.
1036 New @samp{-fugly-assumed} option specifies that arrays
1037 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
1038 treated as assumed-size.
1041 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
1042 constants using the prefixed-radix form (such as @samp{Z'1234'})
1043 are to be interpreted as @code{INTEGER} constants.
1046 New @samp{-ff66} option is a ``shorthand'' option that specifies
1047 behaviors considered appropriate for FORTRAN 66 programs.
1050 New @samp{-ff77} option is a ``shorthand'' option that specifies
1051 behaviors considered appropriate for UNIX @code{f77} programs.
1054 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
1055 to perform some of what @samp{-fugly} used to do.
1056 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
1057 in that they do nothing more than enable (or disable) other
1058 @samp{-fugly-*} options.
1061 Fix parsing of assignment statements involving targets that
1062 are substrings of elements of @code{CHARACTER} arrays having
1063 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
1064 @samp{REALFUNCTIONFOO}.
1067 Fix crashes involving diagnosed code.
1070 Fix handling of local @code{EQUIVALENCE} areas so certain cases
1071 of valid Fortran programs are not misdiagnosed as improperly
1072 extending the area backwards.
1075 Support @code{gcc} version 2.7.2.1.
1078 Upgrade to @code{libf2c} as of 1996-09-26, and
1079 fix up some of the build procedures.
1082 Change code generation for list-directed I/O so it allows
1083 for new versions of @code{libf2c} that might return non-zero
1084 status codes for some operations previously assumed to always
1087 This change not only affects how @code{IOSTAT=} variables
1088 are set by list-directed I/O, it also affects whether
1089 @code{END=} and @code{ERR=} labels are reached by these
1093 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
1094 procedures in @code{libf2c}.
1097 Modify @code{fseek_()} in @code{libf2c} to be more portable
1098 (though, in practice, there might be no systems where this
1099 matters) and to catch invalid @samp{whence} arguments.
1102 Some useless warnings from the @samp{-Wunused} option have
1106 Fix a problem building the @file{f771} executable
1107 on AIX systems by linking with the @samp{-bbigtoc} option.
1110 Abort configuration if @code{gcc} has not been patched
1111 using the patch file provided in the @samp{gcc/f/gbe/}
1115 Add options @samp{--help} and @samp{--version} to the
1116 @code{g77} command, to conform to GNU coding guidelines.
1117 Also add printing of @code{g77} version number when
1118 the @samp{--verbose} (@samp{-v}) option is used.
1121 Change internally generated name for local @code{EQUIVALENCE}
1122 areas to one based on the alphabetically sorted first name
1123 in the list of names for entities placed at the beginning
1127 Improvements to documentation and indexing.
1133 Add some rudimentary support for @code{INTEGER*1},
1134 @code{INTEGER*2}, @code{INTEGER*8},
1135 and their @code{LOGICAL} equivalents.
1136 (This support works on most, maybe all, @code{gcc} targets.)
1138 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
1139 for providing the patch for this!
1141 Among the missing elements from the support for these
1142 features are full intrinsic support and constants.
1145 Add some rudimentary support for the @code{BYTE} and
1146 @code{WORD} type-declaration statements.
1147 @code{BYTE} corresponds to @code{INTEGER*1},
1148 while @code{WORD} corresponds to @code{INTEGER*2}.
1150 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
1151 for providing the patch for this!
1154 The compiler code handling intrinsics has been largely
1155 rewritten to accommodate the new types.
1156 No new intrinsics or arguments for existing
1157 intrinsics have been added, so there is, at this
1158 point, no intrinsic to convert to @code{INTEGER*8},
1162 Support automatic arrays in procedures.
1165 Reduce space/time requirements for handling large
1166 @emph{sparsely} initialized aggregate arrays.
1167 This improvement applies to only a subset of
1168 the general problem to be addressed in 0.6.
1171 Treat initial values of zero as if they weren't
1172 specified (in DATA and type-declaration statements).
1173 The initial values will be set to zero anyway, but the amount
1174 of compile time processing them will be reduced,
1175 in some cases significantly (though, again, this
1176 is only a subset of the general problem to be
1179 A new option, @samp{-fzeros}, is introduced to
1180 enable the traditional treatment of zeros as any
1184 With @samp{-ff90} in force, @code{g77} incorrectly
1185 interpreted @samp{REAL(Z)} as returning a @code{REAL}
1186 result, instead of as a @code{DOUBLE PRECISION}
1188 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
1190 With @samp{-fno-f90} in force, the interpretation remains
1191 unchanged, since this appears to be how at least some
1192 F77 code using the @code{DOUBLE COMPLEX} extension expected
1195 Essentially, @samp{REAL(Z)} in F90 is the same as
1196 @samp{DBLE(Z)}, while in extended F77, it appears to
1197 be the same as @samp{REAL(REAL(Z))}.
1200 An expression involving exponentiation, where both operands
1201 were type @code{INTEGER} and the right-hand operand
1202 was negative, was erroneously evaluated.
1205 Fix bugs involving @code{DATA} implied-@code{DO} constructs
1206 (these involved an errant diagnostic and a crash, both on good
1207 code, one involving subsequent statement-function definition).
1210 Close @code{INCLUDE} files after processing them, so compiling source
1211 files with lots of @code{INCLUDE} statements does not result in
1212 being unable to open @code{INCLUDE} files after all the available
1213 file descriptors are used up.
1216 Speed up compiling, especially of larger programs, and perhaps
1217 slightly reduce memory utilization while compiling (this is
1218 @emph{not} the improvement planned for 0.6 involving large aggregate
1219 areas)---these improvements result from simply turning
1220 off some low-level code to do self-checking that hasn't been
1221 triggered in a long time.
1224 Introduce three new options that
1225 implement optimizations in the @code{gcc} back end (GBE).
1226 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
1227 and @samp{-frerun-loop-opt}, which are enabled, by default,
1228 for Fortran compilations.
1229 These optimizations are intended to help toon Fortran programs.
1232 Patch the GBE to do a better job optimizing certain
1233 kinds of references to array elements.
1236 Due to patches to the GBE, the version number of @code{gcc}
1237 also is patched to make it easier to manage installations,
1238 especially useful if it turns out a @code{g77} change to the
1241 The @code{g77}-modified version number is the @code{gcc}
1242 version number with the string @samp{.f.@var{n}} appended,
1243 where @samp{f} identifies the version as enhanced for
1244 Fortran, and @var{n} is @samp{1} for the first Fortran
1245 patch for that version of @code{gcc}, @samp{2} for the
1248 So, this introduces version 2.7.2.f.1 of @code{gcc}.
1251 Make several improvements and fixes to diagnostics, including
1252 the removal of two that were inappropriate or inadequate.
1255 Warning about two successive arithmetic operators, produced
1256 by @samp{-Wsurprising}, now produced @emph{only} when both
1257 operators are, indeed, arithmetic (not relational/boolean).
1260 @samp{-Wsurprising} now warns about the remaining cases
1261 of using non-integral variables for implied-@code{DO}
1262 loops, instead of these being rejected unless @samp{-fpedantic}
1263 or @samp{-fugly} specified.
1266 Allow @code{SAVE} of a local variable or array, even after
1267 it has been given an initial value via @code{DATA}, for example.
1270 Introduce an Info version of @code{g77} documentation, which
1271 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
1272 @file{gcc/f/PROJECTS}.
1273 These files will be removed in a future release.
1274 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
1275 @file{gcc/f/NEWS} now are automatically built from
1276 the texinfo source when distributions are made.
1278 This effort was inspired by a first pass at translating
1279 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
1280 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
1283 New @samp{-fno-second-underscore} option to specify
1284 that, when @samp{-funderscoring} is in effect, a second
1285 underscore is not to be appended to Fortran names already
1286 containing an underscore.
1289 Change the way iterative @code{DO} loops work to follow
1291 In particular, calculation of the iteration count is
1292 still done by converting the start, end, and increment
1293 parameters to the type of the @code{DO} variable, but
1294 the result of the calculation is always converted to
1295 the default @code{INTEGER} type.
1297 (This should have no effect on existing code compiled
1298 by @code{g77}, but code written to assume that use
1299 of a @emph{wider} type for the @code{DO} variable
1300 will result in an iteration count being fully calculated
1301 using that wider type (wider
1302 than default @code{INTEGER}) must be rewritten.)
1305 Support @code{gcc} version 2.7.2.
1308 Upgrade to @code{libf2c} as of 1996-03-23, and
1309 fix up some of the build procedures.
1311 Note that the email addresses related to @code{f2c}
1312 have changed---the distribution site now is
1313 named @code{netlib.bell-labs.com}, and the
1314 maintainer's new address is @email{dmg@@bell-labs.com}.
1320 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
1321 system's @file{/dev/null} special file if run by user @samp{root}.
1323 @strong{All users} of version 0.5.16 should ensure that
1324 they have not removed @file{/dev/null} or replaced it with an ordinary
1325 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
1326 @samp{ls -l /dev/zero}.
1327 If the output isn't basically the
1328 same, contact your system
1329 administrator about restoring @file{/dev/null} to its proper status).
1331 This bug is particularly insidious because removing @file{/dev/null} as
1332 a special file can go undetected for quite a while, aside from
1333 various applications and programs exhibiting sudden, strange
1336 I sincerely apologize for not realizing the
1337 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
1338 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
1339 it is supposed to build (especially if it reports unresolved
1340 references, which it should in this case)!
1343 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
1346 Fix crash that can occur when diagnostics given outside of any
1347 program unit (such as when input file contains @samp{@@foo}).
1350 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
1353 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
1354 and issue clearer error message in cases where target of @code{ASSIGN}
1355 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
1359 Make @code{libf2c} build procedures work on more systems again by
1360 eliminating unnecessary invocations of @samp{ld -r -x} and @samp{mv}.
1363 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
1364 options to compiler.
1367 Fix failure to always diagnose missing type declaration for
1368 @code{IMPLICIT NONE}.
1371 Fix compile-time performance problem (which could sometimes
1372 crash the compiler, cause a hang, or whatever, due to a bug
1373 in the back end) involving exponentiation with a large @code{INTEGER}
1374 constant for the right-hand operator (e.g. @samp{I**32767}).
1377 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
1378 utility in particular) is properly built using the host compiler.
1381 Add new @samp{-Wsurprising} option to warn about constructs that are
1382 interpreted by the Fortran standard (and @code{g77}) in ways that
1383 are surprising to many programmers.
1386 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
1387 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
1389 @emph{Note:} You should
1390 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
1391 these as generic intrinsics, to improve likelihood of diagnostics
1392 (instead of subtle run-time bugs) when using a compiler that
1393 doesn't support these as intrinsics (e.g. @code{f2c}).
1396 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
1397 with non-@code{INTEGER} index variable; issue that under
1398 @samp{-Wsurprising} instead.
1401 Clarify some diagnostics that say things like ``ignored'' when that's
1405 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
1409 Minor improvements to code generation for various operations on
1410 @code{LOGICAL} operands.
1413 Minor improvement to code generation for some @code{DO} loops on some
1417 Support @code{gcc} version 2.7.1.
1420 Upgrade to @code{libf2c} as of 1995-11-15.
1426 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
1427 not involving @code{COMMON}.
1430 Fix code-generation bugs involving invoking ``gratis'' library procedures
1431 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
1432 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
1433 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
1434 @code{DERF()}, and @code{DERFC()}.
1437 Update @code{libf2c} to include netlib patches through 1995-08-16, and
1438 @code{#define} @samp{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
1439 consistent with other Fortran implementations by outputting
1440 leading zeros in formatted and list-directed output.
1443 Fix a code-generation bug involving adjustable dummy arrays with high
1444 bounds whose primaries are changed during procedure execution, and
1445 which might well improve code-generation performance for such arrays
1446 compared to @code{f2c} plus @code{gcc} (but apparently only when using
1447 @file{gcc-2.7.0} or later).
1450 Fix a code-generation bug involving invocation of @code{COMPLEX} and
1451 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
1452 @code{DOUBLE COMPLEX} divides, when the result
1453 of the invocation or divide is assigned directly to a variable
1454 that overlaps one or more of the arguments to the invocation or divide.
1457 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
1458 nonconstant and the expression is used to dimension a dummy
1459 array, since the @code{gcc} back end does not support the necessary
1460 mechanics (and the @code{gcc} front end rejects the equivalent
1461 construct, as it turns out).
1464 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
1467 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
1468 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
1471 Fix crashes and such involving diagnosed code.
1474 Diagnose, instead of crashing on, statement function definitions
1475 having duplicate dummy argument names.
1478 Fix bug causing rejection of good code involving statement function
1482 Fix bug resulting in debugger not knowing size of local equivalence
1483 area when any member of area has initial value (via @code{DATA},
1487 Fix installation bug that prevented installation of @code{g77} driver.
1488 Provide for easy selection of whether to install copy of @code{g77}
1489 as @code{f77} to replace the broken code.
1492 Fix @code{gcc} driver (affects @code{g77} thereby) to not
1493 gratuitously invoke the
1494 @code{f771} program (e.g. when @samp{-E} is specified).
1497 Fix diagnostic to point to correct source line when it immediately
1498 follows an @code{INCLUDE} statement.
1501 Support more compiler options in @code{gcc}/@code{g77} when
1502 compiling Fortran files.
1503 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
1504 correct setting of version-number macros for preprocessing, full
1505 recognition of @samp{-O0}, and
1506 automatic insertion of configuration-specific linker specs.
1509 Add new intrinsics that interface to existing routines in @code{libf2c}:
1510 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
1511 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
1512 @code{SIGNAL}, and @code{SYSTEM}.
1513 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
1514 @code{SYSTEM} are intrinsic subroutines, not functions (since they
1515 have side effects), so to get the return values from @code{SIGNAL}
1516 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
1517 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
1520 Add new intrinsic group named @samp{unix} to contain the new intrinsics,
1521 and by default enable this new group.
1524 Move @code{LOC()} intrinsic out of the @samp{vxt} group to the new
1528 Improve @code{g77} so that @samp{g77 -v} by itself (or with
1529 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
1530 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
1531 version info, and so that long-form options @code{gcc} accepts are
1532 understood by @code{g77} as well (even in truncated, unambiguous forms).
1535 Add new @code{g77} option @samp{--driver=name} to specify driver when
1536 default, @code{gcc}, isn't appropriate.
1539 Add support for @samp{#} directives (as output by the preprocessor) in the
1540 compiler, and enable generation of those directives by the
1541 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
1542 info are more useful to users of the preprocessor.
1545 Produce better diagnostics, more like @code{gcc}, with info such as
1546 @samp{In function `foo':} and @samp{In file included from...:}.
1549 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
1552 When @samp{-Wunused} in effect, don't warn about local variables used as
1553 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
1554 variables, even though, strictly speaking, these are not uses
1555 of the variables themselves.
1558 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
1559 at all, since there's no way to turn this off for individual
1560 cases (@code{g77} might someday start warning about these)---applies
1561 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
1562 warn about unused dummy arguments.
1565 New option @samp{-fno-underscoring} that inhibits transformation of names
1566 (by appending one or two underscores) so users may experiment
1567 with implications of such an environment.
1570 Minor improvement to @file{gcc/f/info} module to make it easier to build
1571 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
1572 (but definitely not all machines nor all non-@code{gcc} compilers).
1574 do not report bugs showing problems compilers have with
1575 macros defined in @file{gcc/f/target.h} and used in places like
1576 @file{gcc/f/expr.c}.
1579 Add warning to be printed for each invocation of the compiler
1580 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
1582 since @code{g77} is known to not work well for such cases (to be
1583 fixed in Version 0.6---@pxref{Actual Bugs,,Actual Bugs We Haven't Fixed Yet}).
1586 Lots of new documentation (though work is still needed to put it into
1587 canonical GNU format).
1590 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
1591 (by default), to produce
1592 smaller library without lots of debugging clutter.
1598 Fix bad code generation involving @samp{X**I} and temporary, internal variables
1599 generated by @code{g77} and the back end (such as for @code{DO} loops).
1602 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
1605 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
1608 Fix crash or other erratic behavior when null character constant
1609 (@samp{''}) is encountered.
1612 Fix crash or other erratic behavior involving diagnosed code.
1615 Fix code generation for external functions returning type @code{REAL} when
1616 the @samp{-ff2c} option is in force (which it is by default) so that
1617 @code{f2c} compatibility is indeed provided.
1620 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
1621 with an array declarator.
1624 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
1626 of a typical fixed-form line, defaulting to 72 columns, such
1627 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
1628 meaning no characters are ignored.
1629 does not affect lines
1630 with @samp{&} in column 1, which are always processed as if
1631 @samp{-ffixed-line-length-none} was in effect.
1634 No longer generate better code for some kinds of array references,
1635 as @code{gcc} back end is to be fixed to do this even better, and it
1636 turned out to slow down some code in some cases after all.
1639 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
1640 values (e.g. via @code{DATA}), uninitialized members now always
1641 initialized to binary zeros (though this is not required by
1642 the standard, and might not be done in future versions
1644 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
1645 (essentially those with members of more than one type), the
1646 uninitialized members were initialized to spaces, to
1647 cater to @code{CHARACTER} types, but it seems no existing code expects
1648 that, while much existing code expects binary zeros.
1654 Don't emit bad code when low bound of adjustable array is nonconstant
1655 and thus might vary as an expression at run time.
1658 Emit correct code for calculation of number of trips in @code{DO} loops
1660 where the loop should not execute at all.
1661 (This bug affected cases
1662 where the difference between the begin and end values was less
1663 than the step count, though probably not for floating-point cases.)
1666 Fix crash when extra parentheses surround item in
1667 @code{DATA} implied-@code{DO} list.
1670 Fix crash over minor internal inconsistencies in handling diagnostics,
1671 just substitute dummy strings where necessary.
1674 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
1677 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
1678 is a string of one or more digits.
1681 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
1684 Fix various crashes involving code with diagnosed errors.
1687 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
1688 @file{header.gcc} facility for handling systems like MS-DOS.
1691 Allow @code{INCLUDE} statement to be continued across multiple lines,
1692 even allow it to coexist with other statements on the same line.
1695 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
1696 fixes a bug involving infinite loops reading EOF with empty list-directed
1700 Remove all the @code{g77}-specific auto-configuration scripts, code,
1702 except for temporary substitutes for bsearch() and strtoul(), as
1703 too many configure/build problems were reported in these areas.
1704 People will have to fix their systems' problems themselves, or at
1705 least somewhere other than @code{g77}, which expects a working ANSI C
1706 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
1709 Complain if initialized common redeclared as larger in subsequent program
1713 Warn if blank common initialized, since its size can vary and hence
1714 related warnings that might be helpful won't be seen.
1717 New @samp{-fbackslash} option, on by default, that causes @samp{\}
1718 within @code{CHARACTER}
1719 and Hollerith constants to be interpreted a la GNU C.
1721 this behavior is somewhat different from @code{f2c}'s, which supports only
1722 a limited subset of backslash (escape) sequences.
1725 Make @samp{-fugly-args} the default.
1728 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
1729 to be specified as initial values for variables or named constants
1730 (@code{PARAMETER}), and also allows character<->numeric conversion in
1731 those contexts---turn off via @samp{-fno-ugly-init}.
1734 New @samp{-finit-local-zero} option to initialize
1735 local variables to binary zeros.
1736 This does not affect whether they are @code{SAVE}d, i.e. made
1737 automatic or static.
1740 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
1742 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
1745 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
1746 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
1747 requires @samp{-O}), and implies @samp{-Wunused} as well.
1750 @samp{-Wunused} no longer gives spurious messages for unused
1751 @code{EXTERNAL} names (since they are assumed to refer to block data
1752 program units, to make use of libraries more reliable).
1755 Support @code{%LOC()} and @code{LOC()} of character arguments.
1758 Support null (zero-length) character constants and expressions.
1761 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
1764 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
1765 character expressions that are valid in assignments but
1766 not normally as actual arguments.
1769 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
1772 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
1773 in @code{BLOCK DATA}, even though these are not allowed by the standard.
1776 Allow @code{RETURN} in main program unit.
1779 Changes to Hollerith-constant support to obey Appendix C of the
1784 Now padded on the right with zeros, not spaces.
1787 Hollerith ``format specifications'' in the form of arrays of
1788 non-character allowed.
1791 Warnings issued when non-space truncation occurs when converting
1795 When specified as actual argument, now passed
1796 by reference to @code{INTEGER} (padded on right with spaces if constant
1797 too small, otherwise fully intact if constant wider the @code{INTEGER}
1798 type) instead of by value.
1801 @strong{Warning:} @code{f2c} differs on the
1802 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
1803 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
1804 as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary
1805 to widen to @code{INTEGER}), essentially.
1808 Changes and fixes to typeless-constant support:
1812 Now treated as a typeless double-length @code{INTEGER} value.
1815 Warnings issued when overflow occurs.
1818 Padded on the left with zeros when converting
1822 Should be properly aligned and ordered on
1823 the target machine for whatever type it is turned into.
1826 When specified as actual argument, now passed as reference to
1827 a default @code{INTEGER} constant.
1831 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
1832 the expression plus a length for the expression just as if
1833 it were a @code{CHARACTER} expression.
1834 For example, @samp{CALL FOO(%DESCR(D))}, where
1835 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
1838 Name of multi-entrypoint master function changed to incorporate
1839 the name of the primary entry point instead of a decimal
1840 value, so the name of the master function for @samp{SUBROUTINE X}
1841 with alternate entry points is now @samp{__g77_masterfun_x}.
1844 Remove redundant message about zero-step-count @code{DO} loops.
1847 Clean up diagnostic messages, shortening many of them.
1850 Fix typo in @code{g77} man page.
1853 Clarify implications of constant-handling bugs in @file{f/BUGS}.
1856 Generate better code for @samp{**} operator with a right-hand operand of
1857 type @code{INTEGER}.
1860 Generate better code for @code{SQRT()} and @code{DSQRT()},
1861 also when @samp{-ffast-math}
1862 specified, enable better code generation for @code{SIN()} and @code{COS()}.
1865 Generate better code for some kinds of array references.
1868 Speed up lexing somewhat (this makes the compilation phase noticeably