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-05-06
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 @code{egcs} 1.2 (versus 1.1.2):
158 @code{g77} no longer generates bad code for assignments,
159 or other conversions,
160 of @code{REAL} or @code{COMPLEX} constant expressions
161 to type @code{INTEGER(KIND=2)}
162 (often referred to as @code{INTEGER*8}).
164 For example, @samp{INTEGER*8 J; J = 4E10} now works as documented.
169 @code{g77} no longer generates bad code
170 for an assignment to a @code{COMPLEX} variable or array
171 that partially overlaps one or more of the sources
172 of the same assignment
173 (a very rare construction).
174 It now assigns through a temporary,
175 in cases where such partial overlap is deemed possible.
180 @c Tim Prince reported this, regarding the TEST_FPU benchmark.
181 Automatic arrays now seem to be working on HP-UX systems.
186 Fix @code{g77} so it no longer crashes when compiling
187 I/O statements using keywords that define @code{INTEGER} values,
188 such as @samp{IOSTAT=@var{j}},
189 where @var{j} is other than default @code{INTEGER}
190 (such as @code{INTEGER*2}).
191 Instead, it issues a diagnostic.
196 Fix @code{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/},
197 where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2},
198 instead of producing a spurious diagnostic.
199 Also fix @samp{DATA (A(I),I=1,N)},
200 where @samp{N} is not default @code{INTEGER}
201 to work instead of crashing @code{g77}.
206 The @samp{-ax} option is now obeyed when compiling Fortran programs.
207 (It is passed to the @file{f771} driver.)
211 The new @samp{-fsubscript-check} option
212 causes @code{g77} to compile run-time bounds checks
213 of array subscripts, as well as of substring start and end points.
215 The current implementation uses the @code{libf2c}
216 library routine @code{s_rnge} to print the diagnostic.
217 Since a future version of @code{g77} might use a different implementation,
218 use the new @samp{-ff2c-subscript-check} option
219 if your application requires use of @code{s_rnge} or a compile-time diagnostic.
222 Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
223 now are recognized by @code{g77}
224 as if they ended in @samp{.for} and @samp{.fpp}, respectively.
227 The order of arguments to the @emph{subroutine} forms of the
228 @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam}
229 intrinsics has been swapped.
230 The argument serving as the returned value
231 for the corresponding function forms
232 now is the @emph{second} argument,
233 making these consistent with the other subroutine forms
234 of @code{libU77} intrinsics.
237 @code{g77} now warns about a reference to an intrinsic
238 that has an interface that is not Year 2000 (Y2K) compliant.
239 Also, the @code{libg2c} has been changed to increase the likelihood
240 of catching references to the implementations of these intrinsics
241 using the @code{EXTERNAL} mechanism
242 (which would avoid the new warnings).
245 @xref{Year 2000 (Y2K) Problems}, for more information.
250 @code{g77} now warns about a reference to a function
251 when the corresponding @emph{subsequent} function program unit
252 disagrees with the reference concerning the type of the function.
256 @samp{-fno-emulate-complex} is now the default option.
257 This should result in improved performance
258 of code that uses the @code{COMPLEX} data type.
261 @cindex double-precision performance
262 @cindex -malign-double
264 The @samp{-malign-double} option
265 now reliably aligns @emph{all} double-precision variables and arrays
266 on Intel x86 targets.
270 Even without the @samp{-malign-double} option,
271 @code{g77} reliably aligns local double-precision variables
272 that are not in @code{EQUIVALENCE} areas
273 and not @code{SAVE}'d.
278 A substantial portion of the @code{g77} front end's code-generation component
280 It now generates code using facilities more robustly supported
281 by the @code{gcc} back end.
282 One effect of this rewrite is that some codes no longer produce
283 a spurious ``label @var{lab} used before containing binding contour''
288 Support for the @samp{-fugly} option has been removed.
292 Improve documentation and indexing,
293 including information on Year 2000 (Y2K) compliance,
294 and providing more information on internals of the front end.
299 Upgrade to @code{libf2c} as of 1999-05-03.
303 @heading In 0.5.24 and @code{egcs} 1.1.2 (versus 0.5.23 and 1.1.1):
307 Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
308 so the returned year is in the documented, non-Y2K-compliant range
310 instead of being returned as 100 in the year 2000.
313 @xref{IDate Intrinsic (VXT)},
314 for more information.
318 Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
319 to return the milliseconds value properly
323 Fix the @code{LStat} intrinsic (in @code{libg2c})
324 to return device-ID information properly
328 Improve documentation.
332 @heading In 0.5.24 and @code{egcs} 1.1.1 (versus 0.5.23 and 1.1):
336 Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation
338 whenever a @code{REWIND} is done.
340 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
341 @code{g77}'s version of @code{libf2c}.)
344 Fix @code{libg2c} so it no longer crashes with a spurious diagnostic
345 upon doing any I/O following a direct formatted write.
347 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
348 @code{g77}'s version of @code{libf2c}.)
351 Fix @code{g77} so it no longer crashes compiling references
352 to the @code{Rand} intrinsic on some systems.
355 Fix @code{g77} portion of installation process so it works
356 better on some systems
357 (those with shells requiring @samp{else true} clauses
358 on @code{if} constructs
359 for the completion code to be set properly).
363 @heading In @code{egcs} 1.1 (versus 0.5.24):
367 Fix @code{g77} crash compiling code
368 containing the construct @samp{CMPLX(0.)} or similar.
374 (or apparently infinite run-time)
375 when compiling certain complicated expressions
376 involving @code{COMPLEX} arithmetic
377 (especially multiplication).
382 @cindex stack, 387 coprocessor
386 Fix a code-generation bug that afflicted
387 Intel x86 targets when @samp{-O2} was specified
388 compiling, for example, an old version of
389 the @code{DNRM2} routine.
391 The x87 coprocessor stack was being
392 mismanaged in cases involving assigned @code{GOTO}
397 @cindex double-precision performance
398 @cindex -malign-double
400 Align static double-precision variables and arrays
402 regardless of whether @samp{-malign-double} is specified.
404 Generally, this affects only local variables and arrays
405 having the @code{SAVE} attribute
406 or given initial values via @code{DATA}.
409 @c 1998-09-01: egcs-1.1 released.
410 @heading In @code{egcs} 1.1 (versus @code{egcs} 1.0.3):
414 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
415 that wrote one byte beyond the end of its @code{CHARACTER}
417 and in the @code{libU77} intrinsics
418 @code{GMTime} and @code{LTime}
419 that overwrote their arguments.
424 Assumed arrays with negative bounds
425 (such as @samp{REAL A(-1:*)})
426 no longer elicit spurious diagnostics from @code{g77},
427 even on systems with pointers having
428 different sizes than integers.
430 This bug is not known to have existed in any
431 recent version of @code{gcc}.
432 It was introduced in an early release of @code{egcs}.
437 Valid combinations of @code{EXTERNAL},
438 passing that external as a dummy argument
439 without explicitly giving it a type,
440 and, in a subsequent program unit,
441 referencing that external as
442 an external function with a different type
443 no longer crash @code{g77}.
448 @code{CASE DEFAULT} no longer crashes @code{g77}.
453 The @samp{-Wunused} option no longer issues a spurious
454 warning about the ``master'' procedure generated by
455 @code{g77} for procedures containing @code{ENTRY} statements.
459 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
460 compile-time constant @code{INTEGER} expression.
463 Fix @code{g77} @samp{-g} option so procedures that
464 use @code{ENTRY} can be stepped through, line by line,
468 Allow any @code{REAL} argument to intrinsics
469 @code{Second} and @code{CPU_Time}.
472 Use @code{tempnam}, if available, to open scratch files
473 (as in @samp{OPEN(STATUS='SCRATCH')})
474 so that the @code{TMPDIR} environment variable,
478 @code{g77}'s version of @code{libf2c} separates out
479 the setting of global state
480 (such as command-line arguments and signal handling)
481 from @file{main.o} into distinct, new library
484 This should make it easier to write portable applications
485 that have their own (non-Fortran) @code{main()} routine
486 properly set up the @code{libf2c} environment, even
487 when @code{libf2c} (now @code{libg2c}) is a shared library.
491 @code{g77} no longer installs the @file{f77} command
492 and @file{f77.1} man page
493 in the @file{/usr} or @file{/usr/local} heirarchy,
494 even if the @file{f77-install-ok} file exists
495 in the source or build directory.
496 See the installation documentation for more information.
501 @code{g77} no longer installs the @file{libf2c.a} library
502 and @file{f2c.h} include file
503 in the @file{/usr} or @file{/usr/local} heirarchy,
504 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
505 in the source or build directory.
506 See the installation documentation for more information.
511 The @file{libf2c.a} library produced by @code{g77} has been
512 renamed to @file{libg2c.a}.
513 It is installed only in the @code{gcc} ``private''
514 directory heirarchy, @file{gcc-lib}.
515 This allows system administrators and users to choose which
516 version of the @code{libf2c} library from @code{netlib} they
517 wish to use on a case-by-case basis.
518 See the installation documentation for more information.
523 The @file{f2c.h} include (header) file produced by @code{g77}
524 has been renamed to @file{g2c.h}.
525 It is installed only in the @code{gcc} ``private''
526 directory heirarchy, @file{gcc-lib}.
527 This allows system administrators and users to choose which
528 version of the include file from @code{netlib} they
529 wish to use on a case-by-case basis.
530 See the installation documentation for more information.
534 The @code{g77} command now expects the run-time library
535 to be named @code{libg2c.a} instead of @code{libf2c.a},
536 to ensure that a version other than the one built and
537 installed as part of the same @code{g77} version is picked up.
541 During the configuration and build process,
542 @code{g77} creates subdirectories it needs only as it
544 Other cleaning up of the configuration and build process
545 has been performed as well.
550 @code{install-info} now used to update the directory of
551 Info documentation to contain an entry for @code{g77}
552 (during installation).
556 Some diagnostics have been changed from warnings to errors,
557 to prevent inadvertent use of the resulting, probably buggy,
559 These mostly include diagnostics about use of unsupported features
560 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
561 @code{WRITE} statements,
562 and about truncations of various sorts of constants.
566 Improve compilation of @code{FORMAT} expressions so that
567 a null byte is appended to the last operand if it
569 This provides a cleaner run-time diagnostic as provided
570 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
575 Improve documentation and indexing.
580 The upgrade to @code{libf2c} as of 1998-06-18
581 should fix a variety of problems, including
582 those involving some uses of the @code{T} format
583 specifier, and perhaps some build (porting) problems
588 @heading In 0.5.24 and @code{egcs} 1.1 (versus 0.5.23):
592 @code{g77} no longer produces incorrect code
594 for @code{EQUIVALENCE} and @code{COMMON}
595 aggregates that, due to ``unnatural'' ordering of members
596 vis-a-vis their types, require initial padding.
601 @code{g77} no longer crashes when compiling code
602 containing specification statements such as
603 @samp{INTEGER(KIND=7) PTR}.
608 @code{g77} no longer crashes when compiling code
609 such as @samp{J = SIGNAL(1, 2)}.
613 @code{g77} now treats @samp{%LOC(@var{expr})} and
614 @samp{LOC(@var{expr})} as ``ordinary'' expressions
615 when they are used as arguments in procedure calls.
616 This change applies only to global (filewide) analysis,
617 making it consistent with
618 how @code{g77} actually generates code
621 Previously, @code{g77} treated these expressions
622 as denoting special ``pointer'' arguments
623 for the purposes of filewide analysis.
626 The @code{g77} driver now ensures that @samp{-lg2c}
627 is specified in the link phase prior to any
628 occurrence of @samp{-lm}.
629 This prevents accidentally linking to a routine
630 in the SunOS4 @samp{-lm} library
631 when the generated code wants to link to the one
632 in @code{libf2c} (@code{libg2c}).
635 @code{g77} emits more debugging information when
638 This new information allows, for example,
639 @kbd{which __g77_length_a} to be used in @code{gdb}
640 to determine the type of the phantom length argument
641 supplied with @code{CHARACTER} variables.
643 This information pertains to internally-generated
644 type, variable, and other information,
645 not to the longstanding deficiencies vis-a-vis
646 @code{COMMON} and @code{EQUIVALENCE}.
649 The F90 @code{Date_and_Time} intrinsic now is
653 The F90 @code{System_Clock} intrinsic allows
654 the optional arguments (except for the @code{Count}
655 argument) to be omitted.
659 Upgrade to @code{libf2c} as of 1998-06-18.
664 Improve documentation and indexing.
669 @heading In previous versions:
671 Information on previous versions is not provided
672 in this @file{@value{path-g77}/NEWS} file,
674 See @file{@value{path-g77}/news.texi},
675 or any of its other derivations
676 (Info, HTML, dvi forms)
677 for such information.
681 @c 1998-05-20: 0.5.23 released.
682 @heading In 0.5.23 (versus 0.5.22):
685 This release contains several regressions against
686 version 0.5.22 of @code{g77}, due to using the
687 ``vanilla'' @code{gcc} back end instead of patching
688 it to fix a few bugs and improve performance in a
691 Features that have been dropped from this version
692 of @code{g77} due to their being implemented
693 via @code{g77}-specific patches to the @code{gcc}
694 back end in previous releases include:
698 Support for @code{__restrict__} keyword,
699 the options @samp{-fargument-alias}, @samp{-fargument-noalias},
700 and @samp{-fargument-noalias-global},
701 and the corresponding alias-analysis code.
703 (@code{egcs} has the alias-analysis
704 code, but not the @code{__restrict__} keyword.
705 @code{egcs} @code{g77} users benefit from the alias-analysis
706 code despite the lack of the @code{__restrict__} keyword,
707 which is a C-language construct.)
710 Support for the GNU compiler options
711 @samp{-fmove-all-movables},
712 @samp{-freduce-all-givs},
713 and @samp{-frerun-loop-opt}.
715 (@code{egcs} supports these options.
716 @code{g77} users of @code{egcs} benefit from them even if
717 they are not explicitly specified,
718 because the defaults are optimized for @code{g77} users.)
721 Support for the @samp{-W} option warning about
722 integer division by zero.
725 The Intel x86-specific option @samp{-malign-double}
726 applying to stack-allocated data
727 as well as statically-allocate data.
731 Note that the @file{gcc/f/gbe/} subdirectory has been removed
732 from this distribution as a result of @code{g77} no longer
733 including patches for the @code{gcc} back end.
738 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
739 that wrote one byte beyond the end of its @code{CHARACTER}
741 and in the @code{libU77} intrinsics
742 @code{GMTime} and @code{LTime}
743 that overwrote their arguments.
747 Support @code{gcc} version 2.8,
748 and remove support for prior versions of @code{gcc}.
750 @cindex -@w{}-driver option
751 @cindex @code{g77} options, -@w{}-driver
752 @cindex options, -@w{}-driver
754 Remove support for the @samp{--driver} option,
755 as @code{g77} now does all the driving,
756 just like @code{gcc}.
760 @code{CASE DEFAULT} no longer crashes @code{g77}.
765 Valid combinations of @code{EXTERNAL},
766 passing that external as a dummy argument
767 without explicitly giving it a type,
768 and, in a subsequent program unit,
769 referencing that external as
770 an external function with a different type
771 no longer crash @code{g77}.
776 @code{g77} no longer installs the @file{f77} command
777 and @file{f77.1} man page
778 in the @file{/usr} or @file{/usr/local} heirarchy,
779 even if the @file{f77-install-ok} file exists
780 in the source or build directory.
781 See the installation documentation for more information.
786 @code{g77} no longer installs the @file{libf2c.a} library
787 and @file{f2c.h} include file
788 in the @file{/usr} or @file{/usr/local} heirarchy,
789 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
790 in the source or build directory.
791 See the installation documentation for more information.
796 The @file{libf2c.a} library produced by @code{g77} has been
797 renamed to @file{libg2c.a}.
798 It is installed only in the @code{gcc} ``private''
799 directory heirarchy, @file{gcc-lib}.
800 This allows system administrators and users to choose which
801 version of the @code{libf2c} library from @code{netlib} they
802 wish to use on a case-by-case basis.
803 See the installation documentation for more information.
808 The @file{f2c.h} include (header) file produced by @code{g77}
809 has been renamed to @file{g2c.h}.
810 It is installed only in the @code{gcc} ``private''
811 directory heirarchy, @file{gcc-lib}.
812 This allows system administrators and users to choose which
813 version of the include file from @code{netlib} they
814 wish to use on a case-by-case basis.
815 See the installation documentation for more information.
819 The @code{g77} command now expects the run-time library
820 to be named @code{libg2c.a} instead of @code{libf2c.a},
821 to ensure that a version other than the one built and
822 installed as part of the same @code{g77} version is picked up.
826 The @samp{-Wunused} option no longer issues a spurious
827 warning about the ``master'' procedure generated by
828 @code{g77} for procedures containing @code{ENTRY} statements.
832 @code{g77}'s version of @code{libf2c} separates out
833 the setting of global state
834 (such as command-line arguments and signal handling)
835 from @file{main.o} into distinct, new library
838 This should make it easier to write portable applications
839 that have their own (non-Fortran) @code{main()} routine
840 properly set up the @code{libf2c} environment, even
841 when @code{libf2c} (now @code{libg2c}) is a shared library.
845 During the configuration and build process,
846 @code{g77} creates subdirectories it needs only as it
847 needs them, thus avoiding unnecessary creation of, for example,
848 @file{stage1/f/runtime} when doing a non-bootstrap build.
849 Other cleaning up of the configuration and build process
850 has been performed as well.
855 @code{install-info} now used to update the directory of
856 Info documentation to contain an entry for @code{g77}
857 (during installation).
861 Some diagnostics have been changed from warnings to errors,
862 to prevent inadvertent use of the resulting, probably buggy,
864 These mostly include diagnostics about use of unsupported features
865 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
866 @code{WRITE} statements,
867 and about truncations of various sorts of constants.
871 Improve documentation and indexing.
876 Upgrade to @code{libf2c} as of 1998-04-20.
878 This should fix a variety of problems, including
879 those involving some uses of the @code{T} format
880 specifier, and perhaps some build (porting) problems
885 @c 1998-03-16: 0.5.22 released.
886 @heading In 0.5.22 (versus 0.5.21):
890 Fix code generation for iterative @code{DO} loops that
891 have one or more references to the iteration variable,
892 or to aliases of it, in their control expressions.
893 For example, @samp{DO 10 J=2,J} now is compiled correctly.
898 @cindex stack, 387 coprocessor
902 Fix a code-generation bug that afflicted
903 Intel x86 targets when @samp{-O2} was specified
904 compiling, for example, an old version of
905 the @code{DNRM2} routine.
907 The x87 coprocessor stack was being
908 mismanaged in cases involving assigned @code{GOTO}
914 Fix @code{DTime} intrinsic so as not to truncate
915 results to integer values (on some systems).
919 Fix @code{Signal} intrinsic so it offers portable
920 support for 64-bit systems (such as Digital Alphas
925 Fix run-time crash involving @code{NAMELIST} on 64-bit
926 machines such as Alphas.
931 Fix @code{g77} version of @code{libf2c} so it no longer
932 produces a spurious @samp{I/O recursion} diagnostic at run time
933 when an I/O operation (such as @samp{READ *,I}) is interrupted
934 in a manner that causes the program to be terminated
935 via the @code{f_exit} routine (such as via @kbd{C-c}).
940 Fix @code{g77} crash triggered by @code{CASE} statement with
941 an omitted lower or upper bound.
946 Fix @code{g77} crash compiling references to @code{CPU_Time}
953 (or apparently infinite run-time)
954 when compiling certain complicated expressions
955 involving @code{COMPLEX} arithmetic
956 (especially multiplication).
961 Fix @code{g77} crash on statements such as
962 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
963 @samp{Z} is @code{DOUBLE COMPLEX}.
968 Fix a @code{g++} crash.
972 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
973 compile-time constant @code{INTEGER} expression.
976 Fix @code{g77} @samp{-g} option so procedures that
977 use @code{ENTRY} can be stepped through, line by line,
982 Fix a profiling-related bug in @code{gcc} back end for
983 Intel x86 architecture.
987 Allow any @code{REAL} argument to intrinsics
988 @code{Second} and @code{CPU_Time}.
991 Allow any numeric argument to intrinsics
992 @code{Int2} and @code{Int8}.
995 Use @code{tempnam}, if available, to open scratch files
996 (as in @samp{OPEN(STATUS='SCRATCH')})
997 so that the @code{TMPDIR} environment variable,
1001 Rename the @code{gcc} keyword @code{restrict} to
1002 @code{__restrict__}, to avoid rejecting valid, existing,
1004 Support for @code{restrict} is now more like support
1007 @ifclear USERVISONLY
1009 Fix @samp{-fpedantic} to not reject procedure invocations
1010 such as @samp{I=J()} and @samp{CALL FOO()}.
1014 Fix @samp{-fugly-comma} to affect invocations of
1015 only external procedures.
1016 Restore rejection of gratuitous trailing omitted
1017 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1020 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1021 @samp{-fbadu77-intrinsics-*} options.
1023 @ifclear USERVISONLY
1025 Improve diagnostic messages from @code{libf2c}
1026 so it is more likely that the printing of the
1027 active format string is limited to the string,
1028 with no trailing garbage being printed.
1030 (Unlike @code{f2c}, @code{g77} did not append
1031 a null byte to its compiled form of every
1032 format string specified via a @code{FORMAT} statement.
1033 However, @code{f2c} would exhibit the problem
1034 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1035 by printing @samp{(I)garbage} as the format string.)
1038 @ifclear USERVISONLY
1040 Improve compilation of @code{FORMAT} expressions so that
1041 a null byte is appended to the last operand if it
1043 This provides a cleaner run-time diagnostic as provided
1044 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
1047 @ifclear USERVISONLY
1049 Fix various crashes involving code with diagnosed errors.
1052 @ifclear USERVISONLY
1054 Fix cross-compilation bug when configuring @code{libf2c}.
1057 @ifclear USERVISONLY
1059 Improve diagnostics.
1062 @ifclear USERVISONLY
1064 Improve documentation and indexing.
1067 @ifclear USERVISONLY
1069 Upgrade to @code{libf2c} as of 1997-09-23.
1070 This fixes a formatted-I/O bug that afflicted
1071 64-bit systems with 32-bit integers
1072 (such as Digital Alpha running GNU/Linux).
1076 @c 1998-03-15: egcs-1.0.2 released.
1077 @heading In @code{egcs} 1.0.2 (versus @code{egcs} 1.0.1):
1079 @ifclear USERVISONLY
1081 Fix @code{g77} crash triggered by @code{CASE} statement with
1082 an omitted lower or upper bound.
1085 @ifclear USERVISONLY
1087 Fix @code{g77} crash on statements such as
1088 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1089 @samp{Z} is @code{DOUBLE COMPLEX}.
1092 @ifclear USERVISONLY
1094 @cindex support, ELF
1095 @cindex -fPIC option
1096 @cindex options, -fPIC
1098 Fix @samp{-fPIC} (such as compiling for ELF targets)
1099 on the Intel x86 architecture target
1100 so invalid assembler code is no longer produced.
1103 @ifclear USERVISONLY
1105 Fix @samp{-fpedantic} to not reject procedure invocations
1106 such as @samp{I=J()} and @samp{CALL FOO()}.
1109 @ifclear USERVISONLY
1111 Fix @samp{-fugly-comma} to affect invocations of
1112 only external procedures.
1113 Restore rejection of gratuitous trailing omitted
1114 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1118 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1119 @samp{-fbadu77-intrinsics-*} options.
1122 @c 1998-01-02: egcs-1.0.1 released.
1123 @heading In @code{egcs} 1.0.1 (versus @code{egcs} 1.0):
1124 @ifclear USERVISONLY
1127 Fix run-time crash involving @code{NAMELIST} on 64-bit
1128 machines such as Alphas.
1132 @c 1997-12-03: egcs-1.0 released.
1133 @heading In @code{egcs} 1.0 (versus 0.5.21):
1136 Version 1.0 of @code{egcs}
1137 contains several regressions against
1138 version 0.5.21 of @code{g77},
1140 ``vanilla'' @code{gcc} back end instead of patching
1141 it to fix a few bugs and improve performance in a
1144 Features that have been dropped from this version
1145 of @code{g77} due to their being implemented
1146 via @code{g77}-specific patches to the @code{gcc}
1147 back end in previous releases include:
1151 Support for the C-language @code{restrict} keyword.
1154 Support for the @samp{-W} option warning about
1155 integer division by zero.
1158 The Intel x86-specific option @samp{-malign-double}
1159 applying to stack-allocated data
1160 as well as statically-allocate data.
1163 @ifclear USERVISONLY
1164 Note that the @file{gcc/f/gbe/} subdirectory has been removed
1165 from this distribution as a result of @code{g77}
1166 being fully integrated with
1167 the @code{egcs} variant of the @code{gcc} back end.
1170 @ifclear USERVISONLY
1172 Fix code generation for iterative @code{DO} loops that
1173 have one or more references to the iteration variable,
1174 or to aliases of it, in their control expressions.
1175 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1178 @ifclear USERVISONLY
1180 Fix @code{DTime} intrinsic so as not to truncate
1181 results to integer values (on some systems).
1184 @ifclear USERVISONLY
1186 @c Toon Moene discovered these.
1187 Some Fortran code, miscompiled
1188 by @code{g77} built on @code{gcc} version 2.8.1
1189 on m68k-next-nextstep3 configurations
1190 when using the @samp{-O2} option,
1191 is now compiled correctly.
1192 It is believed that a C function known to miscompile
1193 on that configuration
1194 when using the @samp{-O2 -funroll-loops} options
1195 also is now compiled correctly.
1198 @ifclear USERVISONLY
1200 Remove support for non-@code{egcs} versions of @code{gcc}.
1203 @cindex -@w{}-driver option
1204 @cindex @code{g77} options, -@w{}-driver
1205 @cindex options, -@w{}-driver
1207 Remove support for the @samp{--driver} option,
1208 as @code{g77} now does all the driving,
1209 just like @code{gcc}.
1212 Allow any numeric argument to intrinsics
1213 @code{Int2} and @code{Int8}.
1215 @ifclear USERVISONLY
1217 Improve diagnostic messages from @code{libf2c}
1218 so it is more likely that the printing of the
1219 active format string is limited to the string,
1220 with no trailing garbage being printed.
1222 (Unlike @code{f2c}, @code{g77} did not append
1223 a null byte to its compiled form of every
1224 format string specified via a @code{FORMAT} statement.
1225 However, @code{f2c} would exhibit the problem
1226 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1227 by printing @samp{(I)garbage} as the format string.)
1230 @ifclear USERVISONLY
1232 Upgrade to @code{libf2c} as of 1997-09-23.
1233 This fixes a formatted-I/O bug that afflicted
1234 64-bit systems with 32-bit integers
1235 (such as Digital Alpha running GNU/Linux).
1239 @c 1997-09-09: 0.5.21 released.
1242 @ifclear USERVISONLY
1244 Fix a code-generation bug introduced by 0.5.20
1245 caused by loop unrolling (by specifying
1246 @samp{-funroll-loops} or similar).
1247 This bug afflicted all code compiled by
1248 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1249 Fortran, and so on).
1252 @ifclear USERVISONLY
1254 Fix a code-generation bug manifested when
1255 combining local @code{EQUIVALENCE} with a
1256 @code{DATA} statement that follows
1257 the first executable statement (or is
1258 treated as an executable-context statement
1259 as a result of using the @samp{-fpedantic}
1263 @ifclear USERVISONLY
1265 Fix a compiler crash that occured when an
1266 integer division by a constant zero is detected.
1267 Instead, when the @samp{-W} option is specified,
1268 the @code{gcc} back end issues a warning about such a case.
1269 This bug afflicted all code compiled by
1270 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1271 Fortran, and so on).
1275 When the @samp{-W} option is specified, @code{gcc}, @code{g77},
1276 and other GNU compilers that incorporate the @code{gcc}
1277 back end as modified by @code{g77}, issue
1278 a warning about integer division by constant zero.
1281 @ifclear USERVISONLY
1283 Fix a compiler crash that occurred in some cases
1284 of procedure inlining.
1285 (Such cases became more frequent in 0.5.20.)
1288 @ifclear USERVISONLY
1290 Fix a compiler crash resulting from using @code{DATA}
1291 or similar to initialize a @code{COMPLEX} variable or
1295 @ifclear USERVISONLY
1297 Fix compiler crashes involving use of @code{AND}, @code{OR},
1298 or @code{XOR} intrinsics.
1301 @ifclear USERVISONLY
1303 Fix compiler bug triggered when using a @code{COMMON}
1304 or @code{EQUIVALENCE} variable
1305 as the target of an @code{ASSIGN}
1306 or assigned-@code{GOTO} statement.
1309 @ifclear USERVISONLY
1311 Fix compiler crashes due to using the name of a some
1312 non-standard intrinsics (such as @code{FTell} or
1313 @code{FPutC}) as such and as the name of a procedure
1315 Such dual use of a name in a program is allowed by
1319 @c @code{g77}'s version of @code{libf2c} has been modified
1320 @c so that the external names of library's procedures do not
1321 @c conflict with names used for Fortran procedures compiled
1323 @c An additional layer of jacket procedures has been added
1324 @c to @code{libf2c} to map the old names to the new names,
1325 @c for automatic use by programs that interface to the
1326 @c library procedures via the external-procedure mechanism.
1328 @c For example, the intrinsic @code{FPUTC} previously was
1329 @c implemented by @code{g77} as a call to the @code{libf2c}
1330 @c routine @code{fputc_}.
1331 @c This would conflict with a Fortran procedure named @code{FPUTC}
1332 @c (using default compiler options), and this conflict
1333 @c would cause a crash under certain circumstances.
1335 @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
1336 @c which does not conflict with the @code{fputc_} external
1337 @c that implements a Fortran procedure named @code{FPUTC}.
1339 @c Programs that refer to @code{FPUTC} as an external procedure
1340 @c without supplying their own implementation will link to
1341 @c the new @code{libf2c} routine @code{fputc_}, which is
1342 @c simply a jacket routine that calls @code{G77_fputc_0}.
1344 @ifclear USERVISONLY
1346 Place automatic arrays on the stack, even if
1347 @code{SAVE} or the @samp{-fno-automatic} option
1349 This avoids a compiler crash in some cases.
1352 @ifclear USERVISONLY
1354 The @samp{-malign-double} option now reliably aligns
1355 @code{DOUBLE PRECISION} optimally on Pentium and
1356 Pentium Pro architectures (586 and 686 in @code{gcc}).
1360 New option @samp{-Wno-globals} disables warnings
1361 about ``suspicious'' use of a name both as a global
1362 name and as the implicit name of an intrinsic, and
1363 warnings about disagreements over the number or natures of
1364 arguments passed to global procedures, or the
1365 natures of the procedures themselves.
1367 The default is to issue such warnings, which are
1368 new as of this version of @code{g77}.
1371 New option @samp{-fno-globals} disables diagnostics
1372 about potentially fatal disagreements
1373 analysis problems, such as disagreements over the
1374 number or natures of arguments passed to global
1375 procedures, or the natures of those procedures themselves.
1377 The default is to issue such diagnostics and flag
1378 the compilation as unsuccessful.
1379 With this option, the diagnostics are issued as
1380 warnings, or, if @samp{-Wno-globals} is specified,
1381 are not issued at all.
1383 This option also disables inlining of global procedures,
1384 to avoid compiler crashes resulting from coding errors
1385 that these diagnostics normally would identify.
1387 @ifclear USERVISONLY
1389 Diagnose cases where a reference to a procedure
1390 disagrees with the type of that procedure, or
1391 where disagreements about the number or nature
1393 This avoids a compiler crash.
1396 @ifclear USERVISONLY
1398 Fix parsing bug whereby @code{g77} rejected a
1399 second initialization specification immediately
1400 following the first's closing @samp{/} without
1401 an intervening comma in a @code{DATA} statement,
1402 and the second specification was an implied-DO list.
1405 @ifclear USERVISONLY
1407 Improve performance of the @code{gcc} back end so
1408 certain complicated expressions involving @code{COMPLEX}
1409 arithmetic (especially multiplication) don't appear to
1410 take forever to compile.
1413 @ifclear USERVISONLY
1415 Fix a couple of profiling-related bugs in @code{gcc}
1419 @ifclear USERVISONLY
1421 Integrate GNU Ada's (GNAT's) changes to the back end,
1422 which consist almost entirely of bug fixes.
1423 These fixes are circa version 3.10p of GNAT.
1426 @ifclear USERVISONLY
1428 Include some other @code{gcc} fixes that seem useful in
1429 @code{g77}'s version of @code{gcc}.
1430 (See @file{gcc/ChangeLog} for details---compare it
1431 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
1436 Fix @code{libU77} routines that accept file and other names
1437 to strip trailing blanks from them, for consistency
1438 with other implementations.
1439 Blanks may be forcibly appended to such names by
1440 appending a single null character (@samp{CHAR(0)})
1441 to the significant trailing blanks.
1444 Fix @code{CHMOD} intrinsic to work with file names
1445 that have embedded blanks, commas, and so on.
1448 Fix @code{SIGNAL} intrinsic so it accepts an
1449 optional third @code{Status} argument.
1451 @ifclear USERVISONLY
1453 Fix @code{IDATE()} intrinsic subroutine (VXT form)
1454 so it accepts arguments in the correct order.
1455 Documentation fixed accordingly, and for
1456 @code{GMTIME()} and @code{LTIME()} as well.
1460 Make many changes to @code{libU77} intrinsics to
1461 support existing code more directly.
1463 Such changes include allowing both subroutine and
1464 function forms of many routines, changing @code{MCLOCK()}
1465 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
1466 introducing @code{MCLOCK8()} and @code{TIME8()} to
1467 return @code{INTEGER(KIND=2)} values,
1468 and placing functions that are intended to perform
1469 side effects in a new intrinsic group, @code{badu77}.
1471 @ifclear USERVISONLY
1473 Improve @code{libU77} so it is more portable.
1477 Add options @samp{-fbadu77-intrinsics-delete},
1478 @samp{-fbadu77-intrinsics-hide}, and so on.
1480 @ifclear USERVISONLY
1482 Fix crashes involving diagnosed or invalid code.
1485 @ifclear USERVISONLY
1487 @code{g77} and @code{gcc} now do a somewhat better
1488 job detecting and diagnosing arrays that are too
1489 large to handle before these cause diagnostics
1490 during the assembler or linker phase, a compiler
1491 crash, or generation of incorrect code.
1494 @ifclear USERVISONLY
1496 Make some fixes to alias analysis code.
1499 @ifclear USERVISONLY
1501 Add support for @code{restrict} keyword in @code{gcc}
1505 @ifclear USERVISONLY
1507 Support @code{gcc} version 2.7.2.3
1508 (modified by @code{g77} into version 2.7.2.3.f.1),
1510 support for prior versions of @code{gcc}.
1513 @ifclear USERVISONLY
1515 Incorporate GNAT's patches to the @code{gcc} back
1516 end into @code{g77}'s, so GNAT users do not need
1517 to apply GNAT's patches to build both GNAT and @code{g77}
1518 from the same source tree.
1521 @ifclear USERVISONLY
1523 Modify @code{make} rules and related code so that
1524 generation of Info documentation doesn't require
1525 compilation using @code{gcc}.
1526 Now, any ANSI C compiler should be adequate to
1527 produce the @code{g77} documentation (in particular,
1528 the tables of intrinsics) from scratch.
1532 Add @code{INT2} and @code{INT8} intrinsics.
1535 Add @code{CPU_TIME} intrinsic.
1538 Add @code{ALARM} intrinsic.
1541 @code{CTIME} intrinsic now accepts any @code{INTEGER}
1542 argument, not just @code{INTEGER(KIND=2)}.
1544 @ifclear USERVISONLY
1546 Warn when explicit type declaration disagrees with
1547 the type of an intrinsic invocation.
1550 @ifclear USERVISONLY
1552 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
1555 @ifclear USERVISONLY
1557 Fix typo in @code{make} rule @code{g77-cross}, used only for
1561 @ifclear USERVISONLY
1563 Fix @code{libf2c} build procedure to re-archive library
1564 if previous attempt to archive was interrupted.
1567 @ifclear USERVISONLY
1569 Change @code{gcc} to unroll loops only during the last
1570 invocation (of as many as two invocations) of loop
1574 @ifclear USERVISONLY
1576 Improve handling of @samp{-fno-f2c} so that code that
1577 attempts to pass an intrinsic as an actual argument,
1578 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
1579 that the run-time-library routine is, effectively,
1580 compiled with @samp{-ff2c} in effect.
1583 @ifclear USERVISONLY
1585 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
1586 as an option that inhibits linking, just like @samp{-c} or
1587 @samp{-S}, and to recognize and properly handle the
1588 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
1589 and @samp{-Xlinker} options.
1592 @ifclear USERVISONLY
1594 Upgrade to @code{libf2c} as of 1997-08-16.
1597 @ifclear USERVISONLY
1599 Modify @code{libf2c} to consistently and clearly diagnose
1600 recursive I/O (at run time).
1604 @code{g77} driver now prints version information (such as produced
1605 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
1608 The @samp{.r} suffix now designates a Ratfor source file,
1609 to be preprocessed via the @code{ratfor} command, available
1612 @ifclear USERVISONLY
1614 Fix some aspects of how @code{gcc} determines what kind of
1615 system is being configured and what kinds are supported.
1616 For example, GNU Linux/Alpha ELF systems now are directly
1620 @ifclear USERVISONLY
1622 Improve diagnostics.
1625 @ifclear USERVISONLY
1627 Improve documentation and indexing.
1630 @ifclear USERVISONLY
1632 Include all pertinent files for @code{libf2c} that come
1633 from @code{netlib.bell-labs.com}; give any such files
1634 that aren't quite accurate in @code{g77}'s version of
1635 @code{libf2c} the suffix @samp{.netlib}.
1638 @ifclear USERVISONLY
1640 Reserve @code{INTEGER(KIND=0)} for future use.
1644 @c 1997-02-28: 0.5.20 released.
1648 The @samp{-fno-typeless-boz} option is now the default.
1650 This option specifies that non-decimal-radix
1651 constants using the prefixed-radix form (such as @samp{Z'1234'})
1652 are to be interpreted as @code{INTEGER(KIND=1)} constants.
1653 Specify @samp{-ftypeless-boz} to cause such
1654 constants to be interpreted as typeless.
1656 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
1660 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect},
1661 for information on the @samp{-ftypeless-boz} option.
1665 Options @samp{-ff90-intrinsics-enable} and
1666 @samp{-fvxt-intrinsics-enable} now are the
1669 Some programs might use names that clash with
1670 intrinsic names defined (and now enabled) by these
1671 options or by the new @code{libU77} intrinsics.
1672 Users of such programs might need to compile them
1673 differently (using, for example, @samp{-ff90-intrinsics-disable})
1674 or, better yet, insert appropriate @code{EXTERNAL}
1675 statements specifying that these names are not intended
1676 to be names of intrinsics.
1679 The @code{ALWAYS_FLUSH} macro is no longer defined when
1680 building @code{libf2c}, which should result in improved
1681 I/O performance, especially over NFS.
1683 @emph{Note:} If you have code that depends on the behavior
1684 of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
1685 you will have to modify @code{libf2c} accordingly before
1686 building it from this and future versions of @code{g77}.
1689 @xref{Output Assumed To Flush}, for more information.
1693 Dave Love's implementation of @code{libU77} has been
1694 added to the version of @code{libf2c} distributed with
1695 and built as part of @code{g77}.
1696 @code{g77} now knows about the routines in this library
1700 New option @samp{-fvxt} specifies that the
1701 source file is written in VXT Fortran, instead of GNU Fortran.
1704 @xref{VXT Fortran}, for more information on the constructs
1705 recognized when the @samp{-fvxt} option is specified.
1709 The @samp{-fvxt-not-f90} option has been deleted,
1710 along with its inverse, @samp{-ff90-not-vxt}.
1712 If you used one of these deleted options, you should
1713 re-read the pertinent documentation to determine which
1714 options, if any, are appropriate for compiling your
1715 code with this version of @code{g77}.
1718 @xref{Other Dialects}, for more information.
1722 The @samp{-fugly} option now issues a warning, as it
1723 likely will be removed in a future version.
1725 (Enabling all the @samp{-fugly-*} options is unlikely
1726 to be feasible, or sensible, in the future,
1727 so users should learn to specify only those
1728 @samp{-fugly-*} options they really need for a
1729 particular source file.)
1732 The @samp{-fugly-assumed} option, introduced in
1733 version 0.5.19, has been changed to
1734 better accommodate old and new code.
1737 @xref{Ugly Assumed-Size Arrays}, for more information.
1740 @ifclear USERVISONLY
1742 Make a number of fixes to the @code{g77} front end and
1743 the @code{gcc} back end to better support Alpha (AXP)
1745 This includes providing at least one bug-fix to the
1746 @code{gcc} back end for Alphas.
1750 Related to supporting Alpha (AXP) machines, the @code{LOC()}
1751 intrinsic and @code{%LOC()} construct now return
1752 values of @code{INTEGER(KIND=0)} type,
1753 as defined by the GNU Fortran language.
1755 This type is wide enough
1756 (holds the same number of bits)
1757 as the character-pointer type on the machine.
1759 On most machines, this won't make a difference,
1760 whereas, on Alphas and other systems with 64-bit pointers,
1761 the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)}
1762 (often referred to as @code{INTEGER*8})
1763 instead of the more common @code{INTEGER(KIND=1)}
1764 (often referred to as @code{INTEGER*4}).
1767 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
1768 end, to avoid bugs in @code{complex} support in the
1769 @code{gcc} back end.
1770 New option @samp{-fno-emulate-complex}
1771 causes @code{g77} to revert the 0.5.19 behavior.
1773 @ifclear USERVISONLY
1775 Fix bug whereby @samp{REAL A(1)}, for example, caused
1776 a compiler crash if @samp{-fugly-assumed} was in effect
1777 and @var{A} was a local (automatic) array.
1778 That case is no longer affected by the new
1779 handling of @samp{-fugly-assumed}.
1782 @ifclear USERVISONLY
1784 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
1785 no longer deletes @file{foo.f} before issuing other
1786 diagnostics, and so the @samp{-x} option is properly
1790 @ifclear USERVISONLY
1792 Enable inlining of subroutines and functions by the @code{gcc}
1794 This works as it does for @code{gcc} itself---program units
1795 may be inlined for invocations that follow them in the same
1796 program unit, as long as the appropriate compile-time
1797 options are specified.
1801 Dummy arguments are no longer assumed to potentially alias
1803 other dummy arguments or @code{COMMON} areas when any of
1804 these are defined (assigned to) by Fortran code.
1806 This can result in faster and/or smaller programs when
1807 compiling with optimization enabled, though on some
1808 systems this effect is observed only when @samp{-fforce-addr}
1811 New options @samp{-falias-check}, @samp{-fargument-alias},
1812 @samp{-fargument-noalias},
1813 and @samp{-fno-argument-noalias-global} control the
1814 way @code{g77} handles potential aliasing.
1817 @xref{Aliasing Assumed To Work}, for detailed information on why the
1818 new defaults might result in some programs no longer working the way they
1819 did when compiled by previous versions of @code{g77}.
1822 @ifclear USERVISONLY
1824 The @code{CONJG()} and @code{DCONJG()} intrinsics now
1825 are compiled in-line.
1828 @ifclear USERVISONLY
1830 The bug-fix for 0.5.19.1 has been re-done.
1831 The @code{g77} compiler has been changed back to
1832 assume @code{libf2c} has no aliasing problems in
1833 its implementations of the @code{COMPLEX} (and
1834 @code{DOUBLE COMPLEX}) intrinsics.
1835 The @code{libf2c} has been changed to have no such
1838 As a result, 0.5.20 is expected to offer improved performance
1839 over 0.5.19.1, perhaps as good as 0.5.19 in most
1840 or all cases, due to this change alone.
1842 @emph{Note:} This change requires version 0.5.20 of
1843 @code{libf2c}, at least, when linking code produced
1844 by any versions of @code{g77} other than 0.5.19.1.
1845 Use @samp{g77 -v} to determine the version numbers
1846 of the @code{libF77}, @code{libI77}, and @code{libU77}
1847 components of the @code{libf2c} library.
1848 (If these version numbers are not printed---in
1849 particular, if the linker complains about unresolved
1850 references to names like @samp{g77__fvers__}---that
1851 strongly suggests your installation has an obsolete
1852 version of @code{libf2c}.)
1856 New option @samp{-fugly-assign} specifies that the
1857 same memory locations are to be used to hold the
1858 values assigned by both statements @samp{I = 3} and
1859 @samp{ASSIGN 10 TO I}, for example.
1860 (Normally, @code{g77} uses a separate memory location
1861 to hold assigned statement labels.)
1864 @xref{Ugly Assigned Labels}, for more information.
1868 @code{FORMAT} and @code{ENTRY} statements now are allowed to
1869 precede @code{IMPLICIT NONE} statements.
1871 @ifclear USERVISONLY
1873 Produce diagnostic for unsupported @code{SELECT CASE} on
1874 @code{CHARACTER} type, instead of crashing, at compile time.
1877 @ifclear USERVISONLY
1879 Fix crashes involving diagnosed or invalid code.
1882 @ifclear USERVISONLY
1884 Change approach to building @code{libf2c} archive
1885 (@file{libf2c.a}) so that members are added to it
1886 only when truly necessary, so the user that installs
1887 an already-built @code{g77} doesn't need to have write
1888 access to the build tree (whereas the user doing the
1889 build might not have access to install new software
1893 @ifclear USERVISONLY
1895 Support @code{gcc} version 2.7.2.2
1896 (modified by @code{g77} into version 2.7.2.2.f.2),
1898 support for prior versions of @code{gcc}.
1901 @ifclear USERVISONLY
1903 Upgrade to @code{libf2c} as of 1997-02-08, and
1904 fix up some of the build procedures.
1907 @ifclear USERVISONLY
1909 Improve general build procedures for @code{g77},
1910 fixing minor bugs (such as deletion of any file
1911 named @file{f771} in the parent directory of @code{gcc/}).
1915 Enable full support of @code{INTEGER(KIND=2)}
1916 (often referred to as @code{INTEGER*8})
1918 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
1919 may make full use of its features via the @code{g77}
1920 version of @file{f2c.h} and the @code{INTEGER(KIND=2)}
1921 support routines in the @code{g77} version of @code{libf2c}.
1924 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
1925 yields version information on the library.
1928 The @code{SNGL} and @code{FLOAT} intrinsics now are
1929 specific intrinsics, instead of synonyms for the
1930 generic intrinsic @code{REAL}.
1933 New intrinsics have been added.
1934 These are @code{REALPART}, @code{IMAGPART},
1936 @code{LONG}, and @code{SHORT}.
1939 A new group of intrinsics, @code{gnu}, has been added
1940 to contain the new @code{REALPART}, @code{IMAGPART},
1941 and @code{COMPLEX} intrinsics.
1942 An old group, @code{dcp}, has been removed.
1945 Complain about industry-wide ambiguous references
1946 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
1947 where @var{expr} is @code{DOUBLE COMPLEX} (or any
1948 complex type other than @code{COMPLEX}), unless
1949 @samp{-ff90} option specifies Fortran 90 interpretation
1950 or new @samp{-fugly-complex} option, in conjunction with
1951 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
1953 @ifclear USERVISONLY
1955 Make improvements to diagnostics.
1958 @ifclear USERVISONLY
1960 Speed up compiler a bit.
1963 @ifclear USERVISONLY
1965 Improvements to documentation and indexing, including
1966 a new chapter containing information on one, later
1967 more, diagnostics that users are directed to pull
1968 up automatically via a message in the diagnostic itself.
1970 (Hence the menu item @code{M} for the node
1971 @code{Diagnostics} in the top-level menu of
1972 the Info documentation.)
1976 @ifclear DOC-OLDNEWS
1977 @heading In previous versions:
1979 Information on previous versions is archived
1980 in @file{@value{path-g77}/news.texi}
1981 following the test of the @code{DOC-OLDNEWS} macro.
1985 @c 1997-02-01: 0.5.19.1 released.
1986 @heading In 0.5.19.1:
1989 Code-generation bugs afflicting operations on complex
1990 data have been fixed.
1992 These bugs occurred when assigning the result of an
1993 operation to a complex variable (or array element)
1994 that also served as an input to that operation.
1996 The operations affected by this bug were: @code{CONJG()},
1997 @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
1998 @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
1999 @code{CSQRT()}, @code{CDSQRT()}, complex division, and
2000 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
2002 (The related generic and @samp{Z}-prefixed intrinsics,
2003 such as @code{ZSIN()}, also were affected.)
2005 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
2006 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
2007 @code{DOUBLE COMPLEX}) have been fixed.
2010 @c 1996-12-07: 0.5.19 released.
2014 Fix @code{FORMAT} statement parsing so negative values for
2015 specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
2016 are correctly processed as negative.
2019 Fix @code{SIGNAL} intrinsic so it once again accepts a
2020 procedure as its second argument.
2023 A temporary kludge option provides bare-bones information on
2024 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
2027 New @samp{-fonetrip} option specifies FORTRAN-66-style
2028 one-trip @code{DO} loops.
2031 New @samp{-fno-silent} option causes names of program units
2032 to be printed as they are compiled, in a fashion similar to
2033 UNIX @code{f77} and @code{f2c}.
2036 New @samp{-fugly-assumed} option specifies that arrays
2037 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
2038 treated as assumed-size.
2041 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
2042 constants using the prefixed-radix form (such as @samp{Z'1234'})
2043 are to be interpreted as @code{INTEGER} constants.
2046 New @samp{-ff66} option is a ``shorthand'' option that specifies
2047 behaviors considered appropriate for FORTRAN 66 programs.
2050 New @samp{-ff77} option is a ``shorthand'' option that specifies
2051 behaviors considered appropriate for UNIX @code{f77} programs.
2054 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
2055 to perform some of what @samp{-fugly} used to do.
2056 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
2057 in that they do nothing more than enable (or disable) other
2058 @samp{-fugly-*} options.
2061 Fix parsing of assignment statements involving targets that
2062 are substrings of elements of @code{CHARACTER} arrays having
2063 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
2064 @samp{REALFUNCTIONFOO}.
2067 Fix crashes involving diagnosed code.
2070 Fix handling of local @code{EQUIVALENCE} areas so certain cases
2071 of valid Fortran programs are not misdiagnosed as improperly
2072 extending the area backwards.
2075 Support @code{gcc} version 2.7.2.1.
2078 Upgrade to @code{libf2c} as of 1996-09-26, and
2079 fix up some of the build procedures.
2082 Change code generation for list-directed I/O so it allows
2083 for new versions of @code{libf2c} that might return non-zero
2084 status codes for some operations previously assumed to always
2087 This change not only affects how @code{IOSTAT=} variables
2088 are set by list-directed I/O, it also affects whether
2089 @code{END=} and @code{ERR=} labels are reached by these
2093 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
2094 procedures in @code{libf2c}.
2097 Modify @code{fseek_()} in @code{libf2c} to be more portable
2098 (though, in practice, there might be no systems where this
2099 matters) and to catch invalid @code{whence} arguments.
2102 Some useless warnings from the @samp{-Wunused} option have
2106 Fix a problem building the @file{f771} executable
2107 on AIX systems by linking with the @samp{-bbigtoc} option.
2110 Abort configuration if @code{gcc} has not been patched
2111 using the patch file provided in the @file{gcc/f/gbe/}
2115 Add options @samp{--help} and @samp{--version} to the
2116 @code{g77} command, to conform to GNU coding guidelines.
2117 Also add printing of @code{g77} version number when
2118 the @samp{--verbose} (@samp{-v}) option is used.
2121 Change internally generated name for local @code{EQUIVALENCE}
2122 areas to one based on the alphabetically sorted first name
2123 in the list of names for entities placed at the beginning
2127 Improvements to documentation and indexing.
2130 @c 1996-04-01: 0.5.18 released.
2134 Add some rudimentary support for @code{INTEGER*1},
2135 @code{INTEGER*2}, @code{INTEGER*8},
2136 and their @code{LOGICAL} equivalents.
2137 (This support works on most, maybe all, @code{gcc} targets.)
2139 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2140 for providing the patch for this!
2142 Among the missing elements from the support for these
2143 features are full intrinsic support and constants.
2146 Add some rudimentary support for the @code{BYTE} and
2147 @code{WORD} type-declaration statements.
2148 @code{BYTE} corresponds to @code{INTEGER*1},
2149 while @code{WORD} corresponds to @code{INTEGER*2}.
2151 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2152 for providing the patch for this!
2155 The compiler code handling intrinsics has been largely
2156 rewritten to accommodate the new types.
2157 No new intrinsics or arguments for existing
2158 intrinsics have been added, so there is, at this
2159 point, no intrinsic to convert to @code{INTEGER*8},
2163 Support automatic arrays in procedures.
2166 Reduce space/time requirements for handling large
2167 @emph{sparsely} initialized aggregate arrays.
2168 This improvement applies to only a subset of
2169 the general problem to be addressed in 0.6.
2172 Treat initial values of zero as if they weren't
2173 specified (in DATA and type-declaration statements).
2174 The initial values will be set to zero anyway, but the amount
2175 of compile time processing them will be reduced,
2176 in some cases significantly (though, again, this
2177 is only a subset of the general problem to be
2180 A new option, @samp{-fzeros}, is introduced to
2181 enable the traditional treatment of zeros as any
2185 With @samp{-ff90} in force, @code{g77} incorrectly
2186 interpreted @samp{REAL(Z)} as returning a @code{REAL}
2187 result, instead of as a @code{DOUBLE PRECISION}
2189 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
2191 With @samp{-fno-f90} in force, the interpretation remains
2192 unchanged, since this appears to be how at least some
2193 F77 code using the @code{DOUBLE COMPLEX} extension expected
2196 Essentially, @samp{REAL(Z)} in F90 is the same as
2197 @samp{DBLE(Z)}, while in extended F77, it appears to
2198 be the same as @samp{REAL(REAL(Z))}.
2201 An expression involving exponentiation, where both operands
2202 were type @code{INTEGER} and the right-hand operand
2203 was negative, was erroneously evaluated.
2206 Fix bugs involving @code{DATA} implied-@code{DO} constructs
2207 (these involved an errant diagnostic and a crash, both on good
2208 code, one involving subsequent statement-function definition).
2211 Close @code{INCLUDE} files after processing them, so compiling source
2212 files with lots of @code{INCLUDE} statements does not result in
2213 being unable to open @code{INCLUDE} files after all the available
2214 file descriptors are used up.
2217 Speed up compiling, especially of larger programs, and perhaps
2218 slightly reduce memory utilization while compiling (this is
2219 @emph{not} the improvement planned for 0.6 involving large aggregate
2220 areas)---these improvements result from simply turning
2221 off some low-level code to do self-checking that hasn't been
2222 triggered in a long time.
2225 Introduce three new options that
2226 implement optimizations in the @code{gcc} back end (GBE).
2227 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
2228 and @samp{-frerun-loop-opt}, which are enabled, by default,
2229 for Fortran compilations.
2230 These optimizations are intended to help toon Fortran programs.
2233 Patch the GBE to do a better job optimizing certain
2234 kinds of references to array elements.
2237 Due to patches to the GBE, the version number of @code{gcc}
2238 also is patched to make it easier to manage installations,
2239 especially useful if it turns out a @code{g77} change to the
2242 The @code{g77}-modified version number is the @code{gcc}
2243 version number with the string @samp{.f.@var{n}} appended,
2244 where @samp{f} identifies the version as enhanced for
2245 Fortran, and @var{n} is @samp{1} for the first Fortran
2246 patch for that version of @code{gcc}, @samp{2} for the
2249 So, this introduces version 2.7.2.f.1 of @code{gcc}.
2252 Make several improvements and fixes to diagnostics, including
2253 the removal of two that were inappropriate or inadequate.
2256 Warning about two successive arithmetic operators, produced
2257 by @samp{-Wsurprising}, now produced @emph{only} when both
2258 operators are, indeed, arithmetic (not relational/boolean).
2261 @samp{-Wsurprising} now warns about the remaining cases
2262 of using non-integral variables for implied-@code{DO}
2263 loops, instead of these being rejected unless @samp{-fpedantic}
2264 or @samp{-fugly} specified.
2267 Allow @code{SAVE} of a local variable or array, even after
2268 it has been given an initial value via @code{DATA}, for example.
2271 Introduce an Info version of @code{g77} documentation, which
2272 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
2273 @file{gcc/f/PROJECTS}.
2274 These files will be removed in a future release.
2275 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
2276 @file{gcc/f/NEWS} now are automatically built from
2277 the texinfo source when distributions are made.
2279 This effort was inspired by a first pass at translating
2280 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
2281 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
2284 New @samp{-fno-second-underscore} option to specify
2285 that, when @samp{-funderscoring} is in effect, a second
2286 underscore is not to be appended to Fortran names already
2287 containing an underscore.
2290 Change the way iterative @code{DO} loops work to follow
2292 In particular, calculation of the iteration count is
2293 still done by converting the start, end, and increment
2294 parameters to the type of the @code{DO} variable, but
2295 the result of the calculation is always converted to
2296 the default @code{INTEGER} type.
2298 (This should have no effect on existing code compiled
2299 by @code{g77}, but code written to assume that use
2300 of a @emph{wider} type for the @code{DO} variable
2301 will result in an iteration count being fully calculated
2302 using that wider type (wider
2303 than default @code{INTEGER}) must be rewritten.)
2306 Support @code{gcc} version 2.7.2.
2309 Upgrade to @code{libf2c} as of 1996-03-23, and
2310 fix up some of the build procedures.
2312 Note that the email addresses related to @code{f2c}
2313 have changed---the distribution site now is
2314 named @code{netlib.bell-labs.com}, and the
2315 maintainer's new address is @email{dmg@@bell-labs.com}.
2318 @c 1995-11-18: 0.5.17 released.
2322 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
2323 system's @file{/dev/null} special file if run by user @code{root}.
2325 @strong{All users} of version 0.5.16 should ensure that
2326 they have not removed @file{/dev/null} or replaced it with an ordinary
2327 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
2328 @samp{ls -l /dev/zero}.
2329 If the output isn't basically the
2330 same, contact your system
2331 administrator about restoring @file{/dev/null} to its proper status).
2333 This bug is particularly insidious because removing @file{/dev/null} as
2334 a special file can go undetected for quite a while, aside from
2335 various applications and programs exhibiting sudden, strange
2338 I sincerely apologize for not realizing the
2339 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
2340 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
2341 it is supposed to build (especially if it reports unresolved
2342 references, which it should in this case)!
2345 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
2348 Fix crash that can occur when diagnostics given outside of any
2349 program unit (such as when input file contains @samp{@@foo}).
2352 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
2355 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
2356 and issue clearer error message in cases where target of @code{ASSIGN}
2357 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
2361 Make @code{libf2c} build procedures work on more systems again by
2362 eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}.
2365 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
2366 options to compiler.
2369 Fix failure to always diagnose missing type declaration for
2370 @code{IMPLICIT NONE}.
2373 Fix compile-time performance problem (which could sometimes
2374 crash the compiler, cause a hang, or whatever, due to a bug
2375 in the back end) involving exponentiation with a large @code{INTEGER}
2376 constant for the right-hand operator (e.g. @samp{I**32767}).
2379 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
2380 utility in particular) is properly built using the host compiler.
2383 Add new @samp{-Wsurprising} option to warn about constructs that are
2384 interpreted by the Fortran standard (and @code{g77}) in ways that
2385 are surprising to many programmers.
2388 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
2389 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
2391 @emph{Note:} You should
2392 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
2393 these as generic intrinsics, to improve likelihood of diagnostics
2394 (instead of subtle run-time bugs) when using a compiler that
2395 doesn't support these as intrinsics (e.g. @code{f2c}).
2398 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
2399 with non-@code{INTEGER} index variable; issue that under
2400 @samp{-Wsurprising} instead.
2403 Clarify some diagnostics that say things like ``ignored'' when that's
2407 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
2411 Minor improvements to code generation for various operations on
2412 @code{LOGICAL} operands.
2415 Minor improvement to code generation for some @code{DO} loops on some
2419 Support @code{gcc} version 2.7.1.
2422 Upgrade to @code{libf2c} as of 1995-11-15.
2425 @c 1995-08-30: 0.5.16 released.
2429 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
2430 not involving @code{COMMON}.
2433 Fix code-generation bugs involving invoking ``gratis'' library procedures
2434 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
2435 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
2436 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
2437 @code{DERF()}, and @code{DERFC()}.
2440 Update @code{libf2c} to include netlib patches through 1995-08-16, and
2441 @code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
2442 consistent with other Fortran implementations by outputting
2443 leading zeros in formatted and list-directed output.
2446 Fix a code-generation bug involving adjustable dummy arrays with high
2447 bounds whose primaries are changed during procedure execution, and
2448 which might well improve code-generation performance for such arrays
2449 compared to @code{f2c} plus @code{gcc} (but apparently only when using
2450 @file{gcc-2.7.0} or later).
2453 Fix a code-generation bug involving invocation of @code{COMPLEX} and
2454 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
2455 @code{DOUBLE COMPLEX} divides, when the result
2456 of the invocation or divide is assigned directly to a variable
2457 that overlaps one or more of the arguments to the invocation or divide.
2460 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
2461 nonconstant and the expression is used to dimension a dummy
2462 array, since the @code{gcc} back end does not support the necessary
2463 mechanics (and the @code{gcc} front end rejects the equivalent
2464 construct, as it turns out).
2467 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
2470 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
2471 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
2474 Fix crashes and such involving diagnosed code.
2477 Diagnose, instead of crashing on, statement function definitions
2478 having duplicate dummy argument names.
2481 Fix bug causing rejection of good code involving statement function
2485 Fix bug resulting in debugger not knowing size of local equivalence
2486 area when any member of area has initial value (via @code{DATA},
2490 Fix installation bug that prevented installation of @code{g77} driver.
2491 Provide for easy selection of whether to install copy of @code{g77}
2492 as @code{f77} to replace the broken code.
2495 Fix @code{gcc} driver (affects @code{g77} thereby) to not
2496 gratuitously invoke the
2497 @code{f771} program (e.g. when @samp{-E} is specified).
2500 Fix diagnostic to point to correct source line when it immediately
2501 follows an @code{INCLUDE} statement.
2504 Support more compiler options in @code{gcc}/@code{g77} when
2505 compiling Fortran files.
2506 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
2507 correct setting of version-number macros for preprocessing, full
2508 recognition of @samp{-O0}, and
2509 automatic insertion of configuration-specific linker specs.
2512 Add new intrinsics that interface to existing routines in @code{libf2c}:
2513 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
2514 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
2515 @code{SIGNAL}, and @code{SYSTEM}.
2516 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
2517 @code{SYSTEM} are intrinsic subroutines, not functions (since they
2518 have side effects), so to get the return values from @code{SIGNAL}
2519 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
2520 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
2523 Add new intrinsic group named @code{unix} to contain the new intrinsics,
2524 and by default enable this new group.
2527 Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
2531 Improve @code{g77} so that @samp{g77 -v} by itself (or with
2532 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
2533 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
2534 version info, and so that long-form options @code{gcc} accepts are
2535 understood by @code{g77} as well (even in truncated, unambiguous forms).
2538 Add new @code{g77} option @samp{--driver=name} to specify driver when
2539 default, @code{gcc}, isn't appropriate.
2542 Add support for @samp{#} directives (as output by the preprocessor) in the
2543 compiler, and enable generation of those directives by the
2544 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
2545 info are more useful to users of the preprocessor.
2548 Produce better diagnostics, more like @code{gcc}, with info such as
2549 @samp{In function `foo':} and @samp{In file included from...:}.
2552 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
2555 When @samp{-Wunused} in effect, don't warn about local variables used as
2556 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
2557 variables, even though, strictly speaking, these are not uses
2558 of the variables themselves.
2561 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
2562 at all, since there's no way to turn this off for individual
2563 cases (@code{g77} might someday start warning about these)---applies
2564 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
2565 warn about unused dummy arguments.
2568 New option @samp{-fno-underscoring} that inhibits transformation of names
2569 (by appending one or two underscores) so users may experiment
2570 with implications of such an environment.
2573 Minor improvement to @file{gcc/f/info} module to make it easier to build
2574 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
2575 (but definitely not all machines nor all non-@code{gcc} compilers).
2577 do not report bugs showing problems compilers have with
2578 macros defined in @file{gcc/f/target.h} and used in places like
2579 @file{gcc/f/expr.c}.
2582 Add warning to be printed for each invocation of the compiler
2583 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
2585 since @code{g77} is known to not work well for such cases.
2588 Lots of new documentation (though work is still needed to put it into
2589 canonical GNU format).
2592 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
2593 (by default), to produce
2594 smaller library without lots of debugging clutter.
2597 @c 1995-05-19: 0.5.15 released.
2601 Fix bad code generation involving @samp{X**I} and temporary, internal variables
2602 generated by @code{g77} and the back end (such as for @code{DO} loops).
2605 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
2608 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
2611 Fix crash or other erratic behavior when null character constant
2612 (@samp{''}) is encountered.
2615 Fix crash or other erratic behavior involving diagnosed code.
2618 Fix code generation for external functions returning type @code{REAL} when
2619 the @samp{-ff2c} option is in force (which it is by default) so that
2620 @code{f2c} compatibility is indeed provided.
2623 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
2624 with an array declarator.
2627 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
2629 of a typical fixed-form line, defaulting to 72 columns, such
2630 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
2631 meaning no characters are ignored.
2632 does not affect lines
2633 with @samp{&} in column 1, which are always processed as if
2634 @samp{-ffixed-line-length-none} was in effect.
2637 No longer generate better code for some kinds of array references,
2638 as @code{gcc} back end is to be fixed to do this even better, and it
2639 turned out to slow down some code in some cases after all.
2642 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
2643 values (e.g. via @code{DATA}), uninitialized members now always
2644 initialized to binary zeros (though this is not required by
2645 the standard, and might not be done in future versions
2647 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
2648 (essentially those with members of more than one type), the
2649 uninitialized members were initialized to spaces, to
2650 cater to @code{CHARACTER} types, but it seems no existing code expects
2651 that, while much existing code expects binary zeros.
2657 Don't emit bad code when low bound of adjustable array is nonconstant
2658 and thus might vary as an expression at run time.
2661 Emit correct code for calculation of number of trips in @code{DO} loops
2663 where the loop should not execute at all.
2664 (This bug affected cases
2665 where the difference between the begin and end values was less
2666 than the step count, though probably not for floating-point cases.)
2669 Fix crash when extra parentheses surround item in
2670 @code{DATA} implied-@code{DO} list.
2673 Fix crash over minor internal inconsistencies in handling diagnostics,
2674 just substitute dummy strings where necessary.
2677 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
2680 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
2681 is a string of one or more digits.
2684 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
2687 Fix various crashes involving code with diagnosed errors.
2690 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
2691 @file{header.gcc} facility for handling systems like MS-DOS.
2694 Allow @code{INCLUDE} statement to be continued across multiple lines,
2695 even allow it to coexist with other statements on the same line.
2698 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
2699 fixes a bug involving infinite loops reading EOF with empty list-directed
2703 Remove all the @code{g77}-specific auto-configuration scripts, code,
2705 except for temporary substitutes for bsearch() and strtoul(), as
2706 too many configure/build problems were reported in these areas.
2707 People will have to fix their systems' problems themselves, or at
2708 least somewhere other than @code{g77}, which expects a working ANSI C
2709 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
2712 Complain if initialized common redeclared as larger in subsequent program
2716 Warn if blank common initialized, since its size can vary and hence
2717 related warnings that might be helpful won't be seen.
2720 New @samp{-fbackslash} option, on by default, that causes @samp{\}
2721 within @code{CHARACTER}
2722 and Hollerith constants to be interpreted a la GNU C.
2724 this behavior is somewhat different from @code{f2c}'s, which supports only
2725 a limited subset of backslash (escape) sequences.
2728 Make @samp{-fugly-args} the default.
2731 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
2732 to be specified as initial values for variables or named constants
2733 (@code{PARAMETER}), and also allows character<->numeric conversion in
2734 those contexts---turn off via @samp{-fno-ugly-init}.
2737 New @samp{-finit-local-zero} option to initialize
2738 local variables to binary zeros.
2739 This does not affect whether they are @code{SAVE}d, i.e. made
2740 automatic or static.
2743 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
2745 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
2748 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
2749 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
2750 requires @samp{-O}), and implies @samp{-Wunused} as well.
2753 @samp{-Wunused} no longer gives spurious messages for unused
2754 @code{EXTERNAL} names (since they are assumed to refer to block data
2755 program units, to make use of libraries more reliable).
2758 Support @code{%LOC()} and @code{LOC()} of character arguments.
2761 Support null (zero-length) character constants and expressions.
2764 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
2767 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
2768 character expressions that are valid in assignments but
2769 not normally as actual arguments.
2772 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
2775 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
2776 in @code{BLOCK DATA}, even though these are not allowed by the standard.
2779 Allow @code{RETURN} in main program unit.
2782 Changes to Hollerith-constant support to obey Appendix C of the
2787 Now padded on the right with zeros, not spaces.
2790 Hollerith ``format specifications'' in the form of arrays of
2791 non-character allowed.
2794 Warnings issued when non-space truncation occurs when converting
2798 When specified as actual argument, now passed
2799 by reference to @code{INTEGER} (padded on right with spaces if constant
2800 too small, otherwise fully intact if constant wider the @code{INTEGER}
2801 type) instead of by value.
2804 @strong{Warning:} @code{f2c} differs on the
2805 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
2806 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
2807 as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary
2808 to widen to @code{INTEGER}), essentially.
2811 Changes and fixes to typeless-constant support:
2815 Now treated as a typeless double-length @code{INTEGER} value.
2818 Warnings issued when overflow occurs.
2821 Padded on the left with zeros when converting
2825 Should be properly aligned and ordered on
2826 the target machine for whatever type it is turned into.
2829 When specified as actual argument, now passed as reference to
2830 a default @code{INTEGER} constant.
2834 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
2835 the expression plus a length for the expression just as if
2836 it were a @code{CHARACTER} expression.
2837 For example, @samp{CALL FOO(%DESCR(D))}, where
2838 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
2841 Name of multi-entrypoint master function changed to incorporate
2842 the name of the primary entry point instead of a decimal
2843 value, so the name of the master function for @samp{SUBROUTINE X}
2844 with alternate entry points is now @samp{__g77_masterfun_x}.
2847 Remove redundant message about zero-step-count @code{DO} loops.
2850 Clean up diagnostic messages, shortening many of them.
2853 Fix typo in @code{g77} man page.
2856 Clarify implications of constant-handling bugs in @file{f/BUGS}.
2859 Generate better code for @samp{**} operator with a right-hand operand of
2860 type @code{INTEGER}.
2863 Generate better code for @code{SQRT()} and @code{DSQRT()},
2864 also when @samp{-ffast-math}
2865 specified, enable better code generation for @code{SIN()} and @code{COS()}.
2868 Generate better code for some kinds of array references.
2871 Speed up lexing somewhat (this makes the compilation phase noticeably