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-16
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 @code{libg2c} (@code{libf2c}) no longer loses track
190 of the file being worked on
191 during a @code{BACKSPACE} operation.
196 @c Tim Prince reported this, regarding the TEST_FPU benchmark.
197 Automatic arrays now seem to be working on HP-UX systems.
202 Fix @code{g77} so it no longer crashes when compiling
203 I/O statements using keywords that define @code{INTEGER} values,
204 such as @samp{IOSTAT=@var{j}},
205 where @var{j} is other than default @code{INTEGER}
206 (such as @code{INTEGER*2}).
207 Instead, it issues a diagnostic.
212 Fix @code{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/},
213 where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2},
214 instead of producing a spurious diagnostic.
215 Also fix @samp{DATA (A(I),I=1,N)},
216 where @samp{N} is not default @code{INTEGER}
217 to work instead of crashing @code{g77}.
222 The @samp{-ax} option is now obeyed when compiling Fortran programs.
223 (It is passed to the @file{f771} driver.)
227 The new @samp{-fbounds-check} option
228 causes @code{g77} to compile run-time bounds checks
229 of array subscripts, as well as of substring start and end points.
232 @code{libg2c} now supports building as multilibbed library,
233 which provides better support for systems
234 that require options such as @samp{-mieee}
238 Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
239 now are recognized by @code{g77}
240 as if they ended in @samp{.for} and @samp{.fpp}, respectively.
243 The order of arguments to the @emph{subroutine} forms of the
244 @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam}
245 intrinsics has been swapped.
246 The argument serving as the returned value
247 for the corresponding function forms
248 now is the @emph{second} argument,
249 making these consistent with the other subroutine forms
250 of @code{libU77} intrinsics.
253 @code{g77} now warns about a reference to an intrinsic
254 that has an interface that is not Year 2000 (Y2K) compliant.
255 Also, @code{libg2c} has been changed to increase the likelihood
256 of catching references to the implementations of these intrinsics
257 using the @code{EXTERNAL} mechanism
258 (which would avoid the new warnings).
261 @xref{Year 2000 (Y2K) Problems}, for more information.
266 @code{g77} now warns about a reference to a function
267 when the corresponding @emph{subsequent} function program unit
268 disagrees with the reference concerning the type of the function.
272 @samp{-fno-emulate-complex} is now the default option.
273 This should result in improved performance
274 of code that uses the @code{COMPLEX} data type.
277 @cindex double-precision performance
278 @cindex -malign-double
280 The @samp{-malign-double} option
281 now reliably aligns @emph{all} double-precision variables and arrays
282 on Intel x86 targets.
286 Even without the @samp{-malign-double} option,
287 @code{g77} reliably aligns local double-precision variables
288 that are not in @code{EQUIVALENCE} areas
289 and not @code{SAVE}'d.
294 @code{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands
295 instead of generating a run-time call to
296 the @code{libf2c} routines @code{c_div} or @code{z_div},
297 unless the @samp{-Os} option is specified.
301 @code{g77} no longer generates code to maintain @code{errno},
302 a C-language concept,
303 when performing operations such as the @code{SqRt} intrinsic.
307 @code{g77} developers can temporarily use
308 the @samp{-fflatten-arrays} option
309 to compare how the compiler handles code generation
310 using C-like constructs as compared to the
311 Fortran-like method constructs normally used.
316 A substantial portion of the @code{g77} front end's code-generation component
318 It now generates code using facilities more robustly supported
319 by the @code{gcc} back end.
320 One effect of this rewrite is that some codes no longer produce
321 a spurious ``label @var{lab} used before containing binding contour''
326 Support for the @samp{-fugly} option has been removed.
330 Improve documentation and indexing,
331 including information on Year 2000 (Y2K) compliance,
332 and providing more information on internals of the front end.
337 Upgrade to @code{libf2c} as of 1999-05-10.
341 @heading In 0.5.24 versus 0.5.23:
343 There is no @code{g77} version 0.5.24 at this time,
345 0.5.24 is the version number designated for bug fixes and,
346 perhaps, some new features added,
348 Version 0.5.23 requires @code{gcc} 2.8.1,
349 as 0.5.24 was planned to require.
351 Due to @code{EGCS} becoming @code{GCC}
352 (which is now an acronym for ``GNU Compiler Collection''),
353 and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95,
354 there seems to be no need for an actual 0.5.24 release.
356 To reduce the confusion already resulting from use of 0.5.24
357 to designate @code{g77} versions within @code{EGCS} versions 1.0 and 1.1,
358 as well as in versions of @code{g77} documentation and notices
360 ``mainline'' @code{g77} version numbering resumes
361 at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2),
362 skipping over 0.5.24 as a placeholder version number.
364 To repeat, there is no @code{g77} 0.5.24, but there is now a 0.5.25.
365 Please remain calm and return to your keypunch units.
367 @c 1999-03-15: EGCS 1.1.2 released.
368 @heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1:
372 Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
373 so the returned year is in the documented, non-Y2K-compliant range
375 instead of being returned as 100 in the year 2000.
378 @xref{IDate Intrinsic (VXT)},
379 for more information.
383 Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
384 to return the milliseconds value properly
388 Fix the @code{LStat} intrinsic (in @code{libg2c})
389 to return device-ID information properly
393 Improve documentation.
397 @c 1998-12-04: EGCS 1.1.1 released.
398 @heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1:
402 Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation
404 whenever a @code{REWIND} is done.
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{libg2c} so it no longer crashes with a spurious diagnostic
411 upon doing any I/O following a direct formatted write.
413 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
414 @code{g77}'s version of @code{libf2c}.)
417 Fix @code{g77} so it no longer crashes compiling references
418 to the @code{Rand} intrinsic on some systems.
421 Fix @code{g77} portion of installation process so it works
422 better on some systems
423 (those with shells requiring @samp{else true} clauses
424 on @code{if} constructs
425 for the completion code to be set properly).
429 @c 1998-09-03: EGCS 1.1 released.
430 @heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3:
434 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
435 that wrote one byte beyond the end of its @code{CHARACTER}
437 and in the @code{libU77} intrinsics
438 @code{GMTime} and @code{LTime}
439 that overwrote their arguments.
444 Assumed arrays with negative bounds
445 (such as @samp{REAL A(-1:*)})
446 no longer elicit spurious diagnostics from @code{g77},
447 even on systems with pointers having
448 different sizes than integers.
450 This bug is not known to have existed in any
451 recent version of @code{gcc}.
452 It was introduced in an early release of @code{egcs}.
457 Valid combinations of @code{EXTERNAL},
458 passing that external as a dummy argument
459 without explicitly giving it a type,
460 and, in a subsequent program unit,
461 referencing that external as
462 an external function with a different type
463 no longer crash @code{g77}.
468 @code{CASE DEFAULT} no longer crashes @code{g77}.
473 The @samp{-Wunused} option no longer issues a spurious
474 warning about the ``master'' procedure generated by
475 @code{g77} for procedures containing @code{ENTRY} statements.
479 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
480 compile-time constant @code{INTEGER} expression.
483 Fix @code{g77} @samp{-g} option so procedures that
484 use @code{ENTRY} can be stepped through, line by line,
488 Allow any @code{REAL} argument to intrinsics
489 @code{Second} and @code{CPU_Time}.
492 Use @code{tempnam}, if available, to open scratch files
493 (as in @samp{OPEN(STATUS='SCRATCH')})
494 so that the @code{TMPDIR} environment variable,
498 @code{g77}'s version of @code{libf2c} separates out
499 the setting of global state
500 (such as command-line arguments and signal handling)
501 from @file{main.o} into distinct, new library
504 This should make it easier to write portable applications
505 that have their own (non-Fortran) @code{main()} routine
506 properly set up the @code{libf2c} environment, even
507 when @code{libf2c} (now @code{libg2c}) is a shared library.
511 @code{g77} no longer installs the @file{f77} command
512 and @file{f77.1} man page
513 in the @file{/usr} or @file{/usr/local} heirarchy,
514 even if the @file{f77-install-ok} file exists
515 in the source or build directory.
516 See the installation documentation for more information.
521 @code{g77} no longer installs the @file{libf2c.a} library
522 and @file{f2c.h} include file
523 in the @file{/usr} or @file{/usr/local} heirarchy,
524 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
525 in the source or build directory.
526 See the installation documentation for more information.
531 The @file{libf2c.a} library produced by @code{g77} has been
532 renamed to @file{libg2c.a}.
533 It is installed only in the @code{gcc} ``private''
534 directory heirarchy, @file{gcc-lib}.
535 This allows system administrators and users to choose which
536 version of the @code{libf2c} library from @code{netlib} they
537 wish to use on a case-by-case basis.
538 See the installation documentation for more information.
543 The @file{f2c.h} include (header) file produced by @code{g77}
544 has been renamed to @file{g2c.h}.
545 It is installed only in the @code{gcc} ``private''
546 directory heirarchy, @file{gcc-lib}.
547 This allows system administrators and users to choose which
548 version of the include file from @code{netlib} they
549 wish to use on a case-by-case basis.
550 See the installation documentation for more information.
554 The @code{g77} command now expects the run-time library
555 to be named @code{libg2c.a} instead of @code{libf2c.a},
556 to ensure that a version other than the one built and
557 installed as part of the same @code{g77} version is picked up.
561 During the configuration and build process,
562 @code{g77} creates subdirectories it needs only as it
564 Other cleaning up of the configuration and build process
565 has been performed as well.
570 @code{install-info} now used to update the directory of
571 Info documentation to contain an entry for @code{g77}
572 (during installation).
576 Some diagnostics have been changed from warnings to errors,
577 to prevent inadvertent use of the resulting, probably buggy,
579 These mostly include diagnostics about use of unsupported features
580 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
581 @code{WRITE} statements,
582 and about truncations of various sorts of constants.
586 Improve compilation of @code{FORMAT} expressions so that
587 a null byte is appended to the last operand if it
589 This provides a cleaner run-time diagnostic as provided
590 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
595 Improve documentation and indexing.
600 The upgrade to @code{libf2c} as of 1998-06-18
601 should fix a variety of problems, including
602 those involving some uses of the @code{T} format
603 specifier, and perhaps some build (porting) problems
608 @c 1998-09-03: EGCS 1.1 released.
609 @heading In @code{EGCS} 1.1 versus @code{g77} 0.5.23:
613 @cindex stack, 387 coprocessor
617 Fix a code-generation bug that afflicted
618 Intel x86 targets when @samp{-O2} was specified
619 compiling, for example, an old version of
620 the @code{DNRM2} routine.
622 The x87 coprocessor stack was being
623 mismanaged in cases involving assigned @code{GOTO}
629 @code{g77} no longer produces incorrect code
631 for @code{EQUIVALENCE} and @code{COMMON}
632 aggregates that, due to ``unnatural'' ordering of members
633 vis-a-vis their types, require initial padding.
638 Fix @code{g77} crash compiling code
639 containing the construct @samp{CMPLX(0.)} or similar.
644 @code{g77} no longer crashes when compiling code
645 containing specification statements such as
646 @samp{INTEGER(KIND=7) PTR}.
651 @code{g77} no longer crashes when compiling code
652 such as @samp{J = SIGNAL(1, 2)}.
656 @code{g77} now treats @samp{%LOC(@var{expr})} and
657 @samp{LOC(@var{expr})} as ``ordinary'' expressions
658 when they are used as arguments in procedure calls.
659 This change applies only to global (filewide) analysis,
660 making it consistent with
661 how @code{g77} actually generates code
664 Previously, @code{g77} treated these expressions
665 as denoting special ``pointer'' arguments
666 for the purposes of filewide analysis.
671 (or apparently infinite run-time)
672 when compiling certain complicated expressions
673 involving @code{COMPLEX} arithmetic
674 (especially multiplication).
678 @cindex double-precision performance
679 @cindex -malign-double
681 Align static double-precision variables and arrays
683 regardless of whether @samp{-malign-double} is specified.
685 Generally, this affects only local variables and arrays
686 having the @code{SAVE} attribute
687 or given initial values via @code{DATA}.
690 The @code{g77} driver now ensures that @samp{-lg2c}
691 is specified in the link phase prior to any
692 occurrence of @samp{-lm}.
693 This prevents accidentally linking to a routine
694 in the SunOS4 @samp{-lm} library
695 when the generated code wants to link to the one
696 in @code{libf2c} (@code{libg2c}).
699 @code{g77} emits more debugging information when
702 This new information allows, for example,
703 @kbd{which __g77_length_a} to be used in @code{gdb}
704 to determine the type of the phantom length argument
705 supplied with @code{CHARACTER} variables.
707 This information pertains to internally-generated
708 type, variable, and other information,
709 not to the longstanding deficiencies vis-a-vis
710 @code{COMMON} and @code{EQUIVALENCE}.
713 The F90 @code{Date_and_Time} intrinsic now is
717 The F90 @code{System_Clock} intrinsic allows
718 the optional arguments (except for the @code{Count}
719 argument) to be omitted.
723 Upgrade to @code{libf2c} as of 1998-06-18.
728 Improve documentation and indexing.
733 @heading In previous versions:
735 Information on previous versions is not provided
736 in this @file{@value{path-g77}/NEWS} file,
738 See @file{@value{path-g77}/news.texi},
739 or any of its other derivations
740 (Info, HTML, dvi forms)
741 for such information.
745 @c 1998-05-20: 0.5.23 released.
746 @heading In 0.5.23 versus 0.5.22:
749 This release contains several regressions against
750 version 0.5.22 of @code{g77}, due to using the
751 ``vanilla'' @code{gcc} back end instead of patching
752 it to fix a few bugs and improve performance in a
755 Features that have been dropped from this version
756 of @code{g77} due to their being implemented
757 via @code{g77}-specific patches to the @code{gcc}
758 back end in previous releases include:
762 Support for @code{__restrict__} keyword,
763 the options @samp{-fargument-alias}, @samp{-fargument-noalias},
764 and @samp{-fargument-noalias-global},
765 and the corresponding alias-analysis code.
767 (@code{egcs} has the alias-analysis
768 code, but not the @code{__restrict__} keyword.
769 @code{egcs} @code{g77} users benefit from the alias-analysis
770 code despite the lack of the @code{__restrict__} keyword,
771 which is a C-language construct.)
774 Support for the GNU compiler options
775 @samp{-fmove-all-movables},
776 @samp{-freduce-all-givs},
777 and @samp{-frerun-loop-opt}.
779 (@code{egcs} supports these options.
780 @code{g77} users of @code{egcs} benefit from them even if
781 they are not explicitly specified,
782 because the defaults are optimized for @code{g77} users.)
785 Support for the @samp{-W} option warning about
786 integer division by zero.
789 The Intel x86-specific option @samp{-malign-double}
790 applying to stack-allocated data
791 as well as statically-allocate data.
795 Note that the @file{gcc/f/gbe/} subdirectory has been removed
796 from this distribution as a result of @code{g77} no longer
797 including patches for the @code{gcc} back end.
802 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
803 that wrote one byte beyond the end of its @code{CHARACTER}
805 and in the @code{libU77} intrinsics
806 @code{GMTime} and @code{LTime}
807 that overwrote their arguments.
811 Support @code{gcc} version 2.8,
812 and remove support for prior versions of @code{gcc}.
814 @cindex -@w{}-driver option
815 @cindex @code{g77} options, -@w{}-driver
816 @cindex options, -@w{}-driver
818 Remove support for the @samp{--driver} option,
819 as @code{g77} now does all the driving,
820 just like @code{gcc}.
824 @code{CASE DEFAULT} no longer crashes @code{g77}.
829 Valid combinations of @code{EXTERNAL},
830 passing that external as a dummy argument
831 without explicitly giving it a type,
832 and, in a subsequent program unit,
833 referencing that external as
834 an external function with a different type
835 no longer crash @code{g77}.
840 @code{g77} no longer installs the @file{f77} command
841 and @file{f77.1} man page
842 in the @file{/usr} or @file{/usr/local} heirarchy,
843 even if the @file{f77-install-ok} file exists
844 in the source or build directory.
845 See the installation documentation for more information.
850 @code{g77} no longer installs the @file{libf2c.a} library
851 and @file{f2c.h} include file
852 in the @file{/usr} or @file{/usr/local} heirarchy,
853 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
854 in the source or build directory.
855 See the installation documentation for more information.
860 The @file{libf2c.a} library produced by @code{g77} has been
861 renamed to @file{libg2c.a}.
862 It is installed only in the @code{gcc} ``private''
863 directory heirarchy, @file{gcc-lib}.
864 This allows system administrators and users to choose which
865 version of the @code{libf2c} library from @code{netlib} they
866 wish to use on a case-by-case basis.
867 See the installation documentation for more information.
872 The @file{f2c.h} include (header) file produced by @code{g77}
873 has been renamed to @file{g2c.h}.
874 It is installed only in the @code{gcc} ``private''
875 directory heirarchy, @file{gcc-lib}.
876 This allows system administrators and users to choose which
877 version of the include file from @code{netlib} they
878 wish to use on a case-by-case basis.
879 See the installation documentation for more information.
883 The @code{g77} command now expects the run-time library
884 to be named @code{libg2c.a} instead of @code{libf2c.a},
885 to ensure that a version other than the one built and
886 installed as part of the same @code{g77} version is picked up.
890 The @samp{-Wunused} option no longer issues a spurious
891 warning about the ``master'' procedure generated by
892 @code{g77} for procedures containing @code{ENTRY} statements.
896 @code{g77}'s version of @code{libf2c} separates out
897 the setting of global state
898 (such as command-line arguments and signal handling)
899 from @file{main.o} into distinct, new library
902 This should make it easier to write portable applications
903 that have their own (non-Fortran) @code{main()} routine
904 properly set up the @code{libf2c} environment, even
905 when @code{libf2c} (now @code{libg2c}) is a shared library.
909 During the configuration and build process,
910 @code{g77} creates subdirectories it needs only as it
911 needs them, thus avoiding unnecessary creation of, for example,
912 @file{stage1/f/runtime} when doing a non-bootstrap build.
913 Other cleaning up of the configuration and build process
914 has been performed as well.
919 @code{install-info} now used to update the directory of
920 Info documentation to contain an entry for @code{g77}
921 (during installation).
925 Some diagnostics have been changed from warnings to errors,
926 to prevent inadvertent use of the resulting, probably buggy,
928 These mostly include diagnostics about use of unsupported features
929 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
930 @code{WRITE} statements,
931 and about truncations of various sorts of constants.
935 Improve documentation and indexing.
940 Upgrade to @code{libf2c} as of 1998-04-20.
942 This should fix a variety of problems, including
943 those involving some uses of the @code{T} format
944 specifier, and perhaps some build (porting) problems
949 @c 1998-03-16: 0.5.22 released.
950 @heading In 0.5.22 versus 0.5.21:
954 Fix code generation for iterative @code{DO} loops that
955 have one or more references to the iteration variable,
956 or to aliases of it, in their control expressions.
957 For example, @samp{DO 10 J=2,J} now is compiled correctly.
962 @cindex stack, 387 coprocessor
966 Fix a code-generation bug that afflicted
967 Intel x86 targets when @samp{-O2} was specified
968 compiling, for example, an old version of
969 the @code{DNRM2} routine.
971 The x87 coprocessor stack was being
972 mismanaged in cases involving assigned @code{GOTO}
978 Fix @code{DTime} intrinsic so as not to truncate
979 results to integer values (on some systems).
983 Fix @code{Signal} intrinsic so it offers portable
984 support for 64-bit systems (such as Digital Alphas
989 Fix run-time crash involving @code{NAMELIST} on 64-bit
990 machines such as Alphas.
995 Fix @code{g77} version of @code{libf2c} so it no longer
996 produces a spurious @samp{I/O recursion} diagnostic at run time
997 when an I/O operation (such as @samp{READ *,I}) is interrupted
998 in a manner that causes the program to be terminated
999 via the @code{f_exit} routine (such as via @kbd{C-c}).
1002 @ifclear USERVISONLY
1004 Fix @code{g77} crash triggered by @code{CASE} statement with
1005 an omitted lower or upper bound.
1008 @ifclear USERVISONLY
1010 Fix @code{g77} crash compiling references to @code{CPU_Time}
1014 @ifclear USERVISONLY
1016 Fix @code{g77} crash
1017 (or apparently infinite run-time)
1018 when compiling certain complicated expressions
1019 involving @code{COMPLEX} arithmetic
1020 (especially multiplication).
1023 @ifclear USERVISONLY
1025 Fix @code{g77} crash on statements such as
1026 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1027 @samp{Z} is @code{DOUBLE COMPLEX}.
1030 @ifclear USERVISONLY
1032 Fix a @code{g++} crash.
1036 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
1037 compile-time constant @code{INTEGER} expression.
1040 Fix @code{g77} @samp{-g} option so procedures that
1041 use @code{ENTRY} can be stepped through, line by line,
1044 @ifclear USERVISONLY
1046 Fix a profiling-related bug in @code{gcc} back end for
1047 Intel x86 architecture.
1051 Allow any @code{REAL} argument to intrinsics
1052 @code{Second} and @code{CPU_Time}.
1055 Allow any numeric argument to intrinsics
1056 @code{Int2} and @code{Int8}.
1059 Use @code{tempnam}, if available, to open scratch files
1060 (as in @samp{OPEN(STATUS='SCRATCH')})
1061 so that the @code{TMPDIR} environment variable,
1062 if present, is used.
1065 Rename the @code{gcc} keyword @code{restrict} to
1066 @code{__restrict__}, to avoid rejecting valid, existing,
1068 Support for @code{restrict} is now more like support
1071 @ifclear USERVISONLY
1073 Fix @samp{-fpedantic} to not reject procedure invocations
1074 such as @samp{I=J()} and @samp{CALL FOO()}.
1078 Fix @samp{-fugly-comma} to affect invocations of
1079 only external procedures.
1080 Restore rejection of gratuitous trailing omitted
1081 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1084 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1085 @samp{-fbadu77-intrinsics-*} options.
1087 @ifclear USERVISONLY
1089 Improve diagnostic messages from @code{libf2c}
1090 so it is more likely that the printing of the
1091 active format string is limited to the string,
1092 with no trailing garbage being printed.
1094 (Unlike @code{f2c}, @code{g77} did not append
1095 a null byte to its compiled form of every
1096 format string specified via a @code{FORMAT} statement.
1097 However, @code{f2c} would exhibit the problem
1098 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1099 by printing @samp{(I)garbage} as the format string.)
1102 @ifclear USERVISONLY
1104 Improve compilation of @code{FORMAT} expressions so that
1105 a null byte is appended to the last operand if it
1107 This provides a cleaner run-time diagnostic as provided
1108 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
1111 @ifclear USERVISONLY
1113 Fix various crashes involving code with diagnosed errors.
1116 @ifclear USERVISONLY
1118 Fix cross-compilation bug when configuring @code{libf2c}.
1121 @ifclear USERVISONLY
1123 Improve diagnostics.
1126 @ifclear USERVISONLY
1128 Improve documentation and indexing.
1131 @ifclear USERVISONLY
1133 Upgrade to @code{libf2c} as of 1997-09-23.
1134 This fixes a formatted-I/O bug that afflicted
1135 64-bit systems with 32-bit integers
1136 (such as Digital Alpha running GNU/Linux).
1140 @c 1998-03-18: EGCS 1.0.2 released.
1141 @heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1:
1143 @ifclear USERVISONLY
1145 Fix @code{g77} crash triggered by @code{CASE} statement with
1146 an omitted lower or upper bound.
1149 @ifclear USERVISONLY
1151 Fix @code{g77} crash on statements such as
1152 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1153 @samp{Z} is @code{DOUBLE COMPLEX}.
1156 @ifclear USERVISONLY
1158 @cindex support, ELF
1159 @cindex -fPIC option
1160 @cindex options, -fPIC
1162 Fix @samp{-fPIC} (such as compiling for ELF targets)
1163 on the Intel x86 architecture target
1164 so invalid assembler code is no longer produced.
1167 @ifclear USERVISONLY
1169 Fix @samp{-fpedantic} to not reject procedure invocations
1170 such as @samp{I=J()} and @samp{CALL FOO()}.
1173 @ifclear USERVISONLY
1175 Fix @samp{-fugly-comma} to affect invocations of
1176 only external procedures.
1177 Restore rejection of gratuitous trailing omitted
1178 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1182 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1183 @samp{-fbadu77-intrinsics-*} options.
1186 @c 1998-01-06: EGCS 1.0.1 released.
1187 @heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0:
1188 @ifclear USERVISONLY
1191 Fix run-time crash involving @code{NAMELIST} on 64-bit
1192 machines such as Alphas.
1196 @c 1997-12-03: EGCS 1.0 released.
1197 @heading In @code{EGCS} 1.0 versus @code{g77} 0.5.21:
1200 Version 1.0 of @code{egcs}
1201 contains several regressions against
1202 version 0.5.21 of @code{g77},
1204 ``vanilla'' @code{gcc} back end instead of patching
1205 it to fix a few bugs and improve performance in a
1208 Features that have been dropped from this version
1209 of @code{g77} due to their being implemented
1210 via @code{g77}-specific patches to the @code{gcc}
1211 back end in previous releases include:
1215 Support for the C-language @code{restrict} keyword.
1218 Support for the @samp{-W} option warning about
1219 integer division by zero.
1222 The Intel x86-specific option @samp{-malign-double}
1223 applying to stack-allocated data
1224 as well as statically-allocate data.
1227 @ifclear USERVISONLY
1228 Note that the @file{gcc/f/gbe/} subdirectory has been removed
1229 from this distribution as a result of @code{g77}
1230 being fully integrated with
1231 the @code{egcs} variant of the @code{gcc} back end.
1234 @ifclear USERVISONLY
1236 Fix code generation for iterative @code{DO} loops that
1237 have one or more references to the iteration variable,
1238 or to aliases of it, in their control expressions.
1239 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1242 @ifclear USERVISONLY
1244 Fix @code{DTime} intrinsic so as not to truncate
1245 results to integer values (on some systems).
1248 @ifclear USERVISONLY
1250 @c Toon Moene discovered these.
1251 Some Fortran code, miscompiled
1252 by @code{g77} built on @code{gcc} version 2.8.1
1253 on m68k-next-nextstep3 configurations
1254 when using the @samp{-O2} option,
1255 is now compiled correctly.
1256 It is believed that a C function known to miscompile
1257 on that configuration
1258 when using the @samp{-O2 -funroll-loops} options
1259 also is now compiled correctly.
1262 @ifclear USERVISONLY
1264 Remove support for non-@code{egcs} versions of @code{gcc}.
1267 @cindex -@w{}-driver option
1268 @cindex @code{g77} options, -@w{}-driver
1269 @cindex options, -@w{}-driver
1271 Remove support for the @samp{--driver} option,
1272 as @code{g77} now does all the driving,
1273 just like @code{gcc}.
1276 Allow any numeric argument to intrinsics
1277 @code{Int2} and @code{Int8}.
1279 @ifclear USERVISONLY
1281 Improve diagnostic messages from @code{libf2c}
1282 so it is more likely that the printing of the
1283 active format string is limited to the string,
1284 with no trailing garbage being printed.
1286 (Unlike @code{f2c}, @code{g77} did not append
1287 a null byte to its compiled form of every
1288 format string specified via a @code{FORMAT} statement.
1289 However, @code{f2c} would exhibit the problem
1290 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1291 by printing @samp{(I)garbage} as the format string.)
1294 @ifclear USERVISONLY
1296 Upgrade to @code{libf2c} as of 1997-09-23.
1297 This fixes a formatted-I/O bug that afflicted
1298 64-bit systems with 32-bit integers
1299 (such as Digital Alpha running GNU/Linux).
1303 @c 1997-09-09: 0.5.21 released.
1306 @ifclear USERVISONLY
1308 Fix a code-generation bug introduced by 0.5.20
1309 caused by loop unrolling (by specifying
1310 @samp{-funroll-loops} or similar).
1311 This bug afflicted all code compiled by
1312 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1313 Fortran, and so on).
1316 @ifclear USERVISONLY
1318 Fix a code-generation bug manifested when
1319 combining local @code{EQUIVALENCE} with a
1320 @code{DATA} statement that follows
1321 the first executable statement (or is
1322 treated as an executable-context statement
1323 as a result of using the @samp{-fpedantic}
1327 @ifclear USERVISONLY
1329 Fix a compiler crash that occured when an
1330 integer division by a constant zero is detected.
1331 Instead, when the @samp{-W} option is specified,
1332 the @code{gcc} back end issues a warning about such a case.
1333 This bug afflicted all code compiled by
1334 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1335 Fortran, and so on).
1339 When the @samp{-W} option is specified, @code{gcc}, @code{g77},
1340 and other GNU compilers that incorporate the @code{gcc}
1341 back end as modified by @code{g77}, issue
1342 a warning about integer division by constant zero.
1345 @ifclear USERVISONLY
1347 Fix a compiler crash that occurred in some cases
1348 of procedure inlining.
1349 (Such cases became more frequent in 0.5.20.)
1352 @ifclear USERVISONLY
1354 Fix a compiler crash resulting from using @code{DATA}
1355 or similar to initialize a @code{COMPLEX} variable or
1359 @ifclear USERVISONLY
1361 Fix compiler crashes involving use of @code{AND}, @code{OR},
1362 or @code{XOR} intrinsics.
1365 @ifclear USERVISONLY
1367 Fix compiler bug triggered when using a @code{COMMON}
1368 or @code{EQUIVALENCE} variable
1369 as the target of an @code{ASSIGN}
1370 or assigned-@code{GOTO} statement.
1373 @ifclear USERVISONLY
1375 Fix compiler crashes due to using the name of a some
1376 non-standard intrinsics (such as @code{FTell} or
1377 @code{FPutC}) as such and as the name of a procedure
1379 Such dual use of a name in a program is allowed by
1383 @c @code{g77}'s version of @code{libf2c} has been modified
1384 @c so that the external names of library's procedures do not
1385 @c conflict with names used for Fortran procedures compiled
1387 @c An additional layer of jacket procedures has been added
1388 @c to @code{libf2c} to map the old names to the new names,
1389 @c for automatic use by programs that interface to the
1390 @c library procedures via the external-procedure mechanism.
1392 @c For example, the intrinsic @code{FPUTC} previously was
1393 @c implemented by @code{g77} as a call to the @code{libf2c}
1394 @c routine @code{fputc_}.
1395 @c This would conflict with a Fortran procedure named @code{FPUTC}
1396 @c (using default compiler options), and this conflict
1397 @c would cause a crash under certain circumstances.
1399 @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
1400 @c which does not conflict with the @code{fputc_} external
1401 @c that implements a Fortran procedure named @code{FPUTC}.
1403 @c Programs that refer to @code{FPUTC} as an external procedure
1404 @c without supplying their own implementation will link to
1405 @c the new @code{libf2c} routine @code{fputc_}, which is
1406 @c simply a jacket routine that calls @code{G77_fputc_0}.
1408 @ifclear USERVISONLY
1410 Place automatic arrays on the stack, even if
1411 @code{SAVE} or the @samp{-fno-automatic} option
1413 This avoids a compiler crash in some cases.
1416 @ifclear USERVISONLY
1418 The @samp{-malign-double} option now reliably aligns
1419 @code{DOUBLE PRECISION} optimally on Pentium and
1420 Pentium Pro architectures (586 and 686 in @code{gcc}).
1424 New option @samp{-Wno-globals} disables warnings
1425 about ``suspicious'' use of a name both as a global
1426 name and as the implicit name of an intrinsic, and
1427 warnings about disagreements over the number or natures of
1428 arguments passed to global procedures, or the
1429 natures of the procedures themselves.
1431 The default is to issue such warnings, which are
1432 new as of this version of @code{g77}.
1435 New option @samp{-fno-globals} disables diagnostics
1436 about potentially fatal disagreements
1437 analysis problems, such as disagreements over the
1438 number or natures of arguments passed to global
1439 procedures, or the natures of those procedures themselves.
1441 The default is to issue such diagnostics and flag
1442 the compilation as unsuccessful.
1443 With this option, the diagnostics are issued as
1444 warnings, or, if @samp{-Wno-globals} is specified,
1445 are not issued at all.
1447 This option also disables inlining of global procedures,
1448 to avoid compiler crashes resulting from coding errors
1449 that these diagnostics normally would identify.
1451 @ifclear USERVISONLY
1453 Diagnose cases where a reference to a procedure
1454 disagrees with the type of that procedure, or
1455 where disagreements about the number or nature
1457 This avoids a compiler crash.
1460 @ifclear USERVISONLY
1462 Fix parsing bug whereby @code{g77} rejected a
1463 second initialization specification immediately
1464 following the first's closing @samp{/} without
1465 an intervening comma in a @code{DATA} statement,
1466 and the second specification was an implied-DO list.
1469 @ifclear USERVISONLY
1471 Improve performance of the @code{gcc} back end so
1472 certain complicated expressions involving @code{COMPLEX}
1473 arithmetic (especially multiplication) don't appear to
1474 take forever to compile.
1477 @ifclear USERVISONLY
1479 Fix a couple of profiling-related bugs in @code{gcc}
1483 @ifclear USERVISONLY
1485 Integrate GNU Ada's (GNAT's) changes to the back end,
1486 which consist almost entirely of bug fixes.
1487 These fixes are circa version 3.10p of GNAT.
1490 @ifclear USERVISONLY
1492 Include some other @code{gcc} fixes that seem useful in
1493 @code{g77}'s version of @code{gcc}.
1494 (See @file{gcc/ChangeLog} for details---compare it
1495 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
1500 Fix @code{libU77} routines that accept file and other names
1501 to strip trailing blanks from them, for consistency
1502 with other implementations.
1503 Blanks may be forcibly appended to such names by
1504 appending a single null character (@samp{CHAR(0)})
1505 to the significant trailing blanks.
1508 Fix @code{CHMOD} intrinsic to work with file names
1509 that have embedded blanks, commas, and so on.
1512 Fix @code{SIGNAL} intrinsic so it accepts an
1513 optional third @code{Status} argument.
1515 @ifclear USERVISONLY
1517 Fix @code{IDATE()} intrinsic subroutine (VXT form)
1518 so it accepts arguments in the correct order.
1519 Documentation fixed accordingly, and for
1520 @code{GMTIME()} and @code{LTIME()} as well.
1524 Make many changes to @code{libU77} intrinsics to
1525 support existing code more directly.
1527 Such changes include allowing both subroutine and
1528 function forms of many routines, changing @code{MCLOCK()}
1529 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
1530 introducing @code{MCLOCK8()} and @code{TIME8()} to
1531 return @code{INTEGER(KIND=2)} values,
1532 and placing functions that are intended to perform
1533 side effects in a new intrinsic group, @code{badu77}.
1535 @ifclear USERVISONLY
1537 Improve @code{libU77} so it is more portable.
1541 Add options @samp{-fbadu77-intrinsics-delete},
1542 @samp{-fbadu77-intrinsics-hide}, and so on.
1544 @ifclear USERVISONLY
1546 Fix crashes involving diagnosed or invalid code.
1549 @ifclear USERVISONLY
1551 @code{g77} and @code{gcc} now do a somewhat better
1552 job detecting and diagnosing arrays that are too
1553 large to handle before these cause diagnostics
1554 during the assembler or linker phase, a compiler
1555 crash, or generation of incorrect code.
1558 @ifclear USERVISONLY
1560 Make some fixes to alias analysis code.
1563 @ifclear USERVISONLY
1565 Add support for @code{restrict} keyword in @code{gcc}
1569 @ifclear USERVISONLY
1571 Support @code{gcc} version 2.7.2.3
1572 (modified by @code{g77} into version 2.7.2.3.f.1),
1574 support for prior versions of @code{gcc}.
1577 @ifclear USERVISONLY
1579 Incorporate GNAT's patches to the @code{gcc} back
1580 end into @code{g77}'s, so GNAT users do not need
1581 to apply GNAT's patches to build both GNAT and @code{g77}
1582 from the same source tree.
1585 @ifclear USERVISONLY
1587 Modify @code{make} rules and related code so that
1588 generation of Info documentation doesn't require
1589 compilation using @code{gcc}.
1590 Now, any ANSI C compiler should be adequate to
1591 produce the @code{g77} documentation (in particular,
1592 the tables of intrinsics) from scratch.
1596 Add @code{INT2} and @code{INT8} intrinsics.
1599 Add @code{CPU_TIME} intrinsic.
1602 Add @code{ALARM} intrinsic.
1605 @code{CTIME} intrinsic now accepts any @code{INTEGER}
1606 argument, not just @code{INTEGER(KIND=2)}.
1608 @ifclear USERVISONLY
1610 Warn when explicit type declaration disagrees with
1611 the type of an intrinsic invocation.
1614 @ifclear USERVISONLY
1616 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
1619 @ifclear USERVISONLY
1621 Fix typo in @code{make} rule @code{g77-cross}, used only for
1625 @ifclear USERVISONLY
1627 Fix @code{libf2c} build procedure to re-archive library
1628 if previous attempt to archive was interrupted.
1631 @ifclear USERVISONLY
1633 Change @code{gcc} to unroll loops only during the last
1634 invocation (of as many as two invocations) of loop
1638 @ifclear USERVISONLY
1640 Improve handling of @samp{-fno-f2c} so that code that
1641 attempts to pass an intrinsic as an actual argument,
1642 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
1643 that the run-time-library routine is, effectively,
1644 compiled with @samp{-ff2c} in effect.
1647 @ifclear USERVISONLY
1649 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
1650 as an option that inhibits linking, just like @samp{-c} or
1651 @samp{-S}, and to recognize and properly handle the
1652 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
1653 and @samp{-Xlinker} options.
1656 @ifclear USERVISONLY
1658 Upgrade to @code{libf2c} as of 1997-08-16.
1661 @ifclear USERVISONLY
1663 Modify @code{libf2c} to consistently and clearly diagnose
1664 recursive I/O (at run time).
1668 @code{g77} driver now prints version information (such as produced
1669 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
1672 The @samp{.r} suffix now designates a Ratfor source file,
1673 to be preprocessed via the @code{ratfor} command, available
1676 @ifclear USERVISONLY
1678 Fix some aspects of how @code{gcc} determines what kind of
1679 system is being configured and what kinds are supported.
1680 For example, GNU Linux/Alpha ELF systems now are directly
1684 @ifclear USERVISONLY
1686 Improve diagnostics.
1689 @ifclear USERVISONLY
1691 Improve documentation and indexing.
1694 @ifclear USERVISONLY
1696 Include all pertinent files for @code{libf2c} that come
1697 from @code{netlib.bell-labs.com}; give any such files
1698 that aren't quite accurate in @code{g77}'s version of
1699 @code{libf2c} the suffix @samp{.netlib}.
1702 @ifclear USERVISONLY
1704 Reserve @code{INTEGER(KIND=0)} for future use.
1708 @c 1997-02-28: 0.5.20 released.
1712 The @samp{-fno-typeless-boz} option is now the default.
1714 This option specifies that non-decimal-radix
1715 constants using the prefixed-radix form (such as @samp{Z'1234'})
1716 are to be interpreted as @code{INTEGER(KIND=1)} constants.
1717 Specify @samp{-ftypeless-boz} to cause such
1718 constants to be interpreted as typeless.
1720 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
1724 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect},
1725 for information on the @samp{-ftypeless-boz} option.
1729 Options @samp{-ff90-intrinsics-enable} and
1730 @samp{-fvxt-intrinsics-enable} now are the
1733 Some programs might use names that clash with
1734 intrinsic names defined (and now enabled) by these
1735 options or by the new @code{libU77} intrinsics.
1736 Users of such programs might need to compile them
1737 differently (using, for example, @samp{-ff90-intrinsics-disable})
1738 or, better yet, insert appropriate @code{EXTERNAL}
1739 statements specifying that these names are not intended
1740 to be names of intrinsics.
1743 The @code{ALWAYS_FLUSH} macro is no longer defined when
1744 building @code{libf2c}, which should result in improved
1745 I/O performance, especially over NFS.
1747 @emph{Note:} If you have code that depends on the behavior
1748 of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
1749 you will have to modify @code{libf2c} accordingly before
1750 building it from this and future versions of @code{g77}.
1753 @xref{Output Assumed To Flush}, for more information.
1757 Dave Love's implementation of @code{libU77} has been
1758 added to the version of @code{libf2c} distributed with
1759 and built as part of @code{g77}.
1760 @code{g77} now knows about the routines in this library
1764 New option @samp{-fvxt} specifies that the
1765 source file is written in VXT Fortran, instead of GNU Fortran.
1768 @xref{VXT Fortran}, for more information on the constructs
1769 recognized when the @samp{-fvxt} option is specified.
1773 The @samp{-fvxt-not-f90} option has been deleted,
1774 along with its inverse, @samp{-ff90-not-vxt}.
1776 If you used one of these deleted options, you should
1777 re-read the pertinent documentation to determine which
1778 options, if any, are appropriate for compiling your
1779 code with this version of @code{g77}.
1782 @xref{Other Dialects}, for more information.
1786 The @samp{-fugly} option now issues a warning, as it
1787 likely will be removed in a future version.
1789 (Enabling all the @samp{-fugly-*} options is unlikely
1790 to be feasible, or sensible, in the future,
1791 so users should learn to specify only those
1792 @samp{-fugly-*} options they really need for a
1793 particular source file.)
1796 The @samp{-fugly-assumed} option, introduced in
1797 version 0.5.19, has been changed to
1798 better accommodate old and new code.
1801 @xref{Ugly Assumed-Size Arrays}, for more information.
1804 @ifclear USERVISONLY
1806 Make a number of fixes to the @code{g77} front end and
1807 the @code{gcc} back end to better support Alpha (AXP)
1809 This includes providing at least one bug-fix to the
1810 @code{gcc} back end for Alphas.
1814 Related to supporting Alpha (AXP) machines, the @code{LOC()}
1815 intrinsic and @code{%LOC()} construct now return
1816 values of @code{INTEGER(KIND=0)} type,
1817 as defined by the GNU Fortran language.
1819 This type is wide enough
1820 (holds the same number of bits)
1821 as the character-pointer type on the machine.
1823 On most machines, this won't make a difference,
1824 whereas, on Alphas and other systems with 64-bit pointers,
1825 the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)}
1826 (often referred to as @code{INTEGER*8})
1827 instead of the more common @code{INTEGER(KIND=1)}
1828 (often referred to as @code{INTEGER*4}).
1831 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
1832 end, to avoid bugs in @code{complex} support in the
1833 @code{gcc} back end.
1834 New option @samp{-fno-emulate-complex}
1835 causes @code{g77} to revert the 0.5.19 behavior.
1837 @ifclear USERVISONLY
1839 Fix bug whereby @samp{REAL A(1)}, for example, caused
1840 a compiler crash if @samp{-fugly-assumed} was in effect
1841 and @var{A} was a local (automatic) array.
1842 That case is no longer affected by the new
1843 handling of @samp{-fugly-assumed}.
1846 @ifclear USERVISONLY
1848 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
1849 no longer deletes @file{foo.f} before issuing other
1850 diagnostics, and so the @samp{-x} option is properly
1854 @ifclear USERVISONLY
1856 Enable inlining of subroutines and functions by the @code{gcc}
1858 This works as it does for @code{gcc} itself---program units
1859 may be inlined for invocations that follow them in the same
1860 program unit, as long as the appropriate compile-time
1861 options are specified.
1865 Dummy arguments are no longer assumed to potentially alias
1867 other dummy arguments or @code{COMMON} areas when any of
1868 these are defined (assigned to) by Fortran code.
1870 This can result in faster and/or smaller programs when
1871 compiling with optimization enabled, though on some
1872 systems this effect is observed only when @samp{-fforce-addr}
1875 New options @samp{-falias-check}, @samp{-fargument-alias},
1876 @samp{-fargument-noalias},
1877 and @samp{-fno-argument-noalias-global} control the
1878 way @code{g77} handles potential aliasing.
1881 @xref{Aliasing Assumed To Work}, for detailed information on why the
1882 new defaults might result in some programs no longer working the way they
1883 did when compiled by previous versions of @code{g77}.
1886 @ifclear USERVISONLY
1888 The @code{CONJG()} and @code{DCONJG()} intrinsics now
1889 are compiled in-line.
1892 @ifclear USERVISONLY
1894 The bug-fix for 0.5.19.1 has been re-done.
1895 The @code{g77} compiler has been changed back to
1896 assume @code{libf2c} has no aliasing problems in
1897 its implementations of the @code{COMPLEX} (and
1898 @code{DOUBLE COMPLEX}) intrinsics.
1899 The @code{libf2c} has been changed to have no such
1902 As a result, 0.5.20 is expected to offer improved performance
1903 over 0.5.19.1, perhaps as good as 0.5.19 in most
1904 or all cases, due to this change alone.
1906 @emph{Note:} This change requires version 0.5.20 of
1907 @code{libf2c}, at least, when linking code produced
1908 by any versions of @code{g77} other than 0.5.19.1.
1909 Use @samp{g77 -v} to determine the version numbers
1910 of the @code{libF77}, @code{libI77}, and @code{libU77}
1911 components of the @code{libf2c} library.
1912 (If these version numbers are not printed---in
1913 particular, if the linker complains about unresolved
1914 references to names like @samp{g77__fvers__}---that
1915 strongly suggests your installation has an obsolete
1916 version of @code{libf2c}.)
1920 New option @samp{-fugly-assign} specifies that the
1921 same memory locations are to be used to hold the
1922 values assigned by both statements @samp{I = 3} and
1923 @samp{ASSIGN 10 TO I}, for example.
1924 (Normally, @code{g77} uses a separate memory location
1925 to hold assigned statement labels.)
1928 @xref{Ugly Assigned Labels}, for more information.
1932 @code{FORMAT} and @code{ENTRY} statements now are allowed to
1933 precede @code{IMPLICIT NONE} statements.
1935 @ifclear USERVISONLY
1937 Produce diagnostic for unsupported @code{SELECT CASE} on
1938 @code{CHARACTER} type, instead of crashing, at compile time.
1941 @ifclear USERVISONLY
1943 Fix crashes involving diagnosed or invalid code.
1946 @ifclear USERVISONLY
1948 Change approach to building @code{libf2c} archive
1949 (@file{libf2c.a}) so that members are added to it
1950 only when truly necessary, so the user that installs
1951 an already-built @code{g77} doesn't need to have write
1952 access to the build tree (whereas the user doing the
1953 build might not have access to install new software
1957 @ifclear USERVISONLY
1959 Support @code{gcc} version 2.7.2.2
1960 (modified by @code{g77} into version 2.7.2.2.f.2),
1962 support for prior versions of @code{gcc}.
1965 @ifclear USERVISONLY
1967 Upgrade to @code{libf2c} as of 1997-02-08, and
1968 fix up some of the build procedures.
1971 @ifclear USERVISONLY
1973 Improve general build procedures for @code{g77},
1974 fixing minor bugs (such as deletion of any file
1975 named @file{f771} in the parent directory of @code{gcc/}).
1979 Enable full support of @code{INTEGER(KIND=2)}
1980 (often referred to as @code{INTEGER*8})
1982 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
1983 may make full use of its features via the @code{g77}
1984 version of @file{f2c.h} and the @code{INTEGER(KIND=2)}
1985 support routines in the @code{g77} version of @code{libf2c}.
1988 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
1989 yields version information on the library.
1992 The @code{SNGL} and @code{FLOAT} intrinsics now are
1993 specific intrinsics, instead of synonyms for the
1994 generic intrinsic @code{REAL}.
1997 New intrinsics have been added.
1998 These are @code{REALPART}, @code{IMAGPART},
2000 @code{LONG}, and @code{SHORT}.
2003 A new group of intrinsics, @code{gnu}, has been added
2004 to contain the new @code{REALPART}, @code{IMAGPART},
2005 and @code{COMPLEX} intrinsics.
2006 An old group, @code{dcp}, has been removed.
2009 Complain about industry-wide ambiguous references
2010 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
2011 where @var{expr} is @code{DOUBLE COMPLEX} (or any
2012 complex type other than @code{COMPLEX}), unless
2013 @samp{-ff90} option specifies Fortran 90 interpretation
2014 or new @samp{-fugly-complex} option, in conjunction with
2015 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
2017 @ifclear USERVISONLY
2019 Make improvements to diagnostics.
2022 @ifclear USERVISONLY
2024 Speed up compiler a bit.
2027 @ifclear USERVISONLY
2029 Improvements to documentation and indexing, including
2030 a new chapter containing information on one, later
2031 more, diagnostics that users are directed to pull
2032 up automatically via a message in the diagnostic itself.
2034 (Hence the menu item @code{M} for the node
2035 @code{Diagnostics} in the top-level menu of
2036 the Info documentation.)
2040 @ifclear DOC-OLDNEWS
2041 @heading In previous versions:
2043 Information on previous versions is archived
2044 in @file{@value{path-g77}/news.texi}
2045 following the test of the @code{DOC-OLDNEWS} macro.
2049 @c 1997-02-01: 0.5.19.1 released.
2050 @heading In 0.5.19.1:
2053 Code-generation bugs afflicting operations on complex
2054 data have been fixed.
2056 These bugs occurred when assigning the result of an
2057 operation to a complex variable (or array element)
2058 that also served as an input to that operation.
2060 The operations affected by this bug were: @code{CONJG()},
2061 @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
2062 @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
2063 @code{CSQRT()}, @code{CDSQRT()}, complex division, and
2064 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
2066 (The related generic and @samp{Z}-prefixed intrinsics,
2067 such as @code{ZSIN()}, also were affected.)
2069 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
2070 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
2071 @code{DOUBLE COMPLEX}) have been fixed.
2074 @c 1996-12-07: 0.5.19 released.
2078 Fix @code{FORMAT} statement parsing so negative values for
2079 specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
2080 are correctly processed as negative.
2083 Fix @code{SIGNAL} intrinsic so it once again accepts a
2084 procedure as its second argument.
2087 A temporary kludge option provides bare-bones information on
2088 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
2091 New @samp{-fonetrip} option specifies FORTRAN-66-style
2092 one-trip @code{DO} loops.
2095 New @samp{-fno-silent} option causes names of program units
2096 to be printed as they are compiled, in a fashion similar to
2097 UNIX @code{f77} and @code{f2c}.
2100 New @samp{-fugly-assumed} option specifies that arrays
2101 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
2102 treated as assumed-size.
2105 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
2106 constants using the prefixed-radix form (such as @samp{Z'1234'})
2107 are to be interpreted as @code{INTEGER} constants.
2110 New @samp{-ff66} option is a ``shorthand'' option that specifies
2111 behaviors considered appropriate for FORTRAN 66 programs.
2114 New @samp{-ff77} option is a ``shorthand'' option that specifies
2115 behaviors considered appropriate for UNIX @code{f77} programs.
2118 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
2119 to perform some of what @samp{-fugly} used to do.
2120 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
2121 in that they do nothing more than enable (or disable) other
2122 @samp{-fugly-*} options.
2125 Fix parsing of assignment statements involving targets that
2126 are substrings of elements of @code{CHARACTER} arrays having
2127 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
2128 @samp{REALFUNCTIONFOO}.
2131 Fix crashes involving diagnosed code.
2134 Fix handling of local @code{EQUIVALENCE} areas so certain cases
2135 of valid Fortran programs are not misdiagnosed as improperly
2136 extending the area backwards.
2139 Support @code{gcc} version 2.7.2.1.
2142 Upgrade to @code{libf2c} as of 1996-09-26, and
2143 fix up some of the build procedures.
2146 Change code generation for list-directed I/O so it allows
2147 for new versions of @code{libf2c} that might return non-zero
2148 status codes for some operations previously assumed to always
2151 This change not only affects how @code{IOSTAT=} variables
2152 are set by list-directed I/O, it also affects whether
2153 @code{END=} and @code{ERR=} labels are reached by these
2157 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
2158 procedures in @code{libf2c}.
2161 Modify @code{fseek_()} in @code{libf2c} to be more portable
2162 (though, in practice, there might be no systems where this
2163 matters) and to catch invalid @code{whence} arguments.
2166 Some useless warnings from the @samp{-Wunused} option have
2170 Fix a problem building the @file{f771} executable
2171 on AIX systems by linking with the @samp{-bbigtoc} option.
2174 Abort configuration if @code{gcc} has not been patched
2175 using the patch file provided in the @file{gcc/f/gbe/}
2179 Add options @samp{--help} and @samp{--version} to the
2180 @code{g77} command, to conform to GNU coding guidelines.
2181 Also add printing of @code{g77} version number when
2182 the @samp{--verbose} (@samp{-v}) option is used.
2185 Change internally generated name for local @code{EQUIVALENCE}
2186 areas to one based on the alphabetically sorted first name
2187 in the list of names for entities placed at the beginning
2191 Improvements to documentation and indexing.
2194 @c 1996-04-01: 0.5.18 released.
2198 Add some rudimentary support for @code{INTEGER*1},
2199 @code{INTEGER*2}, @code{INTEGER*8},
2200 and their @code{LOGICAL} equivalents.
2201 (This support works on most, maybe all, @code{gcc} targets.)
2203 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2204 for providing the patch for this!
2206 Among the missing elements from the support for these
2207 features are full intrinsic support and constants.
2210 Add some rudimentary support for the @code{BYTE} and
2211 @code{WORD} type-declaration statements.
2212 @code{BYTE} corresponds to @code{INTEGER*1},
2213 while @code{WORD} corresponds to @code{INTEGER*2}.
2215 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2216 for providing the patch for this!
2219 The compiler code handling intrinsics has been largely
2220 rewritten to accommodate the new types.
2221 No new intrinsics or arguments for existing
2222 intrinsics have been added, so there is, at this
2223 point, no intrinsic to convert to @code{INTEGER*8},
2227 Support automatic arrays in procedures.
2230 Reduce space/time requirements for handling large
2231 @emph{sparsely} initialized aggregate arrays.
2232 This improvement applies to only a subset of
2233 the general problem to be addressed in 0.6.
2236 Treat initial values of zero as if they weren't
2237 specified (in DATA and type-declaration statements).
2238 The initial values will be set to zero anyway, but the amount
2239 of compile time processing them will be reduced,
2240 in some cases significantly (though, again, this
2241 is only a subset of the general problem to be
2244 A new option, @samp{-fzeros}, is introduced to
2245 enable the traditional treatment of zeros as any
2249 With @samp{-ff90} in force, @code{g77} incorrectly
2250 interpreted @samp{REAL(Z)} as returning a @code{REAL}
2251 result, instead of as a @code{DOUBLE PRECISION}
2253 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
2255 With @samp{-fno-f90} in force, the interpretation remains
2256 unchanged, since this appears to be how at least some
2257 F77 code using the @code{DOUBLE COMPLEX} extension expected
2260 Essentially, @samp{REAL(Z)} in F90 is the same as
2261 @samp{DBLE(Z)}, while in extended F77, it appears to
2262 be the same as @samp{REAL(REAL(Z))}.
2265 An expression involving exponentiation, where both operands
2266 were type @code{INTEGER} and the right-hand operand
2267 was negative, was erroneously evaluated.
2270 Fix bugs involving @code{DATA} implied-@code{DO} constructs
2271 (these involved an errant diagnostic and a crash, both on good
2272 code, one involving subsequent statement-function definition).
2275 Close @code{INCLUDE} files after processing them, so compiling source
2276 files with lots of @code{INCLUDE} statements does not result in
2277 being unable to open @code{INCLUDE} files after all the available
2278 file descriptors are used up.
2281 Speed up compiling, especially of larger programs, and perhaps
2282 slightly reduce memory utilization while compiling (this is
2283 @emph{not} the improvement planned for 0.6 involving large aggregate
2284 areas)---these improvements result from simply turning
2285 off some low-level code to do self-checking that hasn't been
2286 triggered in a long time.
2289 Introduce three new options that
2290 implement optimizations in the @code{gcc} back end (GBE).
2291 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
2292 and @samp{-frerun-loop-opt}, which are enabled, by default,
2293 for Fortran compilations.
2294 These optimizations are intended to help toon Fortran programs.
2297 Patch the GBE to do a better job optimizing certain
2298 kinds of references to array elements.
2301 Due to patches to the GBE, the version number of @code{gcc}
2302 also is patched to make it easier to manage installations,
2303 especially useful if it turns out a @code{g77} change to the
2306 The @code{g77}-modified version number is the @code{gcc}
2307 version number with the string @samp{.f.@var{n}} appended,
2308 where @samp{f} identifies the version as enhanced for
2309 Fortran, and @var{n} is @samp{1} for the first Fortran
2310 patch for that version of @code{gcc}, @samp{2} for the
2313 So, this introduces version 2.7.2.f.1 of @code{gcc}.
2316 Make several improvements and fixes to diagnostics, including
2317 the removal of two that were inappropriate or inadequate.
2320 Warning about two successive arithmetic operators, produced
2321 by @samp{-Wsurprising}, now produced @emph{only} when both
2322 operators are, indeed, arithmetic (not relational/boolean).
2325 @samp{-Wsurprising} now warns about the remaining cases
2326 of using non-integral variables for implied-@code{DO}
2327 loops, instead of these being rejected unless @samp{-fpedantic}
2328 or @samp{-fugly} specified.
2331 Allow @code{SAVE} of a local variable or array, even after
2332 it has been given an initial value via @code{DATA}, for example.
2335 Introduce an Info version of @code{g77} documentation, which
2336 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
2337 @file{gcc/f/PROJECTS}.
2338 These files will be removed in a future release.
2339 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
2340 @file{gcc/f/NEWS} now are automatically built from
2341 the texinfo source when distributions are made.
2343 This effort was inspired by a first pass at translating
2344 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
2345 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
2348 New @samp{-fno-second-underscore} option to specify
2349 that, when @samp{-funderscoring} is in effect, a second
2350 underscore is not to be appended to Fortran names already
2351 containing an underscore.
2354 Change the way iterative @code{DO} loops work to follow
2356 In particular, calculation of the iteration count is
2357 still done by converting the start, end, and increment
2358 parameters to the type of the @code{DO} variable, but
2359 the result of the calculation is always converted to
2360 the default @code{INTEGER} type.
2362 (This should have no effect on existing code compiled
2363 by @code{g77}, but code written to assume that use
2364 of a @emph{wider} type for the @code{DO} variable
2365 will result in an iteration count being fully calculated
2366 using that wider type (wider
2367 than default @code{INTEGER}) must be rewritten.)
2370 Support @code{gcc} version 2.7.2.
2373 Upgrade to @code{libf2c} as of 1996-03-23, and
2374 fix up some of the build procedures.
2376 Note that the email addresses related to @code{f2c}
2377 have changed---the distribution site now is
2378 named @code{netlib.bell-labs.com}, and the
2379 maintainer's new address is @email{dmg@@bell-labs.com}.
2382 @c 1995-11-18: 0.5.17 released.
2386 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
2387 system's @file{/dev/null} special file if run by user @code{root}.
2389 @strong{All users} of version 0.5.16 should ensure that
2390 they have not removed @file{/dev/null} or replaced it with an ordinary
2391 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
2392 @samp{ls -l /dev/zero}.
2393 If the output isn't basically the
2394 same, contact your system
2395 administrator about restoring @file{/dev/null} to its proper status).
2397 This bug is particularly insidious because removing @file{/dev/null} as
2398 a special file can go undetected for quite a while, aside from
2399 various applications and programs exhibiting sudden, strange
2402 I sincerely apologize for not realizing the
2403 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
2404 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
2405 it is supposed to build (especially if it reports unresolved
2406 references, which it should in this case)!
2409 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
2412 Fix crash that can occur when diagnostics given outside of any
2413 program unit (such as when input file contains @samp{@@foo}).
2416 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
2419 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
2420 and issue clearer error message in cases where target of @code{ASSIGN}
2421 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
2425 Make @code{libf2c} build procedures work on more systems again by
2426 eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}.
2429 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
2430 options to compiler.
2433 Fix failure to always diagnose missing type declaration for
2434 @code{IMPLICIT NONE}.
2437 Fix compile-time performance problem (which could sometimes
2438 crash the compiler, cause a hang, or whatever, due to a bug
2439 in the back end) involving exponentiation with a large @code{INTEGER}
2440 constant for the right-hand operator (e.g. @samp{I**32767}).
2443 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
2444 utility in particular) is properly built using the host compiler.
2447 Add new @samp{-Wsurprising} option to warn about constructs that are
2448 interpreted by the Fortran standard (and @code{g77}) in ways that
2449 are surprising to many programmers.
2452 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
2453 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
2455 @emph{Note:} You should
2456 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
2457 these as generic intrinsics, to improve likelihood of diagnostics
2458 (instead of subtle run-time bugs) when using a compiler that
2459 doesn't support these as intrinsics (e.g. @code{f2c}).
2462 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
2463 with non-@code{INTEGER} index variable; issue that under
2464 @samp{-Wsurprising} instead.
2467 Clarify some diagnostics that say things like ``ignored'' when that's
2471 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
2475 Minor improvements to code generation for various operations on
2476 @code{LOGICAL} operands.
2479 Minor improvement to code generation for some @code{DO} loops on some
2483 Support @code{gcc} version 2.7.1.
2486 Upgrade to @code{libf2c} as of 1995-11-15.
2489 @c 1995-08-30: 0.5.16 released.
2493 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
2494 not involving @code{COMMON}.
2497 Fix code-generation bugs involving invoking ``gratis'' library procedures
2498 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
2499 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
2500 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
2501 @code{DERF()}, and @code{DERFC()}.
2504 Update @code{libf2c} to include netlib patches through 1995-08-16, and
2505 @code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
2506 consistent with other Fortran implementations by outputting
2507 leading zeros in formatted and list-directed output.
2510 Fix a code-generation bug involving adjustable dummy arrays with high
2511 bounds whose primaries are changed during procedure execution, and
2512 which might well improve code-generation performance for such arrays
2513 compared to @code{f2c} plus @code{gcc} (but apparently only when using
2514 @file{gcc-2.7.0} or later).
2517 Fix a code-generation bug involving invocation of @code{COMPLEX} and
2518 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
2519 @code{DOUBLE COMPLEX} divides, when the result
2520 of the invocation or divide is assigned directly to a variable
2521 that overlaps one or more of the arguments to the invocation or divide.
2524 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
2525 nonconstant and the expression is used to dimension a dummy
2526 array, since the @code{gcc} back end does not support the necessary
2527 mechanics (and the @code{gcc} front end rejects the equivalent
2528 construct, as it turns out).
2531 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
2534 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
2535 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
2538 Fix crashes and such involving diagnosed code.
2541 Diagnose, instead of crashing on, statement function definitions
2542 having duplicate dummy argument names.
2545 Fix bug causing rejection of good code involving statement function
2549 Fix bug resulting in debugger not knowing size of local equivalence
2550 area when any member of area has initial value (via @code{DATA},
2554 Fix installation bug that prevented installation of @code{g77} driver.
2555 Provide for easy selection of whether to install copy of @code{g77}
2556 as @code{f77} to replace the broken code.
2559 Fix @code{gcc} driver (affects @code{g77} thereby) to not
2560 gratuitously invoke the
2561 @code{f771} program (e.g. when @samp{-E} is specified).
2564 Fix diagnostic to point to correct source line when it immediately
2565 follows an @code{INCLUDE} statement.
2568 Support more compiler options in @code{gcc}/@code{g77} when
2569 compiling Fortran files.
2570 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
2571 correct setting of version-number macros for preprocessing, full
2572 recognition of @samp{-O0}, and
2573 automatic insertion of configuration-specific linker specs.
2576 Add new intrinsics that interface to existing routines in @code{libf2c}:
2577 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
2578 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
2579 @code{SIGNAL}, and @code{SYSTEM}.
2580 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
2581 @code{SYSTEM} are intrinsic subroutines, not functions (since they
2582 have side effects), so to get the return values from @code{SIGNAL}
2583 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
2584 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
2587 Add new intrinsic group named @code{unix} to contain the new intrinsics,
2588 and by default enable this new group.
2591 Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
2595 Improve @code{g77} so that @samp{g77 -v} by itself (or with
2596 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
2597 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
2598 version info, and so that long-form options @code{gcc} accepts are
2599 understood by @code{g77} as well (even in truncated, unambiguous forms).
2602 Add new @code{g77} option @samp{--driver=name} to specify driver when
2603 default, @code{gcc}, isn't appropriate.
2606 Add support for @samp{#} directives (as output by the preprocessor) in the
2607 compiler, and enable generation of those directives by the
2608 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
2609 info are more useful to users of the preprocessor.
2612 Produce better diagnostics, more like @code{gcc}, with info such as
2613 @samp{In function `foo':} and @samp{In file included from...:}.
2616 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
2619 When @samp{-Wunused} in effect, don't warn about local variables used as
2620 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
2621 variables, even though, strictly speaking, these are not uses
2622 of the variables themselves.
2625 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
2626 at all, since there's no way to turn this off for individual
2627 cases (@code{g77} might someday start warning about these)---applies
2628 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
2629 warn about unused dummy arguments.
2632 New option @samp{-fno-underscoring} that inhibits transformation of names
2633 (by appending one or two underscores) so users may experiment
2634 with implications of such an environment.
2637 Minor improvement to @file{gcc/f/info} module to make it easier to build
2638 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
2639 (but definitely not all machines nor all non-@code{gcc} compilers).
2641 do not report bugs showing problems compilers have with
2642 macros defined in @file{gcc/f/target.h} and used in places like
2643 @file{gcc/f/expr.c}.
2646 Add warning to be printed for each invocation of the compiler
2647 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
2649 since @code{g77} is known to not work well for such cases.
2652 Lots of new documentation (though work is still needed to put it into
2653 canonical GNU format).
2656 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
2657 (by default), to produce
2658 smaller library without lots of debugging clutter.
2661 @c 1995-05-19: 0.5.15 released.
2665 Fix bad code generation involving @samp{X**I} and temporary, internal variables
2666 generated by @code{g77} and the back end (such as for @code{DO} loops).
2669 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
2672 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
2675 Fix crash or other erratic behavior when null character constant
2676 (@samp{''}) is encountered.
2679 Fix crash or other erratic behavior involving diagnosed code.
2682 Fix code generation for external functions returning type @code{REAL} when
2683 the @samp{-ff2c} option is in force (which it is by default) so that
2684 @code{f2c} compatibility is indeed provided.
2687 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
2688 with an array declarator.
2691 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
2693 of a typical fixed-form line, defaulting to 72 columns, such
2694 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
2695 meaning no characters are ignored.
2696 does not affect lines
2697 with @samp{&} in column 1, which are always processed as if
2698 @samp{-ffixed-line-length-none} was in effect.
2701 No longer generate better code for some kinds of array references,
2702 as @code{gcc} back end is to be fixed to do this even better, and it
2703 turned out to slow down some code in some cases after all.
2706 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
2707 values (e.g. via @code{DATA}), uninitialized members now always
2708 initialized to binary zeros (though this is not required by
2709 the standard, and might not be done in future versions
2711 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
2712 (essentially those with members of more than one type), the
2713 uninitialized members were initialized to spaces, to
2714 cater to @code{CHARACTER} types, but it seems no existing code expects
2715 that, while much existing code expects binary zeros.
2721 Don't emit bad code when low bound of adjustable array is nonconstant
2722 and thus might vary as an expression at run time.
2725 Emit correct code for calculation of number of trips in @code{DO} loops
2727 where the loop should not execute at all.
2728 (This bug affected cases
2729 where the difference between the begin and end values was less
2730 than the step count, though probably not for floating-point cases.)
2733 Fix crash when extra parentheses surround item in
2734 @code{DATA} implied-@code{DO} list.
2737 Fix crash over minor internal inconsistencies in handling diagnostics,
2738 just substitute dummy strings where necessary.
2741 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
2744 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
2745 is a string of one or more digits.
2748 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
2751 Fix various crashes involving code with diagnosed errors.
2754 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
2755 @file{header.gcc} facility for handling systems like MS-DOS.
2758 Allow @code{INCLUDE} statement to be continued across multiple lines,
2759 even allow it to coexist with other statements on the same line.
2762 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
2763 fixes a bug involving infinite loops reading EOF with empty list-directed
2767 Remove all the @code{g77}-specific auto-configuration scripts, code,
2769 except for temporary substitutes for bsearch() and strtoul(), as
2770 too many configure/build problems were reported in these areas.
2771 People will have to fix their systems' problems themselves, or at
2772 least somewhere other than @code{g77}, which expects a working ANSI C
2773 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
2776 Complain if initialized common redeclared as larger in subsequent program
2780 Warn if blank common initialized, since its size can vary and hence
2781 related warnings that might be helpful won't be seen.
2784 New @samp{-fbackslash} option, on by default, that causes @samp{\}
2785 within @code{CHARACTER}
2786 and Hollerith constants to be interpreted a la GNU C.
2788 this behavior is somewhat different from @code{f2c}'s, which supports only
2789 a limited subset of backslash (escape) sequences.
2792 Make @samp{-fugly-args} the default.
2795 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
2796 to be specified as initial values for variables or named constants
2797 (@code{PARAMETER}), and also allows character<->numeric conversion in
2798 those contexts---turn off via @samp{-fno-ugly-init}.
2801 New @samp{-finit-local-zero} option to initialize
2802 local variables to binary zeros.
2803 This does not affect whether they are @code{SAVE}d, i.e. made
2804 automatic or static.
2807 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
2809 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
2812 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
2813 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
2814 requires @samp{-O}), and implies @samp{-Wunused} as well.
2817 @samp{-Wunused} no longer gives spurious messages for unused
2818 @code{EXTERNAL} names (since they are assumed to refer to block data
2819 program units, to make use of libraries more reliable).
2822 Support @code{%LOC()} and @code{LOC()} of character arguments.
2825 Support null (zero-length) character constants and expressions.
2828 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
2831 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
2832 character expressions that are valid in assignments but
2833 not normally as actual arguments.
2836 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
2839 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
2840 in @code{BLOCK DATA}, even though these are not allowed by the standard.
2843 Allow @code{RETURN} in main program unit.
2846 Changes to Hollerith-constant support to obey Appendix C of the
2851 Now padded on the right with zeros, not spaces.
2854 Hollerith ``format specifications'' in the form of arrays of
2855 non-character allowed.
2858 Warnings issued when non-space truncation occurs when converting
2862 When specified as actual argument, now passed
2863 by reference to @code{INTEGER} (padded on right with spaces if constant
2864 too small, otherwise fully intact if constant wider the @code{INTEGER}
2865 type) instead of by value.
2868 @strong{Warning:} @code{f2c} differs on the
2869 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
2870 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
2871 as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary
2872 to widen to @code{INTEGER}), essentially.
2875 Changes and fixes to typeless-constant support:
2879 Now treated as a typeless double-length @code{INTEGER} value.
2882 Warnings issued when overflow occurs.
2885 Padded on the left with zeros when converting
2889 Should be properly aligned and ordered on
2890 the target machine for whatever type it is turned into.
2893 When specified as actual argument, now passed as reference to
2894 a default @code{INTEGER} constant.
2898 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
2899 the expression plus a length for the expression just as if
2900 it were a @code{CHARACTER} expression.
2901 For example, @samp{CALL FOO(%DESCR(D))}, where
2902 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
2905 Name of multi-entrypoint master function changed to incorporate
2906 the name of the primary entry point instead of a decimal
2907 value, so the name of the master function for @samp{SUBROUTINE X}
2908 with alternate entry points is now @samp{__g77_masterfun_x}.
2911 Remove redundant message about zero-step-count @code{DO} loops.
2914 Clean up diagnostic messages, shortening many of them.
2917 Fix typo in @code{g77} man page.
2920 Clarify implications of constant-handling bugs in @file{f/BUGS}.
2923 Generate better code for @samp{**} operator with a right-hand operand of
2924 type @code{INTEGER}.
2927 Generate better code for @code{SQRT()} and @code{DSQRT()},
2928 also when @samp{-ffast-math}
2929 specified, enable better code generation for @code{SIN()} and @code{COS()}.
2932 Generate better code for some kinds of array references.
2935 Speed up lexing somewhat (this makes the compilation phase noticeably