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-04
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 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 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 truncates @code{INTEGER(KIND=2)}
170 (usually @code{INTEGER*8})
171 subscript expressions when evaluating array references
172 on systems with pointers widers than @code{INTEGER(KIND=1)}
178 @code{g77} no longer generates bad code
179 for an assignment to a @code{COMPLEX} variable or array
180 that partially overlaps one or more of the sources
181 of the same assignment
182 (a very rare construction).
183 It now assigns through a temporary,
184 in cases where such partial overlap is deemed possible.
189 @c Tim Prince reported this, regarding the TEST_FPU benchmark.
190 Automatic arrays now seem to be working on HP-UX systems.
195 Fix @code{g77} so it no longer crashes when compiling
196 I/O statements using keywords that define @code{INTEGER} values,
197 such as @samp{IOSTAT=@var{j}},
198 where @var{j} is other than default @code{INTEGER}
199 (such as @code{INTEGER*2}).
200 Instead, it issues a diagnostic.
205 Fix @code{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/},
206 where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2},
207 instead of producing a spurious diagnostic.
208 Also fix @samp{DATA (A(I),I=1,N)},
209 where @samp{N} is not default @code{INTEGER}
210 to work instead of crashing @code{g77}.
215 The @samp{-ax} option is now obeyed when compiling Fortran programs.
216 (It is passed to the @file{f771} driver.)
220 The new @samp{-fbounds-check} option
221 causes @code{g77} to compile run-time bounds checks
222 of array subscripts, as well as of substring start and end points.
225 @code{libg2c} now supports building as multilibbed library,
226 which provides better support for systems
227 that require options such as @samp{-mieee}
231 Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
232 now are recognized by @code{g77}
233 as if they ended in @samp{.for} and @samp{.fpp}, respectively.
236 The order of arguments to the @emph{subroutine} forms of the
237 @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam}
238 intrinsics has been swapped.
239 The argument serving as the returned value
240 for the corresponding function forms
241 now is the @emph{second} argument,
242 making these consistent with the other subroutine forms
243 of @code{libU77} intrinsics.
246 @code{g77} now warns about a reference to an intrinsic
247 that has an interface that is not Year 2000 (Y2K) compliant.
248 Also, @code{libg2c} has been changed to increase the likelihood
249 of catching references to the implementations of these intrinsics
250 using the @code{EXTERNAL} mechanism
251 (which would avoid the new warnings).
254 @xref{Year 2000 (Y2K) Problems}, for more information.
259 @code{g77} now warns about a reference to a function
260 when the corresponding @emph{subsequent} function program unit
261 disagrees with the reference concerning the type of the function.
265 @samp{-fno-emulate-complex} is now the default option.
266 This should result in improved performance
267 of code that uses the @code{COMPLEX} data type.
270 @cindex double-precision performance
271 @cindex -malign-double
273 The @samp{-malign-double} option
274 now reliably aligns @emph{all} double-precision variables and arrays
275 on Intel x86 targets.
279 Even without the @samp{-malign-double} option,
280 @code{g77} reliably aligns local double-precision variables
281 that are not in @code{EQUIVALENCE} areas
282 and not @code{SAVE}'d.
287 @code{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands
288 instead of generating a run-time call to
289 the @code{libf2c} routines @code{c_div} or @code{z_div},
290 unless the @samp{-Os} option is specified.
294 @code{g77} no longer generates code to maintain @code{errno},
295 a C-language concept,
296 when performing operations such as the @code{SqRt} intrinsic.
300 @code{g77} developers can temporarily use
301 the @samp{-fflatten-arrays} option
302 to compare how the compiler handles code generation
303 using C-like constructs as compared to the
304 Fortran-like method constructs normally used.
309 A substantial portion of the @code{g77} front end's code-generation component
311 It now generates code using facilities more robustly supported
312 by the @code{gcc} back end.
313 One effect of this rewrite is that some codes no longer produce
314 a spurious ``label @var{lab} used before containing binding contour''
319 Support for the @samp{-fugly} option has been removed.
323 Improve documentation and indexing,
324 including information on Year 2000 (Y2K) compliance,
325 and providing more information on internals of the front end.
330 Upgrade to @code{libf2c} as of 1999-05-10.
334 @heading In 0.5.24 versus 0.5.23:
336 There is no @code{g77} version 0.5.24 at this time,
338 0.5.24 is the version number designated for bug fixes and,
339 perhaps, some new features added,
341 Version 0.5.23 requires @code{gcc} 2.8.1,
342 as 0.5.24 was planned to require.
344 Due to @code{EGCS} becoming @code{GCC}
345 (which is now an acronym for ``GNU Compiler Collection''),
346 and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95,
347 there seems to be no need for an actual 0.5.24 release.
349 To reduce the confusion already resulting from use of 0.5.24
350 to designate @code{g77} versions within @code{EGCS} versions 1.0 and 1.1,
351 as well as in versions of @code{g77} documentation and notices
353 ``mainline'' @code{g77} version numbering resumes
354 at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2),
355 skipping over 0.5.24 as a placeholder version number.
357 To repeat, there is no @code{g77} 0.5.24, but there is now a 0.5.25.
358 Please remain calm and return to your keypunch units.
360 @c 1999-03-15: EGCS 1.1.2 released.
361 @heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1:
365 Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
366 so the returned year is in the documented, non-Y2K-compliant range
368 instead of being returned as 100 in the year 2000.
371 @xref{IDate Intrinsic (VXT)},
372 for more information.
376 Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
377 to return the milliseconds value properly
381 Fix the @code{LStat} intrinsic (in @code{libg2c})
382 to return device-ID information properly
386 Improve documentation.
390 @c 1998-12-04: EGCS 1.1.1 released.
391 @heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1:
395 Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation
397 whenever a @code{REWIND} is done.
399 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
400 @code{g77}'s version of @code{libf2c}.)
403 Fix @code{libg2c} so it no longer crashes with a spurious diagnostic
404 upon doing any I/O following a direct formatted write.
406 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
407 @code{g77}'s version of @code{libf2c}.)
410 Fix @code{g77} so it no longer crashes compiling references
411 to the @code{Rand} intrinsic on some systems.
414 Fix @code{g77} portion of installation process so it works
415 better on some systems
416 (those with shells requiring @samp{else true} clauses
417 on @code{if} constructs
418 for the completion code to be set properly).
422 @c 1998-09-03: EGCS 1.1 released.
423 @heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3:
427 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
428 that wrote one byte beyond the end of its @code{CHARACTER}
430 and in the @code{libU77} intrinsics
431 @code{GMTime} and @code{LTime}
432 that overwrote their arguments.
437 Assumed arrays with negative bounds
438 (such as @samp{REAL A(-1:*)})
439 no longer elicit spurious diagnostics from @code{g77},
440 even on systems with pointers having
441 different sizes than integers.
443 This bug is not known to have existed in any
444 recent version of @code{gcc}.
445 It was introduced in an early release of @code{egcs}.
450 Valid combinations of @code{EXTERNAL},
451 passing that external as a dummy argument
452 without explicitly giving it a type,
453 and, in a subsequent program unit,
454 referencing that external as
455 an external function with a different type
456 no longer crash @code{g77}.
461 @code{CASE DEFAULT} no longer crashes @code{g77}.
466 The @samp{-Wunused} option no longer issues a spurious
467 warning about the ``master'' procedure generated by
468 @code{g77} for procedures containing @code{ENTRY} statements.
472 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
473 compile-time constant @code{INTEGER} expression.
476 Fix @code{g77} @samp{-g} option so procedures that
477 use @code{ENTRY} can be stepped through, line by line,
481 Allow any @code{REAL} argument to intrinsics
482 @code{Second} and @code{CPU_Time}.
485 Use @code{tempnam}, if available, to open scratch files
486 (as in @samp{OPEN(STATUS='SCRATCH')})
487 so that the @code{TMPDIR} environment variable,
491 @code{g77}'s version of @code{libf2c} separates out
492 the setting of global state
493 (such as command-line arguments and signal handling)
494 from @file{main.o} into distinct, new library
497 This should make it easier to write portable applications
498 that have their own (non-Fortran) @code{main()} routine
499 properly set up the @code{libf2c} environment, even
500 when @code{libf2c} (now @code{libg2c}) is a shared library.
504 @code{g77} no longer installs the @file{f77} command
505 and @file{f77.1} man page
506 in the @file{/usr} or @file{/usr/local} heirarchy,
507 even if the @file{f77-install-ok} file exists
508 in the source or build directory.
509 See the installation documentation for more information.
514 @code{g77} no longer installs the @file{libf2c.a} library
515 and @file{f2c.h} include file
516 in the @file{/usr} or @file{/usr/local} heirarchy,
517 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
518 in the source or build directory.
519 See the installation documentation for more information.
524 The @file{libf2c.a} library produced by @code{g77} has been
525 renamed to @file{libg2c.a}.
526 It is installed only in the @code{gcc} ``private''
527 directory heirarchy, @file{gcc-lib}.
528 This allows system administrators and users to choose which
529 version of the @code{libf2c} library from @code{netlib} they
530 wish to use on a case-by-case basis.
531 See the installation documentation for more information.
536 The @file{f2c.h} include (header) file produced by @code{g77}
537 has been renamed to @file{g2c.h}.
538 It is installed only in the @code{gcc} ``private''
539 directory heirarchy, @file{gcc-lib}.
540 This allows system administrators and users to choose which
541 version of the include file from @code{netlib} they
542 wish to use on a case-by-case basis.
543 See the installation documentation for more information.
547 The @code{g77} command now expects the run-time library
548 to be named @code{libg2c.a} instead of @code{libf2c.a},
549 to ensure that a version other than the one built and
550 installed as part of the same @code{g77} version is picked up.
554 During the configuration and build process,
555 @code{g77} creates subdirectories it needs only as it
557 Other cleaning up of the configuration and build process
558 has been performed as well.
563 @code{install-info} now used to update the directory of
564 Info documentation to contain an entry for @code{g77}
565 (during installation).
569 Some diagnostics have been changed from warnings to errors,
570 to prevent inadvertent use of the resulting, probably buggy,
572 These mostly include diagnostics about use of unsupported features
573 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
574 @code{WRITE} statements,
575 and about truncations of various sorts of constants.
579 Improve compilation of @code{FORMAT} expressions so that
580 a null byte is appended to the last operand if it
582 This provides a cleaner run-time diagnostic as provided
583 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
588 Improve documentation and indexing.
593 The upgrade to @code{libf2c} as of 1998-06-18
594 should fix a variety of problems, including
595 those involving some uses of the @code{T} format
596 specifier, and perhaps some build (porting) problems
601 @c 1998-09-03: EGCS 1.1 released.
602 @heading In @code{EGCS} 1.1 versus @code{g77} 0.5.23:
606 @cindex stack, 387 coprocessor
610 Fix a code-generation bug that afflicted
611 Intel x86 targets when @samp{-O2} was specified
612 compiling, for example, an old version of
613 the @code{DNRM2} routine.
615 The x87 coprocessor stack was being
616 mismanaged in cases involving assigned @code{GOTO}
622 @code{g77} no longer produces incorrect code
624 for @code{EQUIVALENCE} and @code{COMMON}
625 aggregates that, due to ``unnatural'' ordering of members
626 vis-a-vis their types, require initial padding.
631 Fix @code{g77} crash compiling code
632 containing the construct @samp{CMPLX(0.)} or similar.
637 @code{g77} no longer crashes when compiling code
638 containing specification statements such as
639 @samp{INTEGER(KIND=7) PTR}.
644 @code{g77} no longer crashes when compiling code
645 such as @samp{J = SIGNAL(1, 2)}.
649 @code{g77} now treats @samp{%LOC(@var{expr})} and
650 @samp{LOC(@var{expr})} as ``ordinary'' expressions
651 when they are used as arguments in procedure calls.
652 This change applies only to global (filewide) analysis,
653 making it consistent with
654 how @code{g77} actually generates code
657 Previously, @code{g77} treated these expressions
658 as denoting special ``pointer'' arguments
659 for the purposes of filewide analysis.
664 (or apparently infinite run-time)
665 when compiling certain complicated expressions
666 involving @code{COMPLEX} arithmetic
667 (especially multiplication).
671 @cindex double-precision performance
672 @cindex -malign-double
674 Align static double-precision variables and arrays
676 regardless of whether @samp{-malign-double} is specified.
678 Generally, this affects only local variables and arrays
679 having the @code{SAVE} attribute
680 or given initial values via @code{DATA}.
683 The @code{g77} driver now ensures that @samp{-lg2c}
684 is specified in the link phase prior to any
685 occurrence of @samp{-lm}.
686 This prevents accidentally linking to a routine
687 in the SunOS4 @samp{-lm} library
688 when the generated code wants to link to the one
689 in @code{libf2c} (@code{libg2c}).
692 @code{g77} emits more debugging information when
695 This new information allows, for example,
696 @kbd{which __g77_length_a} to be used in @code{gdb}
697 to determine the type of the phantom length argument
698 supplied with @code{CHARACTER} variables.
700 This information pertains to internally-generated
701 type, variable, and other information,
702 not to the longstanding deficiencies vis-a-vis
703 @code{COMMON} and @code{EQUIVALENCE}.
706 The F90 @code{Date_and_Time} intrinsic now is
710 The F90 @code{System_Clock} intrinsic allows
711 the optional arguments (except for the @code{Count}
712 argument) to be omitted.
716 Upgrade to @code{libf2c} as of 1998-06-18.
721 Improve documentation and indexing.
726 @heading In previous versions:
728 Information on previous versions is not provided
729 in this @file{@value{path-g77}/NEWS} file,
731 See @file{@value{path-g77}/news.texi},
732 or any of its other derivations
733 (Info, HTML, dvi forms)
734 for such information.
738 @c 1998-05-20: 0.5.23 released.
739 @heading In 0.5.23 versus 0.5.22:
742 This release contains several regressions against
743 version 0.5.22 of @code{g77}, due to using the
744 ``vanilla'' @code{gcc} back end instead of patching
745 it to fix a few bugs and improve performance in a
748 Features that have been dropped from this version
749 of @code{g77} due to their being implemented
750 via @code{g77}-specific patches to the @code{gcc}
751 back end in previous releases include:
755 Support for @code{__restrict__} keyword,
756 the options @samp{-fargument-alias}, @samp{-fargument-noalias},
757 and @samp{-fargument-noalias-global},
758 and the corresponding alias-analysis code.
760 (@code{egcs} has the alias-analysis
761 code, but not the @code{__restrict__} keyword.
762 @code{egcs} @code{g77} users benefit from the alias-analysis
763 code despite the lack of the @code{__restrict__} keyword,
764 which is a C-language construct.)
767 Support for the GNU compiler options
768 @samp{-fmove-all-movables},
769 @samp{-freduce-all-givs},
770 and @samp{-frerun-loop-opt}.
772 (@code{egcs} supports these options.
773 @code{g77} users of @code{egcs} benefit from them even if
774 they are not explicitly specified,
775 because the defaults are optimized for @code{g77} users.)
778 Support for the @samp{-W} option warning about
779 integer division by zero.
782 The Intel x86-specific option @samp{-malign-double}
783 applying to stack-allocated data
784 as well as statically-allocate data.
788 Note that the @file{gcc/f/gbe/} subdirectory has been removed
789 from this distribution as a result of @code{g77} no longer
790 including patches for the @code{gcc} back end.
795 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
796 that wrote one byte beyond the end of its @code{CHARACTER}
798 and in the @code{libU77} intrinsics
799 @code{GMTime} and @code{LTime}
800 that overwrote their arguments.
804 Support @code{gcc} version 2.8,
805 and remove support for prior versions of @code{gcc}.
807 @cindex -@w{}-driver option
808 @cindex @code{g77} options, -@w{}-driver
809 @cindex options, -@w{}-driver
811 Remove support for the @samp{--driver} option,
812 as @code{g77} now does all the driving,
813 just like @code{gcc}.
817 @code{CASE DEFAULT} no longer crashes @code{g77}.
822 Valid combinations of @code{EXTERNAL},
823 passing that external as a dummy argument
824 without explicitly giving it a type,
825 and, in a subsequent program unit,
826 referencing that external as
827 an external function with a different type
828 no longer crash @code{g77}.
833 @code{g77} no longer installs the @file{f77} command
834 and @file{f77.1} man page
835 in the @file{/usr} or @file{/usr/local} heirarchy,
836 even if the @file{f77-install-ok} file exists
837 in the source or build directory.
838 See the installation documentation for more information.
843 @code{g77} no longer installs the @file{libf2c.a} library
844 and @file{f2c.h} include file
845 in the @file{/usr} or @file{/usr/local} heirarchy,
846 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
847 in the source or build directory.
848 See the installation documentation for more information.
853 The @file{libf2c.a} library produced by @code{g77} has been
854 renamed to @file{libg2c.a}.
855 It is installed only in the @code{gcc} ``private''
856 directory heirarchy, @file{gcc-lib}.
857 This allows system administrators and users to choose which
858 version of the @code{libf2c} library from @code{netlib} they
859 wish to use on a case-by-case basis.
860 See the installation documentation for more information.
865 The @file{f2c.h} include (header) file produced by @code{g77}
866 has been renamed to @file{g2c.h}.
867 It is installed only in the @code{gcc} ``private''
868 directory heirarchy, @file{gcc-lib}.
869 This allows system administrators and users to choose which
870 version of the include file from @code{netlib} they
871 wish to use on a case-by-case basis.
872 See the installation documentation for more information.
876 The @code{g77} command now expects the run-time library
877 to be named @code{libg2c.a} instead of @code{libf2c.a},
878 to ensure that a version other than the one built and
879 installed as part of the same @code{g77} version is picked up.
883 The @samp{-Wunused} option no longer issues a spurious
884 warning about the ``master'' procedure generated by
885 @code{g77} for procedures containing @code{ENTRY} statements.
889 @code{g77}'s version of @code{libf2c} separates out
890 the setting of global state
891 (such as command-line arguments and signal handling)
892 from @file{main.o} into distinct, new library
895 This should make it easier to write portable applications
896 that have their own (non-Fortran) @code{main()} routine
897 properly set up the @code{libf2c} environment, even
898 when @code{libf2c} (now @code{libg2c}) is a shared library.
902 During the configuration and build process,
903 @code{g77} creates subdirectories it needs only as it
904 needs them, thus avoiding unnecessary creation of, for example,
905 @file{stage1/f/runtime} when doing a non-bootstrap build.
906 Other cleaning up of the configuration and build process
907 has been performed as well.
912 @code{install-info} now used to update the directory of
913 Info documentation to contain an entry for @code{g77}
914 (during installation).
918 Some diagnostics have been changed from warnings to errors,
919 to prevent inadvertent use of the resulting, probably buggy,
921 These mostly include diagnostics about use of unsupported features
922 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
923 @code{WRITE} statements,
924 and about truncations of various sorts of constants.
928 Improve documentation and indexing.
933 Upgrade to @code{libf2c} as of 1998-04-20.
935 This should fix a variety of problems, including
936 those involving some uses of the @code{T} format
937 specifier, and perhaps some build (porting) problems
942 @c 1998-03-16: 0.5.22 released.
943 @heading In 0.5.22 versus 0.5.21:
947 Fix code generation for iterative @code{DO} loops that
948 have one or more references to the iteration variable,
949 or to aliases of it, in their control expressions.
950 For example, @samp{DO 10 J=2,J} now is compiled correctly.
955 @cindex stack, 387 coprocessor
959 Fix a code-generation bug that afflicted
960 Intel x86 targets when @samp{-O2} was specified
961 compiling, for example, an old version of
962 the @code{DNRM2} routine.
964 The x87 coprocessor stack was being
965 mismanaged in cases involving assigned @code{GOTO}
971 Fix @code{DTime} intrinsic so as not to truncate
972 results to integer values (on some systems).
976 Fix @code{Signal} intrinsic so it offers portable
977 support for 64-bit systems (such as Digital Alphas
982 Fix run-time crash involving @code{NAMELIST} on 64-bit
983 machines such as Alphas.
988 Fix @code{g77} version of @code{libf2c} so it no longer
989 produces a spurious @samp{I/O recursion} diagnostic at run time
990 when an I/O operation (such as @samp{READ *,I}) is interrupted
991 in a manner that causes the program to be terminated
992 via the @code{f_exit} routine (such as via @kbd{C-c}).
997 Fix @code{g77} crash triggered by @code{CASE} statement with
998 an omitted lower or upper bound.
1001 @ifclear USERVISONLY
1003 Fix @code{g77} crash compiling references to @code{CPU_Time}
1007 @ifclear USERVISONLY
1009 Fix @code{g77} crash
1010 (or apparently infinite run-time)
1011 when compiling certain complicated expressions
1012 involving @code{COMPLEX} arithmetic
1013 (especially multiplication).
1016 @ifclear USERVISONLY
1018 Fix @code{g77} crash on statements such as
1019 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1020 @samp{Z} is @code{DOUBLE COMPLEX}.
1023 @ifclear USERVISONLY
1025 Fix a @code{g++} crash.
1029 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
1030 compile-time constant @code{INTEGER} expression.
1033 Fix @code{g77} @samp{-g} option so procedures that
1034 use @code{ENTRY} can be stepped through, line by line,
1037 @ifclear USERVISONLY
1039 Fix a profiling-related bug in @code{gcc} back end for
1040 Intel x86 architecture.
1044 Allow any @code{REAL} argument to intrinsics
1045 @code{Second} and @code{CPU_Time}.
1048 Allow any numeric argument to intrinsics
1049 @code{Int2} and @code{Int8}.
1052 Use @code{tempnam}, if available, to open scratch files
1053 (as in @samp{OPEN(STATUS='SCRATCH')})
1054 so that the @code{TMPDIR} environment variable,
1055 if present, is used.
1058 Rename the @code{gcc} keyword @code{restrict} to
1059 @code{__restrict__}, to avoid rejecting valid, existing,
1061 Support for @code{restrict} is now more like support
1064 @ifclear USERVISONLY
1066 Fix @samp{-fpedantic} to not reject procedure invocations
1067 such as @samp{I=J()} and @samp{CALL FOO()}.
1071 Fix @samp{-fugly-comma} to affect invocations of
1072 only external procedures.
1073 Restore rejection of gratuitous trailing omitted
1074 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1077 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1078 @samp{-fbadu77-intrinsics-*} options.
1080 @ifclear USERVISONLY
1082 Improve diagnostic messages from @code{libf2c}
1083 so it is more likely that the printing of the
1084 active format string is limited to the string,
1085 with no trailing garbage being printed.
1087 (Unlike @code{f2c}, @code{g77} did not append
1088 a null byte to its compiled form of every
1089 format string specified via a @code{FORMAT} statement.
1090 However, @code{f2c} would exhibit the problem
1091 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1092 by printing @samp{(I)garbage} as the format string.)
1095 @ifclear USERVISONLY
1097 Improve compilation of @code{FORMAT} expressions so that
1098 a null byte is appended to the last operand if it
1100 This provides a cleaner run-time diagnostic as provided
1101 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
1104 @ifclear USERVISONLY
1106 Fix various crashes involving code with diagnosed errors.
1109 @ifclear USERVISONLY
1111 Fix cross-compilation bug when configuring @code{libf2c}.
1114 @ifclear USERVISONLY
1116 Improve diagnostics.
1119 @ifclear USERVISONLY
1121 Improve documentation and indexing.
1124 @ifclear USERVISONLY
1126 Upgrade to @code{libf2c} as of 1997-09-23.
1127 This fixes a formatted-I/O bug that afflicted
1128 64-bit systems with 32-bit integers
1129 (such as Digital Alpha running GNU/Linux).
1133 @c 1998-03-18: EGCS 1.0.2 released.
1134 @heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1:
1136 @ifclear USERVISONLY
1138 Fix @code{g77} crash triggered by @code{CASE} statement with
1139 an omitted lower or upper bound.
1142 @ifclear USERVISONLY
1144 Fix @code{g77} crash on statements such as
1145 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1146 @samp{Z} is @code{DOUBLE COMPLEX}.
1149 @ifclear USERVISONLY
1151 @cindex support, ELF
1152 @cindex -fPIC option
1153 @cindex options, -fPIC
1155 Fix @samp{-fPIC} (such as compiling for ELF targets)
1156 on the Intel x86 architecture target
1157 so invalid assembler code is no longer produced.
1160 @ifclear USERVISONLY
1162 Fix @samp{-fpedantic} to not reject procedure invocations
1163 such as @samp{I=J()} and @samp{CALL FOO()}.
1166 @ifclear USERVISONLY
1168 Fix @samp{-fugly-comma} to affect invocations of
1169 only external procedures.
1170 Restore rejection of gratuitous trailing omitted
1171 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1175 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1176 @samp{-fbadu77-intrinsics-*} options.
1179 @c 1998-01-06: EGCS 1.0.1 released.
1180 @heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0:
1181 @ifclear USERVISONLY
1184 Fix run-time crash involving @code{NAMELIST} on 64-bit
1185 machines such as Alphas.
1189 @c 1997-12-03: EGCS 1.0 released.
1190 @heading In @code{EGCS} 1.0 versus @code{g77} 0.5.21:
1193 Version 1.0 of @code{egcs}
1194 contains several regressions against
1195 version 0.5.21 of @code{g77},
1197 ``vanilla'' @code{gcc} back end instead of patching
1198 it to fix a few bugs and improve performance in a
1201 Features that have been dropped from this version
1202 of @code{g77} due to their being implemented
1203 via @code{g77}-specific patches to the @code{gcc}
1204 back end in previous releases include:
1208 Support for the C-language @code{restrict} keyword.
1211 Support for the @samp{-W} option warning about
1212 integer division by zero.
1215 The Intel x86-specific option @samp{-malign-double}
1216 applying to stack-allocated data
1217 as well as statically-allocate data.
1220 @ifclear USERVISONLY
1221 Note that the @file{gcc/f/gbe/} subdirectory has been removed
1222 from this distribution as a result of @code{g77}
1223 being fully integrated with
1224 the @code{egcs} variant of the @code{gcc} back end.
1227 @ifclear USERVISONLY
1229 Fix code generation for iterative @code{DO} loops that
1230 have one or more references to the iteration variable,
1231 or to aliases of it, in their control expressions.
1232 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1235 @ifclear USERVISONLY
1237 Fix @code{DTime} intrinsic so as not to truncate
1238 results to integer values (on some systems).
1241 @ifclear USERVISONLY
1243 @c Toon Moene discovered these.
1244 Some Fortran code, miscompiled
1245 by @code{g77} built on @code{gcc} version 2.8.1
1246 on m68k-next-nextstep3 configurations
1247 when using the @samp{-O2} option,
1248 is now compiled correctly.
1249 It is believed that a C function known to miscompile
1250 on that configuration
1251 when using the @samp{-O2 -funroll-loops} options
1252 also is now compiled correctly.
1255 @ifclear USERVISONLY
1257 Remove support for non-@code{egcs} versions of @code{gcc}.
1260 @cindex -@w{}-driver option
1261 @cindex @code{g77} options, -@w{}-driver
1262 @cindex options, -@w{}-driver
1264 Remove support for the @samp{--driver} option,
1265 as @code{g77} now does all the driving,
1266 just like @code{gcc}.
1269 Allow any numeric argument to intrinsics
1270 @code{Int2} and @code{Int8}.
1272 @ifclear USERVISONLY
1274 Improve diagnostic messages from @code{libf2c}
1275 so it is more likely that the printing of the
1276 active format string is limited to the string,
1277 with no trailing garbage being printed.
1279 (Unlike @code{f2c}, @code{g77} did not append
1280 a null byte to its compiled form of every
1281 format string specified via a @code{FORMAT} statement.
1282 However, @code{f2c} would exhibit the problem
1283 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1284 by printing @samp{(I)garbage} as the format string.)
1287 @ifclear USERVISONLY
1289 Upgrade to @code{libf2c} as of 1997-09-23.
1290 This fixes a formatted-I/O bug that afflicted
1291 64-bit systems with 32-bit integers
1292 (such as Digital Alpha running GNU/Linux).
1296 @c 1997-09-09: 0.5.21 released.
1299 @ifclear USERVISONLY
1301 Fix a code-generation bug introduced by 0.5.20
1302 caused by loop unrolling (by specifying
1303 @samp{-funroll-loops} or similar).
1304 This bug afflicted all code compiled by
1305 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1306 Fortran, and so on).
1309 @ifclear USERVISONLY
1311 Fix a code-generation bug manifested when
1312 combining local @code{EQUIVALENCE} with a
1313 @code{DATA} statement that follows
1314 the first executable statement (or is
1315 treated as an executable-context statement
1316 as a result of using the @samp{-fpedantic}
1320 @ifclear USERVISONLY
1322 Fix a compiler crash that occured when an
1323 integer division by a constant zero is detected.
1324 Instead, when the @samp{-W} option is specified,
1325 the @code{gcc} back end issues a warning about such a case.
1326 This bug afflicted all code compiled by
1327 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1328 Fortran, and so on).
1332 When the @samp{-W} option is specified, @code{gcc}, @code{g77},
1333 and other GNU compilers that incorporate the @code{gcc}
1334 back end as modified by @code{g77}, issue
1335 a warning about integer division by constant zero.
1338 @ifclear USERVISONLY
1340 Fix a compiler crash that occurred in some cases
1341 of procedure inlining.
1342 (Such cases became more frequent in 0.5.20.)
1345 @ifclear USERVISONLY
1347 Fix a compiler crash resulting from using @code{DATA}
1348 or similar to initialize a @code{COMPLEX} variable or
1352 @ifclear USERVISONLY
1354 Fix compiler crashes involving use of @code{AND}, @code{OR},
1355 or @code{XOR} intrinsics.
1358 @ifclear USERVISONLY
1360 Fix compiler bug triggered when using a @code{COMMON}
1361 or @code{EQUIVALENCE} variable
1362 as the target of an @code{ASSIGN}
1363 or assigned-@code{GOTO} statement.
1366 @ifclear USERVISONLY
1368 Fix compiler crashes due to using the name of a some
1369 non-standard intrinsics (such as @code{FTell} or
1370 @code{FPutC}) as such and as the name of a procedure
1372 Such dual use of a name in a program is allowed by
1376 @c @code{g77}'s version of @code{libf2c} has been modified
1377 @c so that the external names of library's procedures do not
1378 @c conflict with names used for Fortran procedures compiled
1380 @c An additional layer of jacket procedures has been added
1381 @c to @code{libf2c} to map the old names to the new names,
1382 @c for automatic use by programs that interface to the
1383 @c library procedures via the external-procedure mechanism.
1385 @c For example, the intrinsic @code{FPUTC} previously was
1386 @c implemented by @code{g77} as a call to the @code{libf2c}
1387 @c routine @code{fputc_}.
1388 @c This would conflict with a Fortran procedure named @code{FPUTC}
1389 @c (using default compiler options), and this conflict
1390 @c would cause a crash under certain circumstances.
1392 @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
1393 @c which does not conflict with the @code{fputc_} external
1394 @c that implements a Fortran procedure named @code{FPUTC}.
1396 @c Programs that refer to @code{FPUTC} as an external procedure
1397 @c without supplying their own implementation will link to
1398 @c the new @code{libf2c} routine @code{fputc_}, which is
1399 @c simply a jacket routine that calls @code{G77_fputc_0}.
1401 @ifclear USERVISONLY
1403 Place automatic arrays on the stack, even if
1404 @code{SAVE} or the @samp{-fno-automatic} option
1406 This avoids a compiler crash in some cases.
1409 @ifclear USERVISONLY
1411 The @samp{-malign-double} option now reliably aligns
1412 @code{DOUBLE PRECISION} optimally on Pentium and
1413 Pentium Pro architectures (586 and 686 in @code{gcc}).
1417 New option @samp{-Wno-globals} disables warnings
1418 about ``suspicious'' use of a name both as a global
1419 name and as the implicit name of an intrinsic, and
1420 warnings about disagreements over the number or natures of
1421 arguments passed to global procedures, or the
1422 natures of the procedures themselves.
1424 The default is to issue such warnings, which are
1425 new as of this version of @code{g77}.
1428 New option @samp{-fno-globals} disables diagnostics
1429 about potentially fatal disagreements
1430 analysis problems, such as disagreements over the
1431 number or natures of arguments passed to global
1432 procedures, or the natures of those procedures themselves.
1434 The default is to issue such diagnostics and flag
1435 the compilation as unsuccessful.
1436 With this option, the diagnostics are issued as
1437 warnings, or, if @samp{-Wno-globals} is specified,
1438 are not issued at all.
1440 This option also disables inlining of global procedures,
1441 to avoid compiler crashes resulting from coding errors
1442 that these diagnostics normally would identify.
1444 @ifclear USERVISONLY
1446 Diagnose cases where a reference to a procedure
1447 disagrees with the type of that procedure, or
1448 where disagreements about the number or nature
1450 This avoids a compiler crash.
1453 @ifclear USERVISONLY
1455 Fix parsing bug whereby @code{g77} rejected a
1456 second initialization specification immediately
1457 following the first's closing @samp{/} without
1458 an intervening comma in a @code{DATA} statement,
1459 and the second specification was an implied-DO list.
1462 @ifclear USERVISONLY
1464 Improve performance of the @code{gcc} back end so
1465 certain complicated expressions involving @code{COMPLEX}
1466 arithmetic (especially multiplication) don't appear to
1467 take forever to compile.
1470 @ifclear USERVISONLY
1472 Fix a couple of profiling-related bugs in @code{gcc}
1476 @ifclear USERVISONLY
1478 Integrate GNU Ada's (GNAT's) changes to the back end,
1479 which consist almost entirely of bug fixes.
1480 These fixes are circa version 3.10p of GNAT.
1483 @ifclear USERVISONLY
1485 Include some other @code{gcc} fixes that seem useful in
1486 @code{g77}'s version of @code{gcc}.
1487 (See @file{gcc/ChangeLog} for details---compare it
1488 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
1493 Fix @code{libU77} routines that accept file and other names
1494 to strip trailing blanks from them, for consistency
1495 with other implementations.
1496 Blanks may be forcibly appended to such names by
1497 appending a single null character (@samp{CHAR(0)})
1498 to the significant trailing blanks.
1501 Fix @code{CHMOD} intrinsic to work with file names
1502 that have embedded blanks, commas, and so on.
1505 Fix @code{SIGNAL} intrinsic so it accepts an
1506 optional third @code{Status} argument.
1508 @ifclear USERVISONLY
1510 Fix @code{IDATE()} intrinsic subroutine (VXT form)
1511 so it accepts arguments in the correct order.
1512 Documentation fixed accordingly, and for
1513 @code{GMTIME()} and @code{LTIME()} as well.
1517 Make many changes to @code{libU77} intrinsics to
1518 support existing code more directly.
1520 Such changes include allowing both subroutine and
1521 function forms of many routines, changing @code{MCLOCK()}
1522 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
1523 introducing @code{MCLOCK8()} and @code{TIME8()} to
1524 return @code{INTEGER(KIND=2)} values,
1525 and placing functions that are intended to perform
1526 side effects in a new intrinsic group, @code{badu77}.
1528 @ifclear USERVISONLY
1530 Improve @code{libU77} so it is more portable.
1534 Add options @samp{-fbadu77-intrinsics-delete},
1535 @samp{-fbadu77-intrinsics-hide}, and so on.
1537 @ifclear USERVISONLY
1539 Fix crashes involving diagnosed or invalid code.
1542 @ifclear USERVISONLY
1544 @code{g77} and @code{gcc} now do a somewhat better
1545 job detecting and diagnosing arrays that are too
1546 large to handle before these cause diagnostics
1547 during the assembler or linker phase, a compiler
1548 crash, or generation of incorrect code.
1551 @ifclear USERVISONLY
1553 Make some fixes to alias analysis code.
1556 @ifclear USERVISONLY
1558 Add support for @code{restrict} keyword in @code{gcc}
1562 @ifclear USERVISONLY
1564 Support @code{gcc} version 2.7.2.3
1565 (modified by @code{g77} into version 2.7.2.3.f.1),
1567 support for prior versions of @code{gcc}.
1570 @ifclear USERVISONLY
1572 Incorporate GNAT's patches to the @code{gcc} back
1573 end into @code{g77}'s, so GNAT users do not need
1574 to apply GNAT's patches to build both GNAT and @code{g77}
1575 from the same source tree.
1578 @ifclear USERVISONLY
1580 Modify @code{make} rules and related code so that
1581 generation of Info documentation doesn't require
1582 compilation using @code{gcc}.
1583 Now, any ANSI C compiler should be adequate to
1584 produce the @code{g77} documentation (in particular,
1585 the tables of intrinsics) from scratch.
1589 Add @code{INT2} and @code{INT8} intrinsics.
1592 Add @code{CPU_TIME} intrinsic.
1595 Add @code{ALARM} intrinsic.
1598 @code{CTIME} intrinsic now accepts any @code{INTEGER}
1599 argument, not just @code{INTEGER(KIND=2)}.
1601 @ifclear USERVISONLY
1603 Warn when explicit type declaration disagrees with
1604 the type of an intrinsic invocation.
1607 @ifclear USERVISONLY
1609 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
1612 @ifclear USERVISONLY
1614 Fix typo in @code{make} rule @code{g77-cross}, used only for
1618 @ifclear USERVISONLY
1620 Fix @code{libf2c} build procedure to re-archive library
1621 if previous attempt to archive was interrupted.
1624 @ifclear USERVISONLY
1626 Change @code{gcc} to unroll loops only during the last
1627 invocation (of as many as two invocations) of loop
1631 @ifclear USERVISONLY
1633 Improve handling of @samp{-fno-f2c} so that code that
1634 attempts to pass an intrinsic as an actual argument,
1635 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
1636 that the run-time-library routine is, effectively,
1637 compiled with @samp{-ff2c} in effect.
1640 @ifclear USERVISONLY
1642 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
1643 as an option that inhibits linking, just like @samp{-c} or
1644 @samp{-S}, and to recognize and properly handle the
1645 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
1646 and @samp{-Xlinker} options.
1649 @ifclear USERVISONLY
1651 Upgrade to @code{libf2c} as of 1997-08-16.
1654 @ifclear USERVISONLY
1656 Modify @code{libf2c} to consistently and clearly diagnose
1657 recursive I/O (at run time).
1661 @code{g77} driver now prints version information (such as produced
1662 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
1665 The @samp{.r} suffix now designates a Ratfor source file,
1666 to be preprocessed via the @code{ratfor} command, available
1669 @ifclear USERVISONLY
1671 Fix some aspects of how @code{gcc} determines what kind of
1672 system is being configured and what kinds are supported.
1673 For example, GNU Linux/Alpha ELF systems now are directly
1677 @ifclear USERVISONLY
1679 Improve diagnostics.
1682 @ifclear USERVISONLY
1684 Improve documentation and indexing.
1687 @ifclear USERVISONLY
1689 Include all pertinent files for @code{libf2c} that come
1690 from @code{netlib.bell-labs.com}; give any such files
1691 that aren't quite accurate in @code{g77}'s version of
1692 @code{libf2c} the suffix @samp{.netlib}.
1695 @ifclear USERVISONLY
1697 Reserve @code{INTEGER(KIND=0)} for future use.
1701 @c 1997-02-28: 0.5.20 released.
1705 The @samp{-fno-typeless-boz} option is now the default.
1707 This option specifies that non-decimal-radix
1708 constants using the prefixed-radix form (such as @samp{Z'1234'})
1709 are to be interpreted as @code{INTEGER(KIND=1)} constants.
1710 Specify @samp{-ftypeless-boz} to cause such
1711 constants to be interpreted as typeless.
1713 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
1717 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect},
1718 for information on the @samp{-ftypeless-boz} option.
1722 Options @samp{-ff90-intrinsics-enable} and
1723 @samp{-fvxt-intrinsics-enable} now are the
1726 Some programs might use names that clash with
1727 intrinsic names defined (and now enabled) by these
1728 options or by the new @code{libU77} intrinsics.
1729 Users of such programs might need to compile them
1730 differently (using, for example, @samp{-ff90-intrinsics-disable})
1731 or, better yet, insert appropriate @code{EXTERNAL}
1732 statements specifying that these names are not intended
1733 to be names of intrinsics.
1736 The @code{ALWAYS_FLUSH} macro is no longer defined when
1737 building @code{libf2c}, which should result in improved
1738 I/O performance, especially over NFS.
1740 @emph{Note:} If you have code that depends on the behavior
1741 of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
1742 you will have to modify @code{libf2c} accordingly before
1743 building it from this and future versions of @code{g77}.
1746 @xref{Output Assumed To Flush}, for more information.
1750 Dave Love's implementation of @code{libU77} has been
1751 added to the version of @code{libf2c} distributed with
1752 and built as part of @code{g77}.
1753 @code{g77} now knows about the routines in this library
1757 New option @samp{-fvxt} specifies that the
1758 source file is written in VXT Fortran, instead of GNU Fortran.
1761 @xref{VXT Fortran}, for more information on the constructs
1762 recognized when the @samp{-fvxt} option is specified.
1766 The @samp{-fvxt-not-f90} option has been deleted,
1767 along with its inverse, @samp{-ff90-not-vxt}.
1769 If you used one of these deleted options, you should
1770 re-read the pertinent documentation to determine which
1771 options, if any, are appropriate for compiling your
1772 code with this version of @code{g77}.
1775 @xref{Other Dialects}, for more information.
1779 The @samp{-fugly} option now issues a warning, as it
1780 likely will be removed in a future version.
1782 (Enabling all the @samp{-fugly-*} options is unlikely
1783 to be feasible, or sensible, in the future,
1784 so users should learn to specify only those
1785 @samp{-fugly-*} options they really need for a
1786 particular source file.)
1789 The @samp{-fugly-assumed} option, introduced in
1790 version 0.5.19, has been changed to
1791 better accommodate old and new code.
1794 @xref{Ugly Assumed-Size Arrays}, for more information.
1797 @ifclear USERVISONLY
1799 Make a number of fixes to the @code{g77} front end and
1800 the @code{gcc} back end to better support Alpha (AXP)
1802 This includes providing at least one bug-fix to the
1803 @code{gcc} back end for Alphas.
1807 Related to supporting Alpha (AXP) machines, the @code{LOC()}
1808 intrinsic and @code{%LOC()} construct now return
1809 values of @code{INTEGER(KIND=0)} type,
1810 as defined by the GNU Fortran language.
1812 This type is wide enough
1813 (holds the same number of bits)
1814 as the character-pointer type on the machine.
1816 On most machines, this won't make a difference,
1817 whereas, on Alphas and other systems with 64-bit pointers,
1818 the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)}
1819 (often referred to as @code{INTEGER*8})
1820 instead of the more common @code{INTEGER(KIND=1)}
1821 (often referred to as @code{INTEGER*4}).
1824 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
1825 end, to avoid bugs in @code{complex} support in the
1826 @code{gcc} back end.
1827 New option @samp{-fno-emulate-complex}
1828 causes @code{g77} to revert the 0.5.19 behavior.
1830 @ifclear USERVISONLY
1832 Fix bug whereby @samp{REAL A(1)}, for example, caused
1833 a compiler crash if @samp{-fugly-assumed} was in effect
1834 and @var{A} was a local (automatic) array.
1835 That case is no longer affected by the new
1836 handling of @samp{-fugly-assumed}.
1839 @ifclear USERVISONLY
1841 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
1842 no longer deletes @file{foo.f} before issuing other
1843 diagnostics, and so the @samp{-x} option is properly
1847 @ifclear USERVISONLY
1849 Enable inlining of subroutines and functions by the @code{gcc}
1851 This works as it does for @code{gcc} itself---program units
1852 may be inlined for invocations that follow them in the same
1853 program unit, as long as the appropriate compile-time
1854 options are specified.
1858 Dummy arguments are no longer assumed to potentially alias
1860 other dummy arguments or @code{COMMON} areas when any of
1861 these are defined (assigned to) by Fortran code.
1863 This can result in faster and/or smaller programs when
1864 compiling with optimization enabled, though on some
1865 systems this effect is observed only when @samp{-fforce-addr}
1868 New options @samp{-falias-check}, @samp{-fargument-alias},
1869 @samp{-fargument-noalias},
1870 and @samp{-fno-argument-noalias-global} control the
1871 way @code{g77} handles potential aliasing.
1874 @xref{Aliasing Assumed To Work}, for detailed information on why the
1875 new defaults might result in some programs no longer working the way they
1876 did when compiled by previous versions of @code{g77}.
1879 @ifclear USERVISONLY
1881 The @code{CONJG()} and @code{DCONJG()} intrinsics now
1882 are compiled in-line.
1885 @ifclear USERVISONLY
1887 The bug-fix for 0.5.19.1 has been re-done.
1888 The @code{g77} compiler has been changed back to
1889 assume @code{libf2c} has no aliasing problems in
1890 its implementations of the @code{COMPLEX} (and
1891 @code{DOUBLE COMPLEX}) intrinsics.
1892 The @code{libf2c} has been changed to have no such
1895 As a result, 0.5.20 is expected to offer improved performance
1896 over 0.5.19.1, perhaps as good as 0.5.19 in most
1897 or all cases, due to this change alone.
1899 @emph{Note:} This change requires version 0.5.20 of
1900 @code{libf2c}, at least, when linking code produced
1901 by any versions of @code{g77} other than 0.5.19.1.
1902 Use @samp{g77 -v} to determine the version numbers
1903 of the @code{libF77}, @code{libI77}, and @code{libU77}
1904 components of the @code{libf2c} library.
1905 (If these version numbers are not printed---in
1906 particular, if the linker complains about unresolved
1907 references to names like @samp{g77__fvers__}---that
1908 strongly suggests your installation has an obsolete
1909 version of @code{libf2c}.)
1913 New option @samp{-fugly-assign} specifies that the
1914 same memory locations are to be used to hold the
1915 values assigned by both statements @samp{I = 3} and
1916 @samp{ASSIGN 10 TO I}, for example.
1917 (Normally, @code{g77} uses a separate memory location
1918 to hold assigned statement labels.)
1921 @xref{Ugly Assigned Labels}, for more information.
1925 @code{FORMAT} and @code{ENTRY} statements now are allowed to
1926 precede @code{IMPLICIT NONE} statements.
1928 @ifclear USERVISONLY
1930 Produce diagnostic for unsupported @code{SELECT CASE} on
1931 @code{CHARACTER} type, instead of crashing, at compile time.
1934 @ifclear USERVISONLY
1936 Fix crashes involving diagnosed or invalid code.
1939 @ifclear USERVISONLY
1941 Change approach to building @code{libf2c} archive
1942 (@file{libf2c.a}) so that members are added to it
1943 only when truly necessary, so the user that installs
1944 an already-built @code{g77} doesn't need to have write
1945 access to the build tree (whereas the user doing the
1946 build might not have access to install new software
1950 @ifclear USERVISONLY
1952 Support @code{gcc} version 2.7.2.2
1953 (modified by @code{g77} into version 2.7.2.2.f.2),
1955 support for prior versions of @code{gcc}.
1958 @ifclear USERVISONLY
1960 Upgrade to @code{libf2c} as of 1997-02-08, and
1961 fix up some of the build procedures.
1964 @ifclear USERVISONLY
1966 Improve general build procedures for @code{g77},
1967 fixing minor bugs (such as deletion of any file
1968 named @file{f771} in the parent directory of @code{gcc/}).
1972 Enable full support of @code{INTEGER(KIND=2)}
1973 (often referred to as @code{INTEGER*8})
1975 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
1976 may make full use of its features via the @code{g77}
1977 version of @file{f2c.h} and the @code{INTEGER(KIND=2)}
1978 support routines in the @code{g77} version of @code{libf2c}.
1981 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
1982 yields version information on the library.
1985 The @code{SNGL} and @code{FLOAT} intrinsics now are
1986 specific intrinsics, instead of synonyms for the
1987 generic intrinsic @code{REAL}.
1990 New intrinsics have been added.
1991 These are @code{REALPART}, @code{IMAGPART},
1993 @code{LONG}, and @code{SHORT}.
1996 A new group of intrinsics, @code{gnu}, has been added
1997 to contain the new @code{REALPART}, @code{IMAGPART},
1998 and @code{COMPLEX} intrinsics.
1999 An old group, @code{dcp}, has been removed.
2002 Complain about industry-wide ambiguous references
2003 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
2004 where @var{expr} is @code{DOUBLE COMPLEX} (or any
2005 complex type other than @code{COMPLEX}), unless
2006 @samp{-ff90} option specifies Fortran 90 interpretation
2007 or new @samp{-fugly-complex} option, in conjunction with
2008 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
2010 @ifclear USERVISONLY
2012 Make improvements to diagnostics.
2015 @ifclear USERVISONLY
2017 Speed up compiler a bit.
2020 @ifclear USERVISONLY
2022 Improvements to documentation and indexing, including
2023 a new chapter containing information on one, later
2024 more, diagnostics that users are directed to pull
2025 up automatically via a message in the diagnostic itself.
2027 (Hence the menu item @code{M} for the node
2028 @code{Diagnostics} in the top-level menu of
2029 the Info documentation.)
2033 @ifclear DOC-OLDNEWS
2034 @heading In previous versions:
2036 Information on previous versions is archived
2037 in @file{@value{path-g77}/news.texi}
2038 following the test of the @code{DOC-OLDNEWS} macro.
2042 @c 1997-02-01: 0.5.19.1 released.
2043 @heading In 0.5.19.1:
2046 Code-generation bugs afflicting operations on complex
2047 data have been fixed.
2049 These bugs occurred when assigning the result of an
2050 operation to a complex variable (or array element)
2051 that also served as an input to that operation.
2053 The operations affected by this bug were: @code{CONJG()},
2054 @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
2055 @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
2056 @code{CSQRT()}, @code{CDSQRT()}, complex division, and
2057 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
2059 (The related generic and @samp{Z}-prefixed intrinsics,
2060 such as @code{ZSIN()}, also were affected.)
2062 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
2063 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
2064 @code{DOUBLE COMPLEX}) have been fixed.
2067 @c 1996-12-07: 0.5.19 released.
2071 Fix @code{FORMAT} statement parsing so negative values for
2072 specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
2073 are correctly processed as negative.
2076 Fix @code{SIGNAL} intrinsic so it once again accepts a
2077 procedure as its second argument.
2080 A temporary kludge option provides bare-bones information on
2081 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
2084 New @samp{-fonetrip} option specifies FORTRAN-66-style
2085 one-trip @code{DO} loops.
2088 New @samp{-fno-silent} option causes names of program units
2089 to be printed as they are compiled, in a fashion similar to
2090 UNIX @code{f77} and @code{f2c}.
2093 New @samp{-fugly-assumed} option specifies that arrays
2094 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
2095 treated as assumed-size.
2098 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
2099 constants using the prefixed-radix form (such as @samp{Z'1234'})
2100 are to be interpreted as @code{INTEGER} constants.
2103 New @samp{-ff66} option is a ``shorthand'' option that specifies
2104 behaviors considered appropriate for FORTRAN 66 programs.
2107 New @samp{-ff77} option is a ``shorthand'' option that specifies
2108 behaviors considered appropriate for UNIX @code{f77} programs.
2111 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
2112 to perform some of what @samp{-fugly} used to do.
2113 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
2114 in that they do nothing more than enable (or disable) other
2115 @samp{-fugly-*} options.
2118 Fix parsing of assignment statements involving targets that
2119 are substrings of elements of @code{CHARACTER} arrays having
2120 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
2121 @samp{REALFUNCTIONFOO}.
2124 Fix crashes involving diagnosed code.
2127 Fix handling of local @code{EQUIVALENCE} areas so certain cases
2128 of valid Fortran programs are not misdiagnosed as improperly
2129 extending the area backwards.
2132 Support @code{gcc} version 2.7.2.1.
2135 Upgrade to @code{libf2c} as of 1996-09-26, and
2136 fix up some of the build procedures.
2139 Change code generation for list-directed I/O so it allows
2140 for new versions of @code{libf2c} that might return non-zero
2141 status codes for some operations previously assumed to always
2144 This change not only affects how @code{IOSTAT=} variables
2145 are set by list-directed I/O, it also affects whether
2146 @code{END=} and @code{ERR=} labels are reached by these
2150 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
2151 procedures in @code{libf2c}.
2154 Modify @code{fseek_()} in @code{libf2c} to be more portable
2155 (though, in practice, there might be no systems where this
2156 matters) and to catch invalid @code{whence} arguments.
2159 Some useless warnings from the @samp{-Wunused} option have
2163 Fix a problem building the @file{f771} executable
2164 on AIX systems by linking with the @samp{-bbigtoc} option.
2167 Abort configuration if @code{gcc} has not been patched
2168 using the patch file provided in the @file{gcc/f/gbe/}
2172 Add options @samp{--help} and @samp{--version} to the
2173 @code{g77} command, to conform to GNU coding guidelines.
2174 Also add printing of @code{g77} version number when
2175 the @samp{--verbose} (@samp{-v}) option is used.
2178 Change internally generated name for local @code{EQUIVALENCE}
2179 areas to one based on the alphabetically sorted first name
2180 in the list of names for entities placed at the beginning
2184 Improvements to documentation and indexing.
2187 @c 1996-04-01: 0.5.18 released.
2191 Add some rudimentary support for @code{INTEGER*1},
2192 @code{INTEGER*2}, @code{INTEGER*8},
2193 and their @code{LOGICAL} equivalents.
2194 (This support works on most, maybe all, @code{gcc} targets.)
2196 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2197 for providing the patch for this!
2199 Among the missing elements from the support for these
2200 features are full intrinsic support and constants.
2203 Add some rudimentary support for the @code{BYTE} and
2204 @code{WORD} type-declaration statements.
2205 @code{BYTE} corresponds to @code{INTEGER*1},
2206 while @code{WORD} corresponds to @code{INTEGER*2}.
2208 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2209 for providing the patch for this!
2212 The compiler code handling intrinsics has been largely
2213 rewritten to accommodate the new types.
2214 No new intrinsics or arguments for existing
2215 intrinsics have been added, so there is, at this
2216 point, no intrinsic to convert to @code{INTEGER*8},
2220 Support automatic arrays in procedures.
2223 Reduce space/time requirements for handling large
2224 @emph{sparsely} initialized aggregate arrays.
2225 This improvement applies to only a subset of
2226 the general problem to be addressed in 0.6.
2229 Treat initial values of zero as if they weren't
2230 specified (in DATA and type-declaration statements).
2231 The initial values will be set to zero anyway, but the amount
2232 of compile time processing them will be reduced,
2233 in some cases significantly (though, again, this
2234 is only a subset of the general problem to be
2237 A new option, @samp{-fzeros}, is introduced to
2238 enable the traditional treatment of zeros as any
2242 With @samp{-ff90} in force, @code{g77} incorrectly
2243 interpreted @samp{REAL(Z)} as returning a @code{REAL}
2244 result, instead of as a @code{DOUBLE PRECISION}
2246 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
2248 With @samp{-fno-f90} in force, the interpretation remains
2249 unchanged, since this appears to be how at least some
2250 F77 code using the @code{DOUBLE COMPLEX} extension expected
2253 Essentially, @samp{REAL(Z)} in F90 is the same as
2254 @samp{DBLE(Z)}, while in extended F77, it appears to
2255 be the same as @samp{REAL(REAL(Z))}.
2258 An expression involving exponentiation, where both operands
2259 were type @code{INTEGER} and the right-hand operand
2260 was negative, was erroneously evaluated.
2263 Fix bugs involving @code{DATA} implied-@code{DO} constructs
2264 (these involved an errant diagnostic and a crash, both on good
2265 code, one involving subsequent statement-function definition).
2268 Close @code{INCLUDE} files after processing them, so compiling source
2269 files with lots of @code{INCLUDE} statements does not result in
2270 being unable to open @code{INCLUDE} files after all the available
2271 file descriptors are used up.
2274 Speed up compiling, especially of larger programs, and perhaps
2275 slightly reduce memory utilization while compiling (this is
2276 @emph{not} the improvement planned for 0.6 involving large aggregate
2277 areas)---these improvements result from simply turning
2278 off some low-level code to do self-checking that hasn't been
2279 triggered in a long time.
2282 Introduce three new options that
2283 implement optimizations in the @code{gcc} back end (GBE).
2284 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
2285 and @samp{-frerun-loop-opt}, which are enabled, by default,
2286 for Fortran compilations.
2287 These optimizations are intended to help toon Fortran programs.
2290 Patch the GBE to do a better job optimizing certain
2291 kinds of references to array elements.
2294 Due to patches to the GBE, the version number of @code{gcc}
2295 also is patched to make it easier to manage installations,
2296 especially useful if it turns out a @code{g77} change to the
2299 The @code{g77}-modified version number is the @code{gcc}
2300 version number with the string @samp{.f.@var{n}} appended,
2301 where @samp{f} identifies the version as enhanced for
2302 Fortran, and @var{n} is @samp{1} for the first Fortran
2303 patch for that version of @code{gcc}, @samp{2} for the
2306 So, this introduces version 2.7.2.f.1 of @code{gcc}.
2309 Make several improvements and fixes to diagnostics, including
2310 the removal of two that were inappropriate or inadequate.
2313 Warning about two successive arithmetic operators, produced
2314 by @samp{-Wsurprising}, now produced @emph{only} when both
2315 operators are, indeed, arithmetic (not relational/boolean).
2318 @samp{-Wsurprising} now warns about the remaining cases
2319 of using non-integral variables for implied-@code{DO}
2320 loops, instead of these being rejected unless @samp{-fpedantic}
2321 or @samp{-fugly} specified.
2324 Allow @code{SAVE} of a local variable or array, even after
2325 it has been given an initial value via @code{DATA}, for example.
2328 Introduce an Info version of @code{g77} documentation, which
2329 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
2330 @file{gcc/f/PROJECTS}.
2331 These files will be removed in a future release.
2332 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
2333 @file{gcc/f/NEWS} now are automatically built from
2334 the texinfo source when distributions are made.
2336 This effort was inspired by a first pass at translating
2337 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
2338 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
2341 New @samp{-fno-second-underscore} option to specify
2342 that, when @samp{-funderscoring} is in effect, a second
2343 underscore is not to be appended to Fortran names already
2344 containing an underscore.
2347 Change the way iterative @code{DO} loops work to follow
2349 In particular, calculation of the iteration count is
2350 still done by converting the start, end, and increment
2351 parameters to the type of the @code{DO} variable, but
2352 the result of the calculation is always converted to
2353 the default @code{INTEGER} type.
2355 (This should have no effect on existing code compiled
2356 by @code{g77}, but code written to assume that use
2357 of a @emph{wider} type for the @code{DO} variable
2358 will result in an iteration count being fully calculated
2359 using that wider type (wider
2360 than default @code{INTEGER}) must be rewritten.)
2363 Support @code{gcc} version 2.7.2.
2366 Upgrade to @code{libf2c} as of 1996-03-23, and
2367 fix up some of the build procedures.
2369 Note that the email addresses related to @code{f2c}
2370 have changed---the distribution site now is
2371 named @code{netlib.bell-labs.com}, and the
2372 maintainer's new address is @email{dmg@@bell-labs.com}.
2375 @c 1995-11-18: 0.5.17 released.
2379 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
2380 system's @file{/dev/null} special file if run by user @code{root}.
2382 @strong{All users} of version 0.5.16 should ensure that
2383 they have not removed @file{/dev/null} or replaced it with an ordinary
2384 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
2385 @samp{ls -l /dev/zero}.
2386 If the output isn't basically the
2387 same, contact your system
2388 administrator about restoring @file{/dev/null} to its proper status).
2390 This bug is particularly insidious because removing @file{/dev/null} as
2391 a special file can go undetected for quite a while, aside from
2392 various applications and programs exhibiting sudden, strange
2395 I sincerely apologize for not realizing the
2396 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
2397 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
2398 it is supposed to build (especially if it reports unresolved
2399 references, which it should in this case)!
2402 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
2405 Fix crash that can occur when diagnostics given outside of any
2406 program unit (such as when input file contains @samp{@@foo}).
2409 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
2412 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
2413 and issue clearer error message in cases where target of @code{ASSIGN}
2414 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
2418 Make @code{libf2c} build procedures work on more systems again by
2419 eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}.
2422 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
2423 options to compiler.
2426 Fix failure to always diagnose missing type declaration for
2427 @code{IMPLICIT NONE}.
2430 Fix compile-time performance problem (which could sometimes
2431 crash the compiler, cause a hang, or whatever, due to a bug
2432 in the back end) involving exponentiation with a large @code{INTEGER}
2433 constant for the right-hand operator (e.g. @samp{I**32767}).
2436 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
2437 utility in particular) is properly built using the host compiler.
2440 Add new @samp{-Wsurprising} option to warn about constructs that are
2441 interpreted by the Fortran standard (and @code{g77}) in ways that
2442 are surprising to many programmers.
2445 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
2446 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
2448 @emph{Note:} You should
2449 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
2450 these as generic intrinsics, to improve likelihood of diagnostics
2451 (instead of subtle run-time bugs) when using a compiler that
2452 doesn't support these as intrinsics (e.g. @code{f2c}).
2455 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
2456 with non-@code{INTEGER} index variable; issue that under
2457 @samp{-Wsurprising} instead.
2460 Clarify some diagnostics that say things like ``ignored'' when that's
2464 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
2468 Minor improvements to code generation for various operations on
2469 @code{LOGICAL} operands.
2472 Minor improvement to code generation for some @code{DO} loops on some
2476 Support @code{gcc} version 2.7.1.
2479 Upgrade to @code{libf2c} as of 1995-11-15.
2482 @c 1995-08-30: 0.5.16 released.
2486 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
2487 not involving @code{COMMON}.
2490 Fix code-generation bugs involving invoking ``gratis'' library procedures
2491 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
2492 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
2493 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
2494 @code{DERF()}, and @code{DERFC()}.
2497 Update @code{libf2c} to include netlib patches through 1995-08-16, and
2498 @code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
2499 consistent with other Fortran implementations by outputting
2500 leading zeros in formatted and list-directed output.
2503 Fix a code-generation bug involving adjustable dummy arrays with high
2504 bounds whose primaries are changed during procedure execution, and
2505 which might well improve code-generation performance for such arrays
2506 compared to @code{f2c} plus @code{gcc} (but apparently only when using
2507 @file{gcc-2.7.0} or later).
2510 Fix a code-generation bug involving invocation of @code{COMPLEX} and
2511 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
2512 @code{DOUBLE COMPLEX} divides, when the result
2513 of the invocation or divide is assigned directly to a variable
2514 that overlaps one or more of the arguments to the invocation or divide.
2517 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
2518 nonconstant and the expression is used to dimension a dummy
2519 array, since the @code{gcc} back end does not support the necessary
2520 mechanics (and the @code{gcc} front end rejects the equivalent
2521 construct, as it turns out).
2524 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
2527 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
2528 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
2531 Fix crashes and such involving diagnosed code.
2534 Diagnose, instead of crashing on, statement function definitions
2535 having duplicate dummy argument names.
2538 Fix bug causing rejection of good code involving statement function
2542 Fix bug resulting in debugger not knowing size of local equivalence
2543 area when any member of area has initial value (via @code{DATA},
2547 Fix installation bug that prevented installation of @code{g77} driver.
2548 Provide for easy selection of whether to install copy of @code{g77}
2549 as @code{f77} to replace the broken code.
2552 Fix @code{gcc} driver (affects @code{g77} thereby) to not
2553 gratuitously invoke the
2554 @code{f771} program (e.g. when @samp{-E} is specified).
2557 Fix diagnostic to point to correct source line when it immediately
2558 follows an @code{INCLUDE} statement.
2561 Support more compiler options in @code{gcc}/@code{g77} when
2562 compiling Fortran files.
2563 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
2564 correct setting of version-number macros for preprocessing, full
2565 recognition of @samp{-O0}, and
2566 automatic insertion of configuration-specific linker specs.
2569 Add new intrinsics that interface to existing routines in @code{libf2c}:
2570 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
2571 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
2572 @code{SIGNAL}, and @code{SYSTEM}.
2573 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
2574 @code{SYSTEM} are intrinsic subroutines, not functions (since they
2575 have side effects), so to get the return values from @code{SIGNAL}
2576 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
2577 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
2580 Add new intrinsic group named @code{unix} to contain the new intrinsics,
2581 and by default enable this new group.
2584 Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
2588 Improve @code{g77} so that @samp{g77 -v} by itself (or with
2589 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
2590 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
2591 version info, and so that long-form options @code{gcc} accepts are
2592 understood by @code{g77} as well (even in truncated, unambiguous forms).
2595 Add new @code{g77} option @samp{--driver=name} to specify driver when
2596 default, @code{gcc}, isn't appropriate.
2599 Add support for @samp{#} directives (as output by the preprocessor) in the
2600 compiler, and enable generation of those directives by the
2601 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
2602 info are more useful to users of the preprocessor.
2605 Produce better diagnostics, more like @code{gcc}, with info such as
2606 @samp{In function `foo':} and @samp{In file included from...:}.
2609 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
2612 When @samp{-Wunused} in effect, don't warn about local variables used as
2613 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
2614 variables, even though, strictly speaking, these are not uses
2615 of the variables themselves.
2618 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
2619 at all, since there's no way to turn this off for individual
2620 cases (@code{g77} might someday start warning about these)---applies
2621 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
2622 warn about unused dummy arguments.
2625 New option @samp{-fno-underscoring} that inhibits transformation of names
2626 (by appending one or two underscores) so users may experiment
2627 with implications of such an environment.
2630 Minor improvement to @file{gcc/f/info} module to make it easier to build
2631 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
2632 (but definitely not all machines nor all non-@code{gcc} compilers).
2634 do not report bugs showing problems compilers have with
2635 macros defined in @file{gcc/f/target.h} and used in places like
2636 @file{gcc/f/expr.c}.
2639 Add warning to be printed for each invocation of the compiler
2640 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
2642 since @code{g77} is known to not work well for such cases.
2645 Lots of new documentation (though work is still needed to put it into
2646 canonical GNU format).
2649 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
2650 (by default), to produce
2651 smaller library without lots of debugging clutter.
2654 @c 1995-05-19: 0.5.15 released.
2658 Fix bad code generation involving @samp{X**I} and temporary, internal variables
2659 generated by @code{g77} and the back end (such as for @code{DO} loops).
2662 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
2665 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
2668 Fix crash or other erratic behavior when null character constant
2669 (@samp{''}) is encountered.
2672 Fix crash or other erratic behavior involving diagnosed code.
2675 Fix code generation for external functions returning type @code{REAL} when
2676 the @samp{-ff2c} option is in force (which it is by default) so that
2677 @code{f2c} compatibility is indeed provided.
2680 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
2681 with an array declarator.
2684 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
2686 of a typical fixed-form line, defaulting to 72 columns, such
2687 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
2688 meaning no characters are ignored.
2689 does not affect lines
2690 with @samp{&} in column 1, which are always processed as if
2691 @samp{-ffixed-line-length-none} was in effect.
2694 No longer generate better code for some kinds of array references,
2695 as @code{gcc} back end is to be fixed to do this even better, and it
2696 turned out to slow down some code in some cases after all.
2699 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
2700 values (e.g. via @code{DATA}), uninitialized members now always
2701 initialized to binary zeros (though this is not required by
2702 the standard, and might not be done in future versions
2704 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
2705 (essentially those with members of more than one type), the
2706 uninitialized members were initialized to spaces, to
2707 cater to @code{CHARACTER} types, but it seems no existing code expects
2708 that, while much existing code expects binary zeros.
2714 Don't emit bad code when low bound of adjustable array is nonconstant
2715 and thus might vary as an expression at run time.
2718 Emit correct code for calculation of number of trips in @code{DO} loops
2720 where the loop should not execute at all.
2721 (This bug affected cases
2722 where the difference between the begin and end values was less
2723 than the step count, though probably not for floating-point cases.)
2726 Fix crash when extra parentheses surround item in
2727 @code{DATA} implied-@code{DO} list.
2730 Fix crash over minor internal inconsistencies in handling diagnostics,
2731 just substitute dummy strings where necessary.
2734 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
2737 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
2738 is a string of one or more digits.
2741 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
2744 Fix various crashes involving code with diagnosed errors.
2747 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
2748 @file{header.gcc} facility for handling systems like MS-DOS.
2751 Allow @code{INCLUDE} statement to be continued across multiple lines,
2752 even allow it to coexist with other statements on the same line.
2755 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
2756 fixes a bug involving infinite loops reading EOF with empty list-directed
2760 Remove all the @code{g77}-specific auto-configuration scripts, code,
2762 except for temporary substitutes for bsearch() and strtoul(), as
2763 too many configure/build problems were reported in these areas.
2764 People will have to fix their systems' problems themselves, or at
2765 least somewhere other than @code{g77}, which expects a working ANSI C
2766 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
2769 Complain if initialized common redeclared as larger in subsequent program
2773 Warn if blank common initialized, since its size can vary and hence
2774 related warnings that might be helpful won't be seen.
2777 New @samp{-fbackslash} option, on by default, that causes @samp{\}
2778 within @code{CHARACTER}
2779 and Hollerith constants to be interpreted a la GNU C.
2781 this behavior is somewhat different from @code{f2c}'s, which supports only
2782 a limited subset of backslash (escape) sequences.
2785 Make @samp{-fugly-args} the default.
2788 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
2789 to be specified as initial values for variables or named constants
2790 (@code{PARAMETER}), and also allows character<->numeric conversion in
2791 those contexts---turn off via @samp{-fno-ugly-init}.
2794 New @samp{-finit-local-zero} option to initialize
2795 local variables to binary zeros.
2796 This does not affect whether they are @code{SAVE}d, i.e. made
2797 automatic or static.
2800 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
2802 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
2805 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
2806 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
2807 requires @samp{-O}), and implies @samp{-Wunused} as well.
2810 @samp{-Wunused} no longer gives spurious messages for unused
2811 @code{EXTERNAL} names (since they are assumed to refer to block data
2812 program units, to make use of libraries more reliable).
2815 Support @code{%LOC()} and @code{LOC()} of character arguments.
2818 Support null (zero-length) character constants and expressions.
2821 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
2824 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
2825 character expressions that are valid in assignments but
2826 not normally as actual arguments.
2829 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
2832 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
2833 in @code{BLOCK DATA}, even though these are not allowed by the standard.
2836 Allow @code{RETURN} in main program unit.
2839 Changes to Hollerith-constant support to obey Appendix C of the
2844 Now padded on the right with zeros, not spaces.
2847 Hollerith ``format specifications'' in the form of arrays of
2848 non-character allowed.
2851 Warnings issued when non-space truncation occurs when converting
2855 When specified as actual argument, now passed
2856 by reference to @code{INTEGER} (padded on right with spaces if constant
2857 too small, otherwise fully intact if constant wider the @code{INTEGER}
2858 type) instead of by value.
2861 @strong{Warning:} @code{f2c} differs on the
2862 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
2863 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
2864 as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary
2865 to widen to @code{INTEGER}), essentially.
2868 Changes and fixes to typeless-constant support:
2872 Now treated as a typeless double-length @code{INTEGER} value.
2875 Warnings issued when overflow occurs.
2878 Padded on the left with zeros when converting
2882 Should be properly aligned and ordered on
2883 the target machine for whatever type it is turned into.
2886 When specified as actual argument, now passed as reference to
2887 a default @code{INTEGER} constant.
2891 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
2892 the expression plus a length for the expression just as if
2893 it were a @code{CHARACTER} expression.
2894 For example, @samp{CALL FOO(%DESCR(D))}, where
2895 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
2898 Name of multi-entrypoint master function changed to incorporate
2899 the name of the primary entry point instead of a decimal
2900 value, so the name of the master function for @samp{SUBROUTINE X}
2901 with alternate entry points is now @samp{__g77_masterfun_x}.
2904 Remove redundant message about zero-step-count @code{DO} loops.
2907 Clean up diagnostic messages, shortening many of them.
2910 Fix typo in @code{g77} man page.
2913 Clarify implications of constant-handling bugs in @file{f/BUGS}.
2916 Generate better code for @samp{**} operator with a right-hand operand of
2917 type @code{INTEGER}.
2920 Generate better code for @code{SQRT()} and @code{DSQRT()},
2921 also when @samp{-ffast-math}
2922 specified, enable better code generation for @code{SIN()} and @code{COS()}.
2925 Generate better code for some kinds of array references.
2928 Speed up lexing somewhat (this makes the compilation phase noticeably