1 @c Copyright (C) 1995-1999 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 NEWS
6 @c in the G77 distribution, as well as in the G77 manual.
8 @c Keep this the same as the dates above, since it's used
9 @c in the standalone derivations of this file (e.g. NEWS).
10 @set copyrights-news 1995-1999
12 @set last-update-news 1999-06-18
17 @c The immediately following lines apply to the NEWS file
18 @c which is derived from this file.
19 @emph{Note:} This file is automatically generated from the files
20 @file{news0.texi} and @file{news.texi}.
21 @file{NEWS} is @emph{not} a source file,
22 although it is normally included within source distributions.
24 This file lists news about the @value{which-g77} version
25 (and some other versions) of the GNU Fortran compiler.
26 Copyright (C) @value{copyrights-news} Free Software Foundation, Inc.
27 You may copy, distribute, and modify it freely as long as you preserve
28 this copyright notice and permission notice.
31 @chapter News About GNU Fortran
37 @chapter User-visible Changes
38 @cindex versions, recent
39 @cindex recent versions
40 @cindex changes, user-visible
41 @cindex user-visible changes
43 This chapter describes changes to @code{g77} that are visible
44 to the programmers who actually write and maintain Fortran
45 code they compile with @code{g77}.
46 Information on changes to installation procedures,
47 changes to the documentation, and bug fixes is
48 not provided here, unless it is likely to affect how
50 @xref{News,,News About GNU Fortran}, for information on
51 such changes to @code{g77}.
56 @chapter News About GNU Fortran
57 @cindex versions, recent
58 @cindex recent versions
63 Changes made to recent versions of GNU Fortran are listed
64 below, with the most recent version first.
66 The changes are generally listed in order:
70 Code-generation and run-time-library bug-fixes
73 Compiler and run-time-library crashes involving valid code
80 Fixes and enhancements to existing features
92 This order is not strict---for example, some items
93 involve a combination of these elements.
96 Note that two variants of @code{g77} are tracked below.
97 The @code{egcs} variant is described vis-a-vis
98 previous versions of @code{egcs} and/or
99 an official FSF version,
102 Therefore, @code{egcs} versions sometimes have multiple listings
103 to help clarify how they differ from other versions,
104 though this can make getting a complete picture
105 of what a particular @code{egcs} version contains
106 somewhat more difficult.
109 For information on bugs in the @value{which-g77} version of @code{g77},
110 see @ref{Known Bugs,,Known Bugs In GNU Fortran}.
114 For information on bugs in the @value{which-g77} version of @code{g77},
115 see @file{@value{path-g77}/BUGS}.
119 @emph{Warning:} The information below is still under development,
120 and might not accurately reflect the @code{g77} code base
121 of which it is a part.
122 Efforts are made to keep it somewhat up-to-date,
123 but they are particularly concentrated
124 on any version of this information
125 that is distributed as part of a @emph{released} @code{g77}.
127 In particular, while this information is intended to apply to
128 the @value{which-g77} version of @code{g77},
129 only an official @emph{release} of that version
130 is expected to contain documentation that is
131 most consistent with the @code{g77} product in that version.
133 Nevertheless, information on @emph{previous} releases of @code{g77}, below,
134 is likely to be more up-to-date and accurate
135 than the equivalent information that accompanied
137 assuming the last-updated date of the information below
138 is later than the dates of those releases.
140 That's due to attempts to keep this development version
141 of news about previous @code{g77} versions up-to-date.
145 An online, ``live'' version of this document
146 (derived directly from the mainline, development version
147 of @code{g77} within @code{egcs})
149 @uref{http://egcs.cygnus.com/onlinedocs/g77_news.html}.
152 The following information was last updated on @value{last-update-news}:
154 @heading In development:
158 Upgrade to @code{libf2c} as of 1999-06-18.
162 @heading In 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 1.1.2:
166 @code{g77} no longer generates bad code for assignments,
167 or other conversions,
168 of @code{REAL} or @code{COMPLEX} constant expressions
169 to type @code{INTEGER(KIND=2)}
170 (often referred to as @code{INTEGER*8}).
172 For example, @samp{INTEGER*8 J; J = 4E10} now works as documented.
177 @code{g77} no longer truncates @code{INTEGER(KIND=2)}
178 (usually @code{INTEGER*8})
179 subscript expressions when evaluating array references
180 on systems with pointers widers than @code{INTEGER(KIND=1)}
186 @code{g77} no longer generates bad code
187 for an assignment to a @code{COMPLEX} variable or array
188 that partially overlaps one or more of the sources
189 of the same assignment
190 (a very rare construction).
191 It now assigns through a temporary,
192 in cases where such partial overlap is deemed possible.
197 @code{libg2c} (@code{libf2c}) no longer loses track
198 of the file being worked on
199 during a @code{BACKSPACE} operation.
204 @c Tim Prince reported this, regarding the TEST_FPU benchmark.
205 Automatic arrays now seem to be working on HP-UX systems.
210 Fix @code{g77} so it no longer crashes when compiling
211 I/O statements using keywords that define @code{INTEGER} values,
212 such as @samp{IOSTAT=@var{j}},
213 where @var{j} is other than default @code{INTEGER}
214 (such as @code{INTEGER*2}).
215 Instead, it issues a diagnostic.
220 Fix @code{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/},
221 where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2},
222 instead of producing a spurious diagnostic.
223 Also fix @samp{DATA (A(I),I=1,N)},
224 where @samp{N} is not default @code{INTEGER}
225 to work instead of crashing @code{g77}.
230 The @samp{-ax} option is now obeyed when compiling Fortran programs.
231 (It is passed to the @file{f771} driver.)
235 The new @samp{-fbounds-check} option
236 causes @code{g77} to compile run-time bounds checks
237 of array subscripts, as well as of substring start and end points.
240 @code{libg2c} now supports building as multilibbed library,
241 which provides better support for systems
242 that require options such as @samp{-mieee}
246 Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
247 now are recognized by @code{g77}
248 as if they ended in @samp{.for} and @samp{.fpp}, respectively.
251 The order of arguments to the @emph{subroutine} forms of the
252 @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam}
253 intrinsics has been swapped.
254 The argument serving as the returned value
255 for the corresponding function forms
256 now is the @emph{second} argument,
257 making these consistent with the other subroutine forms
258 of @code{libU77} intrinsics.
261 @code{g77} now warns about a reference to an intrinsic
262 that has an interface that is not Year 2000 (Y2K) compliant.
263 Also, @code{libg2c} has been changed to increase the likelihood
264 of catching references to the implementations of these intrinsics
265 using the @code{EXTERNAL} mechanism
266 (which would avoid the new warnings).
269 @xref{Year 2000 (Y2K) Problems}, for more information.
274 @code{g77} now warns about a reference to a function
275 when the corresponding @emph{subsequent} function program unit
276 disagrees with the reference concerning the type of the function.
280 @samp{-fno-emulate-complex} is now the default option.
281 This should result in improved performance
282 of code that uses the @code{COMPLEX} data type.
285 @cindex double-precision performance
286 @cindex -malign-double
288 The @samp{-malign-double} option
289 now reliably aligns @emph{all} double-precision variables and arrays
290 on Intel x86 targets.
294 Even without the @samp{-malign-double} option,
295 @code{g77} reliably aligns local double-precision variables
296 that are not in @code{EQUIVALENCE} areas
297 and not @code{SAVE}'d.
302 @code{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands
303 instead of generating a run-time call to
304 the @code{libf2c} routines @code{c_div} or @code{z_div},
305 unless the @samp{-Os} option is specified.
309 @code{g77} no longer generates code to maintain @code{errno},
310 a C-language concept,
311 when performing operations such as the @code{SqRt} intrinsic.
315 @code{g77} developers can temporarily use
316 the @samp{-fflatten-arrays} option
317 to compare how the compiler handles code generation
318 using C-like constructs as compared to the
319 Fortran-like method constructs normally used.
324 A substantial portion of the @code{g77} front end's code-generation component
326 It now generates code using facilities more robustly supported
327 by the @code{gcc} back end.
328 One effect of this rewrite is that some codes no longer produce
329 a spurious ``label @var{lab} used before containing binding contour''
334 Support for the @samp{-fugly} option has been removed.
338 Improve documentation and indexing,
339 including information on Year 2000 (Y2K) compliance,
340 and providing more information on internals of the front end.
345 Upgrade to @code{libf2c} as of 1999-05-10.
349 @heading In 0.5.24 versus 0.5.23:
351 There is no @code{g77} version 0.5.24 at this time,
353 0.5.24 is the version number designated for bug fixes and,
354 perhaps, some new features added,
356 Version 0.5.23 requires @code{gcc} 2.8.1,
357 as 0.5.24 was planned to require.
359 Due to @code{EGCS} becoming @code{GCC}
360 (which is now an acronym for ``GNU Compiler Collection''),
361 and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95,
362 there seems to be no need for an actual 0.5.24 release.
364 To reduce the confusion already resulting from use of 0.5.24
365 to designate @code{g77} versions within @code{EGCS} versions 1.0 and 1.1,
366 as well as in versions of @code{g77} documentation and notices
368 ``mainline'' @code{g77} version numbering resumes
369 at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2),
370 skipping over 0.5.24 as a placeholder version number.
372 To repeat, there is no @code{g77} 0.5.24, but there is now a 0.5.25.
373 Please remain calm and return to your keypunch units.
375 @c 1999-03-15: EGCS 1.1.2 released.
376 @heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1:
380 Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
381 so the returned year is in the documented, non-Y2K-compliant range
383 instead of being returned as 100 in the year 2000.
386 @xref{IDate Intrinsic (VXT)},
387 for more information.
391 Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
392 to return the milliseconds value properly
396 Fix the @code{LStat} intrinsic (in @code{libg2c})
397 to return device-ID information properly
401 Improve documentation.
405 @c 1998-12-04: EGCS 1.1.1 released.
406 @heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1:
410 Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation
412 whenever a @code{REWIND} is done.
414 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
415 @code{g77}'s version of @code{libf2c}.)
418 Fix @code{libg2c} so it no longer crashes with a spurious diagnostic
419 upon doing any I/O following a direct formatted write.
421 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
422 @code{g77}'s version of @code{libf2c}.)
425 Fix @code{g77} so it no longer crashes compiling references
426 to the @code{Rand} intrinsic on some systems.
429 Fix @code{g77} portion of installation process so it works
430 better on some systems
431 (those with shells requiring @samp{else true} clauses
432 on @code{if} constructs
433 for the completion code to be set properly).
437 @c 1998-09-03: EGCS 1.1 released.
438 @heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3:
442 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
443 that wrote one byte beyond the end of its @code{CHARACTER}
445 and in the @code{libU77} intrinsics
446 @code{GMTime} and @code{LTime}
447 that overwrote their arguments.
452 Assumed arrays with negative bounds
453 (such as @samp{REAL A(-1:*)})
454 no longer elicit spurious diagnostics from @code{g77},
455 even on systems with pointers having
456 different sizes than integers.
458 This bug is not known to have existed in any
459 recent version of @code{gcc}.
460 It was introduced in an early release of @code{egcs}.
465 Valid combinations of @code{EXTERNAL},
466 passing that external as a dummy argument
467 without explicitly giving it a type,
468 and, in a subsequent program unit,
469 referencing that external as
470 an external function with a different type
471 no longer crash @code{g77}.
476 @code{CASE DEFAULT} no longer crashes @code{g77}.
481 The @samp{-Wunused} option no longer issues a spurious
482 warning about the ``master'' procedure generated by
483 @code{g77} for procedures containing @code{ENTRY} statements.
487 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
488 compile-time constant @code{INTEGER} expression.
491 Fix @code{g77} @samp{-g} option so procedures that
492 use @code{ENTRY} can be stepped through, line by line,
496 Allow any @code{REAL} argument to intrinsics
497 @code{Second} and @code{CPU_Time}.
500 Use @code{tempnam}, if available, to open scratch files
501 (as in @samp{OPEN(STATUS='SCRATCH')})
502 so that the @code{TMPDIR} environment variable,
506 @code{g77}'s version of @code{libf2c} separates out
507 the setting of global state
508 (such as command-line arguments and signal handling)
509 from @file{main.o} into distinct, new library
512 This should make it easier to write portable applications
513 that have their own (non-Fortran) @code{main()} routine
514 properly set up the @code{libf2c} environment, even
515 when @code{libf2c} (now @code{libg2c}) is a shared library.
519 @code{g77} no longer installs the @file{f77} command
520 and @file{f77.1} man page
521 in the @file{/usr} or @file{/usr/local} heirarchy,
522 even if the @file{f77-install-ok} file exists
523 in the source or build directory.
524 See the installation documentation for more information.
529 @code{g77} no longer installs the @file{libf2c.a} library
530 and @file{f2c.h} include file
531 in the @file{/usr} or @file{/usr/local} heirarchy,
532 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
533 in the source or build directory.
534 See the installation documentation for more information.
539 The @file{libf2c.a} library produced by @code{g77} has been
540 renamed to @file{libg2c.a}.
541 It is installed only in the @code{gcc} ``private''
542 directory heirarchy, @file{gcc-lib}.
543 This allows system administrators and users to choose which
544 version of the @code{libf2c} library from @code{netlib} they
545 wish to use on a case-by-case basis.
546 See the installation documentation for more information.
551 The @file{f2c.h} include (header) file produced by @code{g77}
552 has been renamed to @file{g2c.h}.
553 It is installed only in the @code{gcc} ``private''
554 directory heirarchy, @file{gcc-lib}.
555 This allows system administrators and users to choose which
556 version of the include file from @code{netlib} they
557 wish to use on a case-by-case basis.
558 See the installation documentation for more information.
562 The @code{g77} command now expects the run-time library
563 to be named @code{libg2c.a} instead of @code{libf2c.a},
564 to ensure that a version other than the one built and
565 installed as part of the same @code{g77} version is picked up.
569 During the configuration and build process,
570 @code{g77} creates subdirectories it needs only as it
572 Other cleaning up of the configuration and build process
573 has been performed as well.
578 @code{install-info} now used to update the directory of
579 Info documentation to contain an entry for @code{g77}
580 (during installation).
584 Some diagnostics have been changed from warnings to errors,
585 to prevent inadvertent use of the resulting, probably buggy,
587 These mostly include diagnostics about use of unsupported features
588 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
589 @code{WRITE} statements,
590 and about truncations of various sorts of constants.
594 Improve compilation of @code{FORMAT} expressions so that
595 a null byte is appended to the last operand if it
597 This provides a cleaner run-time diagnostic as provided
598 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
603 Improve documentation and indexing.
608 The upgrade to @code{libf2c} as of 1998-06-18
609 should fix a variety of problems, including
610 those involving some uses of the @code{T} format
611 specifier, and perhaps some build (porting) problems
616 @c 1998-09-03: EGCS 1.1 released.
617 @heading In @code{EGCS} 1.1 versus @code{g77} 0.5.23:
621 @cindex stack, 387 coprocessor
625 Fix a code-generation bug that afflicted
626 Intel x86 targets when @samp{-O2} was specified
627 compiling, for example, an old version of
628 the @code{DNRM2} routine.
630 The x87 coprocessor stack was being
631 mismanaged in cases involving assigned @code{GOTO}
637 @code{g77} no longer produces incorrect code
639 for @code{EQUIVALENCE} and @code{COMMON}
640 aggregates that, due to ``unnatural'' ordering of members
641 vis-a-vis their types, require initial padding.
646 Fix @code{g77} crash compiling code
647 containing the construct @samp{CMPLX(0.)} or similar.
652 @code{g77} no longer crashes when compiling code
653 containing specification statements such as
654 @samp{INTEGER(KIND=7) PTR}.
659 @code{g77} no longer crashes when compiling code
660 such as @samp{J = SIGNAL(1, 2)}.
664 @code{g77} now treats @samp{%LOC(@var{expr})} and
665 @samp{LOC(@var{expr})} as ``ordinary'' expressions
666 when they are used as arguments in procedure calls.
667 This change applies only to global (filewide) analysis,
668 making it consistent with
669 how @code{g77} actually generates code
672 Previously, @code{g77} treated these expressions
673 as denoting special ``pointer'' arguments
674 for the purposes of filewide analysis.
679 (or apparently infinite run-time)
680 when compiling certain complicated expressions
681 involving @code{COMPLEX} arithmetic
682 (especially multiplication).
686 @cindex double-precision performance
687 @cindex -malign-double
689 Align static double-precision variables and arrays
691 regardless of whether @samp{-malign-double} is specified.
693 Generally, this affects only local variables and arrays
694 having the @code{SAVE} attribute
695 or given initial values via @code{DATA}.
698 The @code{g77} driver now ensures that @samp{-lg2c}
699 is specified in the link phase prior to any
700 occurrence of @samp{-lm}.
701 This prevents accidentally linking to a routine
702 in the SunOS4 @samp{-lm} library
703 when the generated code wants to link to the one
704 in @code{libf2c} (@code{libg2c}).
707 @code{g77} emits more debugging information when
710 This new information allows, for example,
711 @kbd{which __g77_length_a} to be used in @code{gdb}
712 to determine the type of the phantom length argument
713 supplied with @code{CHARACTER} variables.
715 This information pertains to internally-generated
716 type, variable, and other information,
717 not to the longstanding deficiencies vis-a-vis
718 @code{COMMON} and @code{EQUIVALENCE}.
721 The F90 @code{Date_and_Time} intrinsic now is
725 The F90 @code{System_Clock} intrinsic allows
726 the optional arguments (except for the @code{Count}
727 argument) to be omitted.
731 Upgrade to @code{libf2c} as of 1998-06-18.
736 Improve documentation and indexing.
741 @heading In previous versions:
743 Information on previous versions is not provided
744 in this @file{@value{path-g77}/NEWS} file,
746 See @file{@value{path-g77}/news.texi},
747 or any of its other derivations
748 (Info, HTML, dvi forms)
749 for such information.
753 @c 1998-05-20: 0.5.23 released.
754 @heading In 0.5.23 versus 0.5.22:
757 This release contains several regressions against
758 version 0.5.22 of @code{g77}, due to using the
759 ``vanilla'' @code{gcc} back end instead of patching
760 it to fix a few bugs and improve performance in a
763 Features that have been dropped from this version
764 of @code{g77} due to their being implemented
765 via @code{g77}-specific patches to the @code{gcc}
766 back end in previous releases include:
770 Support for @code{__restrict__} keyword,
771 the options @samp{-fargument-alias}, @samp{-fargument-noalias},
772 and @samp{-fargument-noalias-global},
773 and the corresponding alias-analysis code.
775 (@code{egcs} has the alias-analysis
776 code, but not the @code{__restrict__} keyword.
777 @code{egcs} @code{g77} users benefit from the alias-analysis
778 code despite the lack of the @code{__restrict__} keyword,
779 which is a C-language construct.)
782 Support for the GNU compiler options
783 @samp{-fmove-all-movables},
784 @samp{-freduce-all-givs},
785 and @samp{-frerun-loop-opt}.
787 (@code{egcs} supports these options.
788 @code{g77} users of @code{egcs} benefit from them even if
789 they are not explicitly specified,
790 because the defaults are optimized for @code{g77} users.)
793 Support for the @samp{-W} option warning about
794 integer division by zero.
797 The Intel x86-specific option @samp{-malign-double}
798 applying to stack-allocated data
799 as well as statically-allocate data.
803 Note that the @file{gcc/f/gbe/} subdirectory has been removed
804 from this distribution as a result of @code{g77} no longer
805 including patches for the @code{gcc} back end.
810 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
811 that wrote one byte beyond the end of its @code{CHARACTER}
813 and in the @code{libU77} intrinsics
814 @code{GMTime} and @code{LTime}
815 that overwrote their arguments.
819 Support @code{gcc} version 2.8,
820 and remove support for prior versions of @code{gcc}.
822 @cindex -@w{}-driver option
823 @cindex @code{g77} options, -@w{}-driver
824 @cindex options, -@w{}-driver
826 Remove support for the @samp{--driver} option,
827 as @code{g77} now does all the driving,
828 just like @code{gcc}.
832 @code{CASE DEFAULT} no longer crashes @code{g77}.
837 Valid combinations of @code{EXTERNAL},
838 passing that external as a dummy argument
839 without explicitly giving it a type,
840 and, in a subsequent program unit,
841 referencing that external as
842 an external function with a different type
843 no longer crash @code{g77}.
848 @code{g77} no longer installs the @file{f77} command
849 and @file{f77.1} man page
850 in the @file{/usr} or @file{/usr/local} heirarchy,
851 even if the @file{f77-install-ok} file exists
852 in the source or build directory.
853 See the installation documentation for more information.
858 @code{g77} no longer installs the @file{libf2c.a} library
859 and @file{f2c.h} include file
860 in the @file{/usr} or @file{/usr/local} heirarchy,
861 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
862 in the source or build directory.
863 See the installation documentation for more information.
868 The @file{libf2c.a} library produced by @code{g77} has been
869 renamed to @file{libg2c.a}.
870 It is installed only in the @code{gcc} ``private''
871 directory heirarchy, @file{gcc-lib}.
872 This allows system administrators and users to choose which
873 version of the @code{libf2c} library from @code{netlib} they
874 wish to use on a case-by-case basis.
875 See the installation documentation for more information.
880 The @file{f2c.h} include (header) file produced by @code{g77}
881 has been renamed to @file{g2c.h}.
882 It is installed only in the @code{gcc} ``private''
883 directory heirarchy, @file{gcc-lib}.
884 This allows system administrators and users to choose which
885 version of the include file from @code{netlib} they
886 wish to use on a case-by-case basis.
887 See the installation documentation for more information.
891 The @code{g77} command now expects the run-time library
892 to be named @code{libg2c.a} instead of @code{libf2c.a},
893 to ensure that a version other than the one built and
894 installed as part of the same @code{g77} version is picked up.
898 The @samp{-Wunused} option no longer issues a spurious
899 warning about the ``master'' procedure generated by
900 @code{g77} for procedures containing @code{ENTRY} statements.
904 @code{g77}'s version of @code{libf2c} separates out
905 the setting of global state
906 (such as command-line arguments and signal handling)
907 from @file{main.o} into distinct, new library
910 This should make it easier to write portable applications
911 that have their own (non-Fortran) @code{main()} routine
912 properly set up the @code{libf2c} environment, even
913 when @code{libf2c} (now @code{libg2c}) is a shared library.
917 During the configuration and build process,
918 @code{g77} creates subdirectories it needs only as it
919 needs them, thus avoiding unnecessary creation of, for example,
920 @file{stage1/f/runtime} when doing a non-bootstrap build.
921 Other cleaning up of the configuration and build process
922 has been performed as well.
927 @code{install-info} now used to update the directory of
928 Info documentation to contain an entry for @code{g77}
929 (during installation).
933 Some diagnostics have been changed from warnings to errors,
934 to prevent inadvertent use of the resulting, probably buggy,
936 These mostly include diagnostics about use of unsupported features
937 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
938 @code{WRITE} statements,
939 and about truncations of various sorts of constants.
943 Improve documentation and indexing.
948 Upgrade to @code{libf2c} as of 1998-04-20.
950 This should fix a variety of problems, including
951 those involving some uses of the @code{T} format
952 specifier, and perhaps some build (porting) problems
957 @c 1998-03-16: 0.5.22 released.
958 @heading In 0.5.22 versus 0.5.21:
962 Fix code generation for iterative @code{DO} loops that
963 have one or more references to the iteration variable,
964 or to aliases of it, in their control expressions.
965 For example, @samp{DO 10 J=2,J} now is compiled correctly.
970 @cindex stack, 387 coprocessor
974 Fix a code-generation bug that afflicted
975 Intel x86 targets when @samp{-O2} was specified
976 compiling, for example, an old version of
977 the @code{DNRM2} routine.
979 The x87 coprocessor stack was being
980 mismanaged in cases involving assigned @code{GOTO}
986 Fix @code{DTime} intrinsic so as not to truncate
987 results to integer values (on some systems).
991 Fix @code{Signal} intrinsic so it offers portable
992 support for 64-bit systems (such as Digital Alphas
997 Fix run-time crash involving @code{NAMELIST} on 64-bit
998 machines such as Alphas.
1001 @ifclear USERVISONLY
1003 Fix @code{g77} version of @code{libf2c} so it no longer
1004 produces a spurious @samp{I/O recursion} diagnostic at run time
1005 when an I/O operation (such as @samp{READ *,I}) is interrupted
1006 in a manner that causes the program to be terminated
1007 via the @code{f_exit} routine (such as via @kbd{C-c}).
1010 @ifclear USERVISONLY
1012 Fix @code{g77} crash triggered by @code{CASE} statement with
1013 an omitted lower or upper bound.
1016 @ifclear USERVISONLY
1018 Fix @code{g77} crash compiling references to @code{CPU_Time}
1022 @ifclear USERVISONLY
1024 Fix @code{g77} crash
1025 (or apparently infinite run-time)
1026 when compiling certain complicated expressions
1027 involving @code{COMPLEX} arithmetic
1028 (especially multiplication).
1031 @ifclear USERVISONLY
1033 Fix @code{g77} crash on statements such as
1034 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1035 @samp{Z} is @code{DOUBLE COMPLEX}.
1038 @ifclear USERVISONLY
1040 Fix a @code{g++} crash.
1044 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
1045 compile-time constant @code{INTEGER} expression.
1048 Fix @code{g77} @samp{-g} option so procedures that
1049 use @code{ENTRY} can be stepped through, line by line,
1052 @ifclear USERVISONLY
1054 Fix a profiling-related bug in @code{gcc} back end for
1055 Intel x86 architecture.
1059 Allow any @code{REAL} argument to intrinsics
1060 @code{Second} and @code{CPU_Time}.
1063 Allow any numeric argument to intrinsics
1064 @code{Int2} and @code{Int8}.
1067 Use @code{tempnam}, if available, to open scratch files
1068 (as in @samp{OPEN(STATUS='SCRATCH')})
1069 so that the @code{TMPDIR} environment variable,
1070 if present, is used.
1073 Rename the @code{gcc} keyword @code{restrict} to
1074 @code{__restrict__}, to avoid rejecting valid, existing,
1076 Support for @code{restrict} is now more like support
1079 @ifclear USERVISONLY
1081 Fix @samp{-fpedantic} to not reject procedure invocations
1082 such as @samp{I=J()} and @samp{CALL FOO()}.
1086 Fix @samp{-fugly-comma} to affect invocations of
1087 only external procedures.
1088 Restore rejection of gratuitous trailing omitted
1089 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1092 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1093 @samp{-fbadu77-intrinsics-*} options.
1095 @ifclear USERVISONLY
1097 Improve diagnostic messages from @code{libf2c}
1098 so it is more likely that the printing of the
1099 active format string is limited to the string,
1100 with no trailing garbage being printed.
1102 (Unlike @code{f2c}, @code{g77} did not append
1103 a null byte to its compiled form of every
1104 format string specified via a @code{FORMAT} statement.
1105 However, @code{f2c} would exhibit the problem
1106 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1107 by printing @samp{(I)garbage} as the format string.)
1110 @ifclear USERVISONLY
1112 Improve compilation of @code{FORMAT} expressions so that
1113 a null byte is appended to the last operand if it
1115 This provides a cleaner run-time diagnostic as provided
1116 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
1119 @ifclear USERVISONLY
1121 Fix various crashes involving code with diagnosed errors.
1124 @ifclear USERVISONLY
1126 Fix cross-compilation bug when configuring @code{libf2c}.
1129 @ifclear USERVISONLY
1131 Improve diagnostics.
1134 @ifclear USERVISONLY
1136 Improve documentation and indexing.
1139 @ifclear USERVISONLY
1141 Upgrade to @code{libf2c} as of 1997-09-23.
1142 This fixes a formatted-I/O bug that afflicted
1143 64-bit systems with 32-bit integers
1144 (such as Digital Alpha running GNU/Linux).
1148 @c 1998-03-18: EGCS 1.0.2 released.
1149 @heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1:
1151 @ifclear USERVISONLY
1153 Fix @code{g77} crash triggered by @code{CASE} statement with
1154 an omitted lower or upper bound.
1157 @ifclear USERVISONLY
1159 Fix @code{g77} crash on statements such as
1160 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1161 @samp{Z} is @code{DOUBLE COMPLEX}.
1164 @ifclear USERVISONLY
1166 @cindex support, ELF
1167 @cindex -fPIC option
1168 @cindex options, -fPIC
1170 Fix @samp{-fPIC} (such as compiling for ELF targets)
1171 on the Intel x86 architecture target
1172 so invalid assembler code is no longer produced.
1175 @ifclear USERVISONLY
1177 Fix @samp{-fpedantic} to not reject procedure invocations
1178 such as @samp{I=J()} and @samp{CALL FOO()}.
1181 @ifclear USERVISONLY
1183 Fix @samp{-fugly-comma} to affect invocations of
1184 only external procedures.
1185 Restore rejection of gratuitous trailing omitted
1186 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1190 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1191 @samp{-fbadu77-intrinsics-*} options.
1194 @c 1998-01-06: EGCS 1.0.1 released.
1195 @heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0:
1196 @ifclear USERVISONLY
1199 Fix run-time crash involving @code{NAMELIST} on 64-bit
1200 machines such as Alphas.
1204 @c 1997-12-03: EGCS 1.0 released.
1205 @heading In @code{EGCS} 1.0 versus @code{g77} 0.5.21:
1208 Version 1.0 of @code{egcs}
1209 contains several regressions against
1210 version 0.5.21 of @code{g77},
1212 ``vanilla'' @code{gcc} back end instead of patching
1213 it to fix a few bugs and improve performance in a
1216 Features that have been dropped from this version
1217 of @code{g77} due to their being implemented
1218 via @code{g77}-specific patches to the @code{gcc}
1219 back end in previous releases include:
1223 Support for the C-language @code{restrict} keyword.
1226 Support for the @samp{-W} option warning about
1227 integer division by zero.
1230 The Intel x86-specific option @samp{-malign-double}
1231 applying to stack-allocated data
1232 as well as statically-allocate data.
1235 @ifclear USERVISONLY
1236 Note that the @file{gcc/f/gbe/} subdirectory has been removed
1237 from this distribution as a result of @code{g77}
1238 being fully integrated with
1239 the @code{egcs} variant of the @code{gcc} back end.
1242 @ifclear USERVISONLY
1244 Fix code generation for iterative @code{DO} loops that
1245 have one or more references to the iteration variable,
1246 or to aliases of it, in their control expressions.
1247 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1250 @ifclear USERVISONLY
1252 Fix @code{DTime} intrinsic so as not to truncate
1253 results to integer values (on some systems).
1256 @ifclear USERVISONLY
1258 @c Toon Moene discovered these.
1259 Some Fortran code, miscompiled
1260 by @code{g77} built on @code{gcc} version 2.8.1
1261 on m68k-next-nextstep3 configurations
1262 when using the @samp{-O2} option,
1263 is now compiled correctly.
1264 It is believed that a C function known to miscompile
1265 on that configuration
1266 when using the @samp{-O2 -funroll-loops} options
1267 also is now compiled correctly.
1270 @ifclear USERVISONLY
1272 Remove support for non-@code{egcs} versions of @code{gcc}.
1275 @cindex -@w{}-driver option
1276 @cindex @code{g77} options, -@w{}-driver
1277 @cindex options, -@w{}-driver
1279 Remove support for the @samp{--driver} option,
1280 as @code{g77} now does all the driving,
1281 just like @code{gcc}.
1284 Allow any numeric argument to intrinsics
1285 @code{Int2} and @code{Int8}.
1287 @ifclear USERVISONLY
1289 Improve diagnostic messages from @code{libf2c}
1290 so it is more likely that the printing of the
1291 active format string is limited to the string,
1292 with no trailing garbage being printed.
1294 (Unlike @code{f2c}, @code{g77} did not append
1295 a null byte to its compiled form of every
1296 format string specified via a @code{FORMAT} statement.
1297 However, @code{f2c} would exhibit the problem
1298 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1299 by printing @samp{(I)garbage} as the format string.)
1302 @ifclear USERVISONLY
1304 Upgrade to @code{libf2c} as of 1997-09-23.
1305 This fixes a formatted-I/O bug that afflicted
1306 64-bit systems with 32-bit integers
1307 (such as Digital Alpha running GNU/Linux).
1311 @c 1997-09-09: 0.5.21 released.
1314 @ifclear USERVISONLY
1316 Fix a code-generation bug introduced by 0.5.20
1317 caused by loop unrolling (by specifying
1318 @samp{-funroll-loops} or similar).
1319 This bug afflicted all code compiled by
1320 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1321 Fortran, and so on).
1324 @ifclear USERVISONLY
1326 Fix a code-generation bug manifested when
1327 combining local @code{EQUIVALENCE} with a
1328 @code{DATA} statement that follows
1329 the first executable statement (or is
1330 treated as an executable-context statement
1331 as a result of using the @samp{-fpedantic}
1335 @ifclear USERVISONLY
1337 Fix a compiler crash that occured when an
1338 integer division by a constant zero is detected.
1339 Instead, when the @samp{-W} option is specified,
1340 the @code{gcc} back end issues a warning about such a case.
1341 This bug afflicted all code compiled by
1342 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1343 Fortran, and so on).
1347 When the @samp{-W} option is specified, @code{gcc}, @code{g77},
1348 and other GNU compilers that incorporate the @code{gcc}
1349 back end as modified by @code{g77}, issue
1350 a warning about integer division by constant zero.
1353 @ifclear USERVISONLY
1355 Fix a compiler crash that occurred in some cases
1356 of procedure inlining.
1357 (Such cases became more frequent in 0.5.20.)
1360 @ifclear USERVISONLY
1362 Fix a compiler crash resulting from using @code{DATA}
1363 or similar to initialize a @code{COMPLEX} variable or
1367 @ifclear USERVISONLY
1369 Fix compiler crashes involving use of @code{AND}, @code{OR},
1370 or @code{XOR} intrinsics.
1373 @ifclear USERVISONLY
1375 Fix compiler bug triggered when using a @code{COMMON}
1376 or @code{EQUIVALENCE} variable
1377 as the target of an @code{ASSIGN}
1378 or assigned-@code{GOTO} statement.
1381 @ifclear USERVISONLY
1383 Fix compiler crashes due to using the name of a some
1384 non-standard intrinsics (such as @code{FTell} or
1385 @code{FPutC}) as such and as the name of a procedure
1387 Such dual use of a name in a program is allowed by
1391 @c @code{g77}'s version of @code{libf2c} has been modified
1392 @c so that the external names of library's procedures do not
1393 @c conflict with names used for Fortran procedures compiled
1395 @c An additional layer of jacket procedures has been added
1396 @c to @code{libf2c} to map the old names to the new names,
1397 @c for automatic use by programs that interface to the
1398 @c library procedures via the external-procedure mechanism.
1400 @c For example, the intrinsic @code{FPUTC} previously was
1401 @c implemented by @code{g77} as a call to the @code{libf2c}
1402 @c routine @code{fputc_}.
1403 @c This would conflict with a Fortran procedure named @code{FPUTC}
1404 @c (using default compiler options), and this conflict
1405 @c would cause a crash under certain circumstances.
1407 @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
1408 @c which does not conflict with the @code{fputc_} external
1409 @c that implements a Fortran procedure named @code{FPUTC}.
1411 @c Programs that refer to @code{FPUTC} as an external procedure
1412 @c without supplying their own implementation will link to
1413 @c the new @code{libf2c} routine @code{fputc_}, which is
1414 @c simply a jacket routine that calls @code{G77_fputc_0}.
1416 @ifclear USERVISONLY
1418 Place automatic arrays on the stack, even if
1419 @code{SAVE} or the @samp{-fno-automatic} option
1421 This avoids a compiler crash in some cases.
1424 @ifclear USERVISONLY
1426 The @samp{-malign-double} option now reliably aligns
1427 @code{DOUBLE PRECISION} optimally on Pentium and
1428 Pentium Pro architectures (586 and 686 in @code{gcc}).
1432 New option @samp{-Wno-globals} disables warnings
1433 about ``suspicious'' use of a name both as a global
1434 name and as the implicit name of an intrinsic, and
1435 warnings about disagreements over the number or natures of
1436 arguments passed to global procedures, or the
1437 natures of the procedures themselves.
1439 The default is to issue such warnings, which are
1440 new as of this version of @code{g77}.
1443 New option @samp{-fno-globals} disables diagnostics
1444 about potentially fatal disagreements
1445 analysis problems, such as disagreements over the
1446 number or natures of arguments passed to global
1447 procedures, or the natures of those procedures themselves.
1449 The default is to issue such diagnostics and flag
1450 the compilation as unsuccessful.
1451 With this option, the diagnostics are issued as
1452 warnings, or, if @samp{-Wno-globals} is specified,
1453 are not issued at all.
1455 This option also disables inlining of global procedures,
1456 to avoid compiler crashes resulting from coding errors
1457 that these diagnostics normally would identify.
1459 @ifclear USERVISONLY
1461 Diagnose cases where a reference to a procedure
1462 disagrees with the type of that procedure, or
1463 where disagreements about the number or nature
1465 This avoids a compiler crash.
1468 @ifclear USERVISONLY
1470 Fix parsing bug whereby @code{g77} rejected a
1471 second initialization specification immediately
1472 following the first's closing @samp{/} without
1473 an intervening comma in a @code{DATA} statement,
1474 and the second specification was an implied-DO list.
1477 @ifclear USERVISONLY
1479 Improve performance of the @code{gcc} back end so
1480 certain complicated expressions involving @code{COMPLEX}
1481 arithmetic (especially multiplication) don't appear to
1482 take forever to compile.
1485 @ifclear USERVISONLY
1487 Fix a couple of profiling-related bugs in @code{gcc}
1491 @ifclear USERVISONLY
1493 Integrate GNU Ada's (GNAT's) changes to the back end,
1494 which consist almost entirely of bug fixes.
1495 These fixes are circa version 3.10p of GNAT.
1498 @ifclear USERVISONLY
1500 Include some other @code{gcc} fixes that seem useful in
1501 @code{g77}'s version of @code{gcc}.
1502 (See @file{gcc/ChangeLog} for details---compare it
1503 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
1508 Fix @code{libU77} routines that accept file and other names
1509 to strip trailing blanks from them, for consistency
1510 with other implementations.
1511 Blanks may be forcibly appended to such names by
1512 appending a single null character (@samp{CHAR(0)})
1513 to the significant trailing blanks.
1516 Fix @code{CHMOD} intrinsic to work with file names
1517 that have embedded blanks, commas, and so on.
1520 Fix @code{SIGNAL} intrinsic so it accepts an
1521 optional third @code{Status} argument.
1523 @ifclear USERVISONLY
1525 Fix @code{IDATE()} intrinsic subroutine (VXT form)
1526 so it accepts arguments in the correct order.
1527 Documentation fixed accordingly, and for
1528 @code{GMTIME()} and @code{LTIME()} as well.
1532 Make many changes to @code{libU77} intrinsics to
1533 support existing code more directly.
1535 Such changes include allowing both subroutine and
1536 function forms of many routines, changing @code{MCLOCK()}
1537 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
1538 introducing @code{MCLOCK8()} and @code{TIME8()} to
1539 return @code{INTEGER(KIND=2)} values,
1540 and placing functions that are intended to perform
1541 side effects in a new intrinsic group, @code{badu77}.
1543 @ifclear USERVISONLY
1545 Improve @code{libU77} so it is more portable.
1549 Add options @samp{-fbadu77-intrinsics-delete},
1550 @samp{-fbadu77-intrinsics-hide}, and so on.
1552 @ifclear USERVISONLY
1554 Fix crashes involving diagnosed or invalid code.
1557 @ifclear USERVISONLY
1559 @code{g77} and @code{gcc} now do a somewhat better
1560 job detecting and diagnosing arrays that are too
1561 large to handle before these cause diagnostics
1562 during the assembler or linker phase, a compiler
1563 crash, or generation of incorrect code.
1566 @ifclear USERVISONLY
1568 Make some fixes to alias analysis code.
1571 @ifclear USERVISONLY
1573 Add support for @code{restrict} keyword in @code{gcc}
1577 @ifclear USERVISONLY
1579 Support @code{gcc} version 2.7.2.3
1580 (modified by @code{g77} into version 2.7.2.3.f.1),
1582 support for prior versions of @code{gcc}.
1585 @ifclear USERVISONLY
1587 Incorporate GNAT's patches to the @code{gcc} back
1588 end into @code{g77}'s, so GNAT users do not need
1589 to apply GNAT's patches to build both GNAT and @code{g77}
1590 from the same source tree.
1593 @ifclear USERVISONLY
1595 Modify @code{make} rules and related code so that
1596 generation of Info documentation doesn't require
1597 compilation using @code{gcc}.
1598 Now, any ANSI C compiler should be adequate to
1599 produce the @code{g77} documentation (in particular,
1600 the tables of intrinsics) from scratch.
1604 Add @code{INT2} and @code{INT8} intrinsics.
1607 Add @code{CPU_TIME} intrinsic.
1610 Add @code{ALARM} intrinsic.
1613 @code{CTIME} intrinsic now accepts any @code{INTEGER}
1614 argument, not just @code{INTEGER(KIND=2)}.
1616 @ifclear USERVISONLY
1618 Warn when explicit type declaration disagrees with
1619 the type of an intrinsic invocation.
1622 @ifclear USERVISONLY
1624 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
1627 @ifclear USERVISONLY
1629 Fix typo in @code{make} rule @code{g77-cross}, used only for
1633 @ifclear USERVISONLY
1635 Fix @code{libf2c} build procedure to re-archive library
1636 if previous attempt to archive was interrupted.
1639 @ifclear USERVISONLY
1641 Change @code{gcc} to unroll loops only during the last
1642 invocation (of as many as two invocations) of loop
1646 @ifclear USERVISONLY
1648 Improve handling of @samp{-fno-f2c} so that code that
1649 attempts to pass an intrinsic as an actual argument,
1650 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
1651 that the run-time-library routine is, effectively,
1652 compiled with @samp{-ff2c} in effect.
1655 @ifclear USERVISONLY
1657 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
1658 as an option that inhibits linking, just like @samp{-c} or
1659 @samp{-S}, and to recognize and properly handle the
1660 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
1661 and @samp{-Xlinker} options.
1664 @ifclear USERVISONLY
1666 Upgrade to @code{libf2c} as of 1997-08-16.
1669 @ifclear USERVISONLY
1671 Modify @code{libf2c} to consistently and clearly diagnose
1672 recursive I/O (at run time).
1676 @code{g77} driver now prints version information (such as produced
1677 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
1680 The @samp{.r} suffix now designates a Ratfor source file,
1681 to be preprocessed via the @code{ratfor} command, available
1684 @ifclear USERVISONLY
1686 Fix some aspects of how @code{gcc} determines what kind of
1687 system is being configured and what kinds are supported.
1688 For example, GNU Linux/Alpha ELF systems now are directly
1692 @ifclear USERVISONLY
1694 Improve diagnostics.
1697 @ifclear USERVISONLY
1699 Improve documentation and indexing.
1702 @ifclear USERVISONLY
1704 Include all pertinent files for @code{libf2c} that come
1705 from @code{netlib.bell-labs.com}; give any such files
1706 that aren't quite accurate in @code{g77}'s version of
1707 @code{libf2c} the suffix @samp{.netlib}.
1710 @ifclear USERVISONLY
1712 Reserve @code{INTEGER(KIND=0)} for future use.
1716 @c 1997-02-28: 0.5.20 released.
1720 The @samp{-fno-typeless-boz} option is now the default.
1722 This option specifies that non-decimal-radix
1723 constants using the prefixed-radix form (such as @samp{Z'1234'})
1724 are to be interpreted as @code{INTEGER(KIND=1)} constants.
1725 Specify @samp{-ftypeless-boz} to cause such
1726 constants to be interpreted as typeless.
1728 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
1732 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect},
1733 for information on the @samp{-ftypeless-boz} option.
1737 Options @samp{-ff90-intrinsics-enable} and
1738 @samp{-fvxt-intrinsics-enable} now are the
1741 Some programs might use names that clash with
1742 intrinsic names defined (and now enabled) by these
1743 options or by the new @code{libU77} intrinsics.
1744 Users of such programs might need to compile them
1745 differently (using, for example, @samp{-ff90-intrinsics-disable})
1746 or, better yet, insert appropriate @code{EXTERNAL}
1747 statements specifying that these names are not intended
1748 to be names of intrinsics.
1751 The @code{ALWAYS_FLUSH} macro is no longer defined when
1752 building @code{libf2c}, which should result in improved
1753 I/O performance, especially over NFS.
1755 @emph{Note:} If you have code that depends on the behavior
1756 of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
1757 you will have to modify @code{libf2c} accordingly before
1758 building it from this and future versions of @code{g77}.
1761 @xref{Output Assumed To Flush}, for more information.
1765 Dave Love's implementation of @code{libU77} has been
1766 added to the version of @code{libf2c} distributed with
1767 and built as part of @code{g77}.
1768 @code{g77} now knows about the routines in this library
1772 New option @samp{-fvxt} specifies that the
1773 source file is written in VXT Fortran, instead of GNU Fortran.
1776 @xref{VXT Fortran}, for more information on the constructs
1777 recognized when the @samp{-fvxt} option is specified.
1781 The @samp{-fvxt-not-f90} option has been deleted,
1782 along with its inverse, @samp{-ff90-not-vxt}.
1784 If you used one of these deleted options, you should
1785 re-read the pertinent documentation to determine which
1786 options, if any, are appropriate for compiling your
1787 code with this version of @code{g77}.
1790 @xref{Other Dialects}, for more information.
1794 The @samp{-fugly} option now issues a warning, as it
1795 likely will be removed in a future version.
1797 (Enabling all the @samp{-fugly-*} options is unlikely
1798 to be feasible, or sensible, in the future,
1799 so users should learn to specify only those
1800 @samp{-fugly-*} options they really need for a
1801 particular source file.)
1804 The @samp{-fugly-assumed} option, introduced in
1805 version 0.5.19, has been changed to
1806 better accommodate old and new code.
1809 @xref{Ugly Assumed-Size Arrays}, for more information.
1812 @ifclear USERVISONLY
1814 Make a number of fixes to the @code{g77} front end and
1815 the @code{gcc} back end to better support Alpha (AXP)
1817 This includes providing at least one bug-fix to the
1818 @code{gcc} back end for Alphas.
1822 Related to supporting Alpha (AXP) machines, the @code{LOC()}
1823 intrinsic and @code{%LOC()} construct now return
1824 values of @code{INTEGER(KIND=0)} type,
1825 as defined by the GNU Fortran language.
1827 This type is wide enough
1828 (holds the same number of bits)
1829 as the character-pointer type on the machine.
1831 On most machines, this won't make a difference,
1832 whereas, on Alphas and other systems with 64-bit pointers,
1833 the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)}
1834 (often referred to as @code{INTEGER*8})
1835 instead of the more common @code{INTEGER(KIND=1)}
1836 (often referred to as @code{INTEGER*4}).
1839 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
1840 end, to avoid bugs in @code{complex} support in the
1841 @code{gcc} back end.
1842 New option @samp{-fno-emulate-complex}
1843 causes @code{g77} to revert the 0.5.19 behavior.
1845 @ifclear USERVISONLY
1847 Fix bug whereby @samp{REAL A(1)}, for example, caused
1848 a compiler crash if @samp{-fugly-assumed} was in effect
1849 and @var{A} was a local (automatic) array.
1850 That case is no longer affected by the new
1851 handling of @samp{-fugly-assumed}.
1854 @ifclear USERVISONLY
1856 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
1857 no longer deletes @file{foo.f} before issuing other
1858 diagnostics, and so the @samp{-x} option is properly
1862 @ifclear USERVISONLY
1864 Enable inlining of subroutines and functions by the @code{gcc}
1866 This works as it does for @code{gcc} itself---program units
1867 may be inlined for invocations that follow them in the same
1868 program unit, as long as the appropriate compile-time
1869 options are specified.
1873 Dummy arguments are no longer assumed to potentially alias
1875 other dummy arguments or @code{COMMON} areas when any of
1876 these are defined (assigned to) by Fortran code.
1878 This can result in faster and/or smaller programs when
1879 compiling with optimization enabled, though on some
1880 systems this effect is observed only when @samp{-fforce-addr}
1883 New options @samp{-falias-check}, @samp{-fargument-alias},
1884 @samp{-fargument-noalias},
1885 and @samp{-fno-argument-noalias-global} control the
1886 way @code{g77} handles potential aliasing.
1889 @xref{Aliasing Assumed To Work}, for detailed information on why the
1890 new defaults might result in some programs no longer working the way they
1891 did when compiled by previous versions of @code{g77}.
1894 @ifclear USERVISONLY
1896 The @code{CONJG()} and @code{DCONJG()} intrinsics now
1897 are compiled in-line.
1900 @ifclear USERVISONLY
1902 The bug-fix for 0.5.19.1 has been re-done.
1903 The @code{g77} compiler has been changed back to
1904 assume @code{libf2c} has no aliasing problems in
1905 its implementations of the @code{COMPLEX} (and
1906 @code{DOUBLE COMPLEX}) intrinsics.
1907 The @code{libf2c} has been changed to have no such
1910 As a result, 0.5.20 is expected to offer improved performance
1911 over 0.5.19.1, perhaps as good as 0.5.19 in most
1912 or all cases, due to this change alone.
1914 @emph{Note:} This change requires version 0.5.20 of
1915 @code{libf2c}, at least, when linking code produced
1916 by any versions of @code{g77} other than 0.5.19.1.
1917 Use @samp{g77 -v} to determine the version numbers
1918 of the @code{libF77}, @code{libI77}, and @code{libU77}
1919 components of the @code{libf2c} library.
1920 (If these version numbers are not printed---in
1921 particular, if the linker complains about unresolved
1922 references to names like @samp{g77__fvers__}---that
1923 strongly suggests your installation has an obsolete
1924 version of @code{libf2c}.)
1928 New option @samp{-fugly-assign} specifies that the
1929 same memory locations are to be used to hold the
1930 values assigned by both statements @samp{I = 3} and
1931 @samp{ASSIGN 10 TO I}, for example.
1932 (Normally, @code{g77} uses a separate memory location
1933 to hold assigned statement labels.)
1936 @xref{Ugly Assigned Labels}, for more information.
1940 @code{FORMAT} and @code{ENTRY} statements now are allowed to
1941 precede @code{IMPLICIT NONE} statements.
1943 @ifclear USERVISONLY
1945 Produce diagnostic for unsupported @code{SELECT CASE} on
1946 @code{CHARACTER} type, instead of crashing, at compile time.
1949 @ifclear USERVISONLY
1951 Fix crashes involving diagnosed or invalid code.
1954 @ifclear USERVISONLY
1956 Change approach to building @code{libf2c} archive
1957 (@file{libf2c.a}) so that members are added to it
1958 only when truly necessary, so the user that installs
1959 an already-built @code{g77} doesn't need to have write
1960 access to the build tree (whereas the user doing the
1961 build might not have access to install new software
1965 @ifclear USERVISONLY
1967 Support @code{gcc} version 2.7.2.2
1968 (modified by @code{g77} into version 2.7.2.2.f.2),
1970 support for prior versions of @code{gcc}.
1973 @ifclear USERVISONLY
1975 Upgrade to @code{libf2c} as of 1997-02-08, and
1976 fix up some of the build procedures.
1979 @ifclear USERVISONLY
1981 Improve general build procedures for @code{g77},
1982 fixing minor bugs (such as deletion of any file
1983 named @file{f771} in the parent directory of @code{gcc/}).
1987 Enable full support of @code{INTEGER(KIND=2)}
1988 (often referred to as @code{INTEGER*8})
1990 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
1991 may make full use of its features via the @code{g77}
1992 version of @file{f2c.h} and the @code{INTEGER(KIND=2)}
1993 support routines in the @code{g77} version of @code{libf2c}.
1996 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
1997 yields version information on the library.
2000 The @code{SNGL} and @code{FLOAT} intrinsics now are
2001 specific intrinsics, instead of synonyms for the
2002 generic intrinsic @code{REAL}.
2005 New intrinsics have been added.
2006 These are @code{REALPART}, @code{IMAGPART},
2008 @code{LONG}, and @code{SHORT}.
2011 A new group of intrinsics, @code{gnu}, has been added
2012 to contain the new @code{REALPART}, @code{IMAGPART},
2013 and @code{COMPLEX} intrinsics.
2014 An old group, @code{dcp}, has been removed.
2017 Complain about industry-wide ambiguous references
2018 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
2019 where @var{expr} is @code{DOUBLE COMPLEX} (or any
2020 complex type other than @code{COMPLEX}), unless
2021 @samp{-ff90} option specifies Fortran 90 interpretation
2022 or new @samp{-fugly-complex} option, in conjunction with
2023 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
2025 @ifclear USERVISONLY
2027 Make improvements to diagnostics.
2030 @ifclear USERVISONLY
2032 Speed up compiler a bit.
2035 @ifclear USERVISONLY
2037 Improvements to documentation and indexing, including
2038 a new chapter containing information on one, later
2039 more, diagnostics that users are directed to pull
2040 up automatically via a message in the diagnostic itself.
2042 (Hence the menu item @code{M} for the node
2043 @code{Diagnostics} in the top-level menu of
2044 the Info documentation.)
2048 @ifclear DOC-OLDNEWS
2049 @heading In previous versions:
2051 Information on previous versions is archived
2052 in @file{@value{path-g77}/news.texi}
2053 following the test of the @code{DOC-OLDNEWS} macro.
2057 @c 1997-02-01: 0.5.19.1 released.
2058 @heading In 0.5.19.1:
2061 Code-generation bugs afflicting operations on complex
2062 data have been fixed.
2064 These bugs occurred when assigning the result of an
2065 operation to a complex variable (or array element)
2066 that also served as an input to that operation.
2068 The operations affected by this bug were: @code{CONJG()},
2069 @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
2070 @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
2071 @code{CSQRT()}, @code{CDSQRT()}, complex division, and
2072 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
2074 (The related generic and @samp{Z}-prefixed intrinsics,
2075 such as @code{ZSIN()}, also were affected.)
2077 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
2078 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
2079 @code{DOUBLE COMPLEX}) have been fixed.
2082 @c 1996-12-07: 0.5.19 released.
2086 Fix @code{FORMAT} statement parsing so negative values for
2087 specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
2088 are correctly processed as negative.
2091 Fix @code{SIGNAL} intrinsic so it once again accepts a
2092 procedure as its second argument.
2095 A temporary kludge option provides bare-bones information on
2096 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
2099 New @samp{-fonetrip} option specifies FORTRAN-66-style
2100 one-trip @code{DO} loops.
2103 New @samp{-fno-silent} option causes names of program units
2104 to be printed as they are compiled, in a fashion similar to
2105 UNIX @code{f77} and @code{f2c}.
2108 New @samp{-fugly-assumed} option specifies that arrays
2109 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
2110 treated as assumed-size.
2113 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
2114 constants using the prefixed-radix form (such as @samp{Z'1234'})
2115 are to be interpreted as @code{INTEGER} constants.
2118 New @samp{-ff66} option is a ``shorthand'' option that specifies
2119 behaviors considered appropriate for FORTRAN 66 programs.
2122 New @samp{-ff77} option is a ``shorthand'' option that specifies
2123 behaviors considered appropriate for UNIX @code{f77} programs.
2126 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
2127 to perform some of what @samp{-fugly} used to do.
2128 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
2129 in that they do nothing more than enable (or disable) other
2130 @samp{-fugly-*} options.
2133 Fix parsing of assignment statements involving targets that
2134 are substrings of elements of @code{CHARACTER} arrays having
2135 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
2136 @samp{REALFUNCTIONFOO}.
2139 Fix crashes involving diagnosed code.
2142 Fix handling of local @code{EQUIVALENCE} areas so certain cases
2143 of valid Fortran programs are not misdiagnosed as improperly
2144 extending the area backwards.
2147 Support @code{gcc} version 2.7.2.1.
2150 Upgrade to @code{libf2c} as of 1996-09-26, and
2151 fix up some of the build procedures.
2154 Change code generation for list-directed I/O so it allows
2155 for new versions of @code{libf2c} that might return non-zero
2156 status codes for some operations previously assumed to always
2159 This change not only affects how @code{IOSTAT=} variables
2160 are set by list-directed I/O, it also affects whether
2161 @code{END=} and @code{ERR=} labels are reached by these
2165 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
2166 procedures in @code{libf2c}.
2169 Modify @code{fseek_()} in @code{libf2c} to be more portable
2170 (though, in practice, there might be no systems where this
2171 matters) and to catch invalid @code{whence} arguments.
2174 Some useless warnings from the @samp{-Wunused} option have
2178 Fix a problem building the @file{f771} executable
2179 on AIX systems by linking with the @samp{-bbigtoc} option.
2182 Abort configuration if @code{gcc} has not been patched
2183 using the patch file provided in the @file{gcc/f/gbe/}
2187 Add options @samp{--help} and @samp{--version} to the
2188 @code{g77} command, to conform to GNU coding guidelines.
2189 Also add printing of @code{g77} version number when
2190 the @samp{--verbose} (@samp{-v}) option is used.
2193 Change internally generated name for local @code{EQUIVALENCE}
2194 areas to one based on the alphabetically sorted first name
2195 in the list of names for entities placed at the beginning
2199 Improvements to documentation and indexing.
2202 @c 1996-04-01: 0.5.18 released.
2206 Add some rudimentary support for @code{INTEGER*1},
2207 @code{INTEGER*2}, @code{INTEGER*8},
2208 and their @code{LOGICAL} equivalents.
2209 (This support works on most, maybe all, @code{gcc} targets.)
2211 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2212 for providing the patch for this!
2214 Among the missing elements from the support for these
2215 features are full intrinsic support and constants.
2218 Add some rudimentary support for the @code{BYTE} and
2219 @code{WORD} type-declaration statements.
2220 @code{BYTE} corresponds to @code{INTEGER*1},
2221 while @code{WORD} corresponds to @code{INTEGER*2}.
2223 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2224 for providing the patch for this!
2227 The compiler code handling intrinsics has been largely
2228 rewritten to accommodate the new types.
2229 No new intrinsics or arguments for existing
2230 intrinsics have been added, so there is, at this
2231 point, no intrinsic to convert to @code{INTEGER*8},
2235 Support automatic arrays in procedures.
2238 Reduce space/time requirements for handling large
2239 @emph{sparsely} initialized aggregate arrays.
2240 This improvement applies to only a subset of
2241 the general problem to be addressed in 0.6.
2244 Treat initial values of zero as if they weren't
2245 specified (in DATA and type-declaration statements).
2246 The initial values will be set to zero anyway, but the amount
2247 of compile time processing them will be reduced,
2248 in some cases significantly (though, again, this
2249 is only a subset of the general problem to be
2252 A new option, @samp{-fzeros}, is introduced to
2253 enable the traditional treatment of zeros as any
2257 With @samp{-ff90} in force, @code{g77} incorrectly
2258 interpreted @samp{REAL(Z)} as returning a @code{REAL}
2259 result, instead of as a @code{DOUBLE PRECISION}
2261 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
2263 With @samp{-fno-f90} in force, the interpretation remains
2264 unchanged, since this appears to be how at least some
2265 F77 code using the @code{DOUBLE COMPLEX} extension expected
2268 Essentially, @samp{REAL(Z)} in F90 is the same as
2269 @samp{DBLE(Z)}, while in extended F77, it appears to
2270 be the same as @samp{REAL(REAL(Z))}.
2273 An expression involving exponentiation, where both operands
2274 were type @code{INTEGER} and the right-hand operand
2275 was negative, was erroneously evaluated.
2278 Fix bugs involving @code{DATA} implied-@code{DO} constructs
2279 (these involved an errant diagnostic and a crash, both on good
2280 code, one involving subsequent statement-function definition).
2283 Close @code{INCLUDE} files after processing them, so compiling source
2284 files with lots of @code{INCLUDE} statements does not result in
2285 being unable to open @code{INCLUDE} files after all the available
2286 file descriptors are used up.
2289 Speed up compiling, especially of larger programs, and perhaps
2290 slightly reduce memory utilization while compiling (this is
2291 @emph{not} the improvement planned for 0.6 involving large aggregate
2292 areas)---these improvements result from simply turning
2293 off some low-level code to do self-checking that hasn't been
2294 triggered in a long time.
2297 Introduce three new options that
2298 implement optimizations in the @code{gcc} back end (GBE).
2299 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
2300 and @samp{-frerun-loop-opt}, which are enabled, by default,
2301 for Fortran compilations.
2302 These optimizations are intended to help toon Fortran programs.
2305 Patch the GBE to do a better job optimizing certain
2306 kinds of references to array elements.
2309 Due to patches to the GBE, the version number of @code{gcc}
2310 also is patched to make it easier to manage installations,
2311 especially useful if it turns out a @code{g77} change to the
2314 The @code{g77}-modified version number is the @code{gcc}
2315 version number with the string @samp{.f.@var{n}} appended,
2316 where @samp{f} identifies the version as enhanced for
2317 Fortran, and @var{n} is @samp{1} for the first Fortran
2318 patch for that version of @code{gcc}, @samp{2} for the
2321 So, this introduces version 2.7.2.f.1 of @code{gcc}.
2324 Make several improvements and fixes to diagnostics, including
2325 the removal of two that were inappropriate or inadequate.
2328 Warning about two successive arithmetic operators, produced
2329 by @samp{-Wsurprising}, now produced @emph{only} when both
2330 operators are, indeed, arithmetic (not relational/boolean).
2333 @samp{-Wsurprising} now warns about the remaining cases
2334 of using non-integral variables for implied-@code{DO}
2335 loops, instead of these being rejected unless @samp{-fpedantic}
2336 or @samp{-fugly} specified.
2339 Allow @code{SAVE} of a local variable or array, even after
2340 it has been given an initial value via @code{DATA}, for example.
2343 Introduce an Info version of @code{g77} documentation, which
2344 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
2345 @file{gcc/f/PROJECTS}.
2346 These files will be removed in a future release.
2347 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
2348 @file{gcc/f/NEWS} now are automatically built from
2349 the texinfo source when distributions are made.
2351 This effort was inspired by a first pass at translating
2352 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
2353 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
2356 New @samp{-fno-second-underscore} option to specify
2357 that, when @samp{-funderscoring} is in effect, a second
2358 underscore is not to be appended to Fortran names already
2359 containing an underscore.
2362 Change the way iterative @code{DO} loops work to follow
2364 In particular, calculation of the iteration count is
2365 still done by converting the start, end, and increment
2366 parameters to the type of the @code{DO} variable, but
2367 the result of the calculation is always converted to
2368 the default @code{INTEGER} type.
2370 (This should have no effect on existing code compiled
2371 by @code{g77}, but code written to assume that use
2372 of a @emph{wider} type for the @code{DO} variable
2373 will result in an iteration count being fully calculated
2374 using that wider type (wider
2375 than default @code{INTEGER}) must be rewritten.)
2378 Support @code{gcc} version 2.7.2.
2381 Upgrade to @code{libf2c} as of 1996-03-23, and
2382 fix up some of the build procedures.
2384 Note that the email addresses related to @code{f2c}
2385 have changed---the distribution site now is
2386 named @code{netlib.bell-labs.com}, and the
2387 maintainer's new address is @email{dmg@@bell-labs.com}.
2390 @c 1995-11-18: 0.5.17 released.
2394 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
2395 system's @file{/dev/null} special file if run by user @code{root}.
2397 @strong{All users} of version 0.5.16 should ensure that
2398 they have not removed @file{/dev/null} or replaced it with an ordinary
2399 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
2400 @samp{ls -l /dev/zero}.
2401 If the output isn't basically the
2402 same, contact your system
2403 administrator about restoring @file{/dev/null} to its proper status).
2405 This bug is particularly insidious because removing @file{/dev/null} as
2406 a special file can go undetected for quite a while, aside from
2407 various applications and programs exhibiting sudden, strange
2410 I sincerely apologize for not realizing the
2411 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
2412 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
2413 it is supposed to build (especially if it reports unresolved
2414 references, which it should in this case)!
2417 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
2420 Fix crash that can occur when diagnostics given outside of any
2421 program unit (such as when input file contains @samp{@@foo}).
2424 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
2427 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
2428 and issue clearer error message in cases where target of @code{ASSIGN}
2429 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
2433 Make @code{libf2c} build procedures work on more systems again by
2434 eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}.
2437 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
2438 options to compiler.
2441 Fix failure to always diagnose missing type declaration for
2442 @code{IMPLICIT NONE}.
2445 Fix compile-time performance problem (which could sometimes
2446 crash the compiler, cause a hang, or whatever, due to a bug
2447 in the back end) involving exponentiation with a large @code{INTEGER}
2448 constant for the right-hand operator (e.g. @samp{I**32767}).
2451 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
2452 utility in particular) is properly built using the host compiler.
2455 Add new @samp{-Wsurprising} option to warn about constructs that are
2456 interpreted by the Fortran standard (and @code{g77}) in ways that
2457 are surprising to many programmers.
2460 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
2461 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
2463 @emph{Note:} You should
2464 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
2465 these as generic intrinsics, to improve likelihood of diagnostics
2466 (instead of subtle run-time bugs) when using a compiler that
2467 doesn't support these as intrinsics (e.g. @code{f2c}).
2470 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
2471 with non-@code{INTEGER} index variable; issue that under
2472 @samp{-Wsurprising} instead.
2475 Clarify some diagnostics that say things like ``ignored'' when that's
2479 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
2483 Minor improvements to code generation for various operations on
2484 @code{LOGICAL} operands.
2487 Minor improvement to code generation for some @code{DO} loops on some
2491 Support @code{gcc} version 2.7.1.
2494 Upgrade to @code{libf2c} as of 1995-11-15.
2497 @c 1995-08-30: 0.5.16 released.
2501 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
2502 not involving @code{COMMON}.
2505 Fix code-generation bugs involving invoking ``gratis'' library procedures
2506 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
2507 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
2508 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
2509 @code{DERF()}, and @code{DERFC()}.
2512 Update @code{libf2c} to include netlib patches through 1995-08-16, and
2513 @code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
2514 consistent with other Fortran implementations by outputting
2515 leading zeros in formatted and list-directed output.
2518 Fix a code-generation bug involving adjustable dummy arrays with high
2519 bounds whose primaries are changed during procedure execution, and
2520 which might well improve code-generation performance for such arrays
2521 compared to @code{f2c} plus @code{gcc} (but apparently only when using
2522 @file{gcc-2.7.0} or later).
2525 Fix a code-generation bug involving invocation of @code{COMPLEX} and
2526 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
2527 @code{DOUBLE COMPLEX} divides, when the result
2528 of the invocation or divide is assigned directly to a variable
2529 that overlaps one or more of the arguments to the invocation or divide.
2532 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
2533 nonconstant and the expression is used to dimension a dummy
2534 array, since the @code{gcc} back end does not support the necessary
2535 mechanics (and the @code{gcc} front end rejects the equivalent
2536 construct, as it turns out).
2539 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
2542 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
2543 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
2546 Fix crashes and such involving diagnosed code.
2549 Diagnose, instead of crashing on, statement function definitions
2550 having duplicate dummy argument names.
2553 Fix bug causing rejection of good code involving statement function
2557 Fix bug resulting in debugger not knowing size of local equivalence
2558 area when any member of area has initial value (via @code{DATA},
2562 Fix installation bug that prevented installation of @code{g77} driver.
2563 Provide for easy selection of whether to install copy of @code{g77}
2564 as @code{f77} to replace the broken code.
2567 Fix @code{gcc} driver (affects @code{g77} thereby) to not
2568 gratuitously invoke the
2569 @code{f771} program (e.g. when @samp{-E} is specified).
2572 Fix diagnostic to point to correct source line when it immediately
2573 follows an @code{INCLUDE} statement.
2576 Support more compiler options in @code{gcc}/@code{g77} when
2577 compiling Fortran files.
2578 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
2579 correct setting of version-number macros for preprocessing, full
2580 recognition of @samp{-O0}, and
2581 automatic insertion of configuration-specific linker specs.
2584 Add new intrinsics that interface to existing routines in @code{libf2c}:
2585 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
2586 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
2587 @code{SIGNAL}, and @code{SYSTEM}.
2588 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
2589 @code{SYSTEM} are intrinsic subroutines, not functions (since they
2590 have side effects), so to get the return values from @code{SIGNAL}
2591 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
2592 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
2595 Add new intrinsic group named @code{unix} to contain the new intrinsics,
2596 and by default enable this new group.
2599 Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
2603 Improve @code{g77} so that @samp{g77 -v} by itself (or with
2604 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
2605 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
2606 version info, and so that long-form options @code{gcc} accepts are
2607 understood by @code{g77} as well (even in truncated, unambiguous forms).
2610 Add new @code{g77} option @samp{--driver=name} to specify driver when
2611 default, @code{gcc}, isn't appropriate.
2614 Add support for @samp{#} directives (as output by the preprocessor) in the
2615 compiler, and enable generation of those directives by the
2616 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
2617 info are more useful to users of the preprocessor.
2620 Produce better diagnostics, more like @code{gcc}, with info such as
2621 @samp{In function `foo':} and @samp{In file included from...:}.
2624 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
2627 When @samp{-Wunused} in effect, don't warn about local variables used as
2628 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
2629 variables, even though, strictly speaking, these are not uses
2630 of the variables themselves.
2633 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
2634 at all, since there's no way to turn this off for individual
2635 cases (@code{g77} might someday start warning about these)---applies
2636 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
2637 warn about unused dummy arguments.
2640 New option @samp{-fno-underscoring} that inhibits transformation of names
2641 (by appending one or two underscores) so users may experiment
2642 with implications of such an environment.
2645 Minor improvement to @file{gcc/f/info} module to make it easier to build
2646 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
2647 (but definitely not all machines nor all non-@code{gcc} compilers).
2649 do not report bugs showing problems compilers have with
2650 macros defined in @file{gcc/f/target.h} and used in places like
2651 @file{gcc/f/expr.c}.
2654 Add warning to be printed for each invocation of the compiler
2655 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
2657 since @code{g77} is known to not work well for such cases.
2660 Lots of new documentation (though work is still needed to put it into
2661 canonical GNU format).
2664 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
2665 (by default), to produce
2666 smaller library without lots of debugging clutter.
2669 @c 1995-05-19: 0.5.15 released.
2673 Fix bad code generation involving @samp{X**I} and temporary, internal variables
2674 generated by @code{g77} and the back end (such as for @code{DO} loops).
2677 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
2680 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
2683 Fix crash or other erratic behavior when null character constant
2684 (@samp{''}) is encountered.
2687 Fix crash or other erratic behavior involving diagnosed code.
2690 Fix code generation for external functions returning type @code{REAL} when
2691 the @samp{-ff2c} option is in force (which it is by default) so that
2692 @code{f2c} compatibility is indeed provided.
2695 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
2696 with an array declarator.
2699 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
2701 of a typical fixed-form line, defaulting to 72 columns, such
2702 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
2703 meaning no characters are ignored.
2704 does not affect lines
2705 with @samp{&} in column 1, which are always processed as if
2706 @samp{-ffixed-line-length-none} was in effect.
2709 No longer generate better code for some kinds of array references,
2710 as @code{gcc} back end is to be fixed to do this even better, and it
2711 turned out to slow down some code in some cases after all.
2714 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
2715 values (e.g. via @code{DATA}), uninitialized members now always
2716 initialized to binary zeros (though this is not required by
2717 the standard, and might not be done in future versions
2719 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
2720 (essentially those with members of more than one type), the
2721 uninitialized members were initialized to spaces, to
2722 cater to @code{CHARACTER} types, but it seems no existing code expects
2723 that, while much existing code expects binary zeros.
2729 Don't emit bad code when low bound of adjustable array is nonconstant
2730 and thus might vary as an expression at run time.
2733 Emit correct code for calculation of number of trips in @code{DO} loops
2735 where the loop should not execute at all.
2736 (This bug affected cases
2737 where the difference between the begin and end values was less
2738 than the step count, though probably not for floating-point cases.)
2741 Fix crash when extra parentheses surround item in
2742 @code{DATA} implied-@code{DO} list.
2745 Fix crash over minor internal inconsistencies in handling diagnostics,
2746 just substitute dummy strings where necessary.
2749 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
2752 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
2753 is a string of one or more digits.
2756 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
2759 Fix various crashes involving code with diagnosed errors.
2762 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
2763 @file{header.gcc} facility for handling systems like MS-DOS.
2766 Allow @code{INCLUDE} statement to be continued across multiple lines,
2767 even allow it to coexist with other statements on the same line.
2770 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
2771 fixes a bug involving infinite loops reading EOF with empty list-directed
2775 Remove all the @code{g77}-specific auto-configuration scripts, code,
2777 except for temporary substitutes for bsearch() and strtoul(), as
2778 too many configure/build problems were reported in these areas.
2779 People will have to fix their systems' problems themselves, or at
2780 least somewhere other than @code{g77}, which expects a working ANSI C
2781 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
2784 Complain if initialized common redeclared as larger in subsequent program
2788 Warn if blank common initialized, since its size can vary and hence
2789 related warnings that might be helpful won't be seen.
2792 New @samp{-fbackslash} option, on by default, that causes @samp{\}
2793 within @code{CHARACTER}
2794 and Hollerith constants to be interpreted a la GNU C.
2796 this behavior is somewhat different from @code{f2c}'s, which supports only
2797 a limited subset of backslash (escape) sequences.
2800 Make @samp{-fugly-args} the default.
2803 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
2804 to be specified as initial values for variables or named constants
2805 (@code{PARAMETER}), and also allows character<->numeric conversion in
2806 those contexts---turn off via @samp{-fno-ugly-init}.
2809 New @samp{-finit-local-zero} option to initialize
2810 local variables to binary zeros.
2811 This does not affect whether they are @code{SAVE}d, i.e. made
2812 automatic or static.
2815 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
2817 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
2820 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
2821 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
2822 requires @samp{-O}), and implies @samp{-Wunused} as well.
2825 @samp{-Wunused} no longer gives spurious messages for unused
2826 @code{EXTERNAL} names (since they are assumed to refer to block data
2827 program units, to make use of libraries more reliable).
2830 Support @code{%LOC()} and @code{LOC()} of character arguments.
2833 Support null (zero-length) character constants and expressions.
2836 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
2839 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
2840 character expressions that are valid in assignments but
2841 not normally as actual arguments.
2844 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
2847 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
2848 in @code{BLOCK DATA}, even though these are not allowed by the standard.
2851 Allow @code{RETURN} in main program unit.
2854 Changes to Hollerith-constant support to obey Appendix C of the
2859 Now padded on the right with zeros, not spaces.
2862 Hollerith ``format specifications'' in the form of arrays of
2863 non-character allowed.
2866 Warnings issued when non-space truncation occurs when converting
2870 When specified as actual argument, now passed
2871 by reference to @code{INTEGER} (padded on right with spaces if constant
2872 too small, otherwise fully intact if constant wider the @code{INTEGER}
2873 type) instead of by value.
2876 @strong{Warning:} @code{f2c} differs on the
2877 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
2878 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
2879 as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary
2880 to widen to @code{INTEGER}), essentially.
2883 Changes and fixes to typeless-constant support:
2887 Now treated as a typeless double-length @code{INTEGER} value.
2890 Warnings issued when overflow occurs.
2893 Padded on the left with zeros when converting
2897 Should be properly aligned and ordered on
2898 the target machine for whatever type it is turned into.
2901 When specified as actual argument, now passed as reference to
2902 a default @code{INTEGER} constant.
2906 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
2907 the expression plus a length for the expression just as if
2908 it were a @code{CHARACTER} expression.
2909 For example, @samp{CALL FOO(%DESCR(D))}, where
2910 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
2913 Name of multi-entrypoint master function changed to incorporate
2914 the name of the primary entry point instead of a decimal
2915 value, so the name of the master function for @samp{SUBROUTINE X}
2916 with alternate entry points is now @samp{__g77_masterfun_x}.
2919 Remove redundant message about zero-step-count @code{DO} loops.
2922 Clean up diagnostic messages, shortening many of them.
2925 Fix typo in @code{g77} man page.
2928 Clarify implications of constant-handling bugs in @file{f/BUGS}.
2931 Generate better code for @samp{**} operator with a right-hand operand of
2932 type @code{INTEGER}.
2935 Generate better code for @code{SQRT()} and @code{DSQRT()},
2936 also when @samp{-ffast-math}
2937 specified, enable better code generation for @code{SIN()} and @code{COS()}.
2940 Generate better code for some kinds of array references.
2943 Speed up lexing somewhat (this makes the compilation phase noticeably