1 @c Copyright (C) 1995, 1996, 1997, 1998, 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,1996,1997,1998,1999,2000
12 @set last-update-news 2000-11-05
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,
100 as appropriate. Note that all such variants are now
101 obsolete - the information is retained here only for
102 its historical value.
104 Therefore, @code{egcs} versions sometimes have multiple listings
105 to help clarify how they differ from other versions,
106 though this can make getting a complete picture
107 of what a particular @code{egcs} version contains
108 somewhat more difficult.
111 For information on bugs in the @value{which-g77} version of @code{g77},
112 see @ref{Known Bugs,,Known Bugs In GNU Fortran}.
116 For information on bugs in the @value{which-g77} version of @code{g77},
117 see @file{@value{path-g77}/BUGS}.
121 @emph{Warning:} The information below is still under development,
122 and might not accurately reflect the @code{g77} code base
123 of which it is a part.
124 Efforts are made to keep it somewhat up-to-date,
125 but they are particularly concentrated
126 on any version of this information
127 that is distributed as part of a @emph{released} @code{g77}.
129 In particular, while this information is intended to apply to
130 the @value{which-g77} version of @code{g77},
131 only an official @emph{release} of that version
132 is expected to contain documentation that is
133 most consistent with the @code{g77} product in that version.
135 Nevertheless, information on @emph{previous} releases of @code{g77}, below,
136 is likely to be more up-to-date and accurate
137 than the equivalent information that accompanied
139 assuming the last-updated date of the information below
140 is later than the dates of those releases.
142 That's due to attempts to keep this development version
143 of news about previous @code{g77} versions up-to-date.
147 An online, ``live'' version of this document
148 (derived directly from the mainline, development version
149 of @code{g77} within @code{gcc})
151 @uref{http://www.gnu.org/software/gcc/onlinedocs/g77_news.html}.
154 The following information was last updated on @value{last-update-news}:
156 @heading In development:
160 Using options @code{-g}, @code{-ggdb} or @code{-gdwarf[-2]} (where
161 appropriate for your target) now also enables debugging information
162 for COMMON BLOCK and EQUIVALENCE items to be emitted.
167 The @code{TtyNam} intrinsics now set @var{Name} to all spaces (at run time)
168 if the system has no @code{ttyname} implementation available.
173 Upgrade to @code{libf2c} as of 1999-06-28.
175 This fixes a bug whereby
176 input to a @code{NAMELIST} read involving a repeat count,
177 such as @samp{K(5)=10*3},
178 was not properly handled by @code{libf2c}.
179 The first item was written to @samp{K(5)},
180 but the remaining nine were written elsewhere (still within the array),
181 not necessarily starting at @samp{K(6)}.
185 @heading In 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 1.1.2:
189 @code{g77} no longer generates bad code for assignments,
190 or other conversions,
191 of @code{REAL} or @code{COMPLEX} constant expressions
192 to type @code{INTEGER(KIND=2)}
193 (often referred to as @code{INTEGER*8}).
195 For example, @samp{INTEGER*8 J; J = 4E10} now works as documented.
200 @code{g77} no longer truncates @code{INTEGER(KIND=2)}
201 (usually @code{INTEGER*8})
202 subscript expressions when evaluating array references
203 on systems with pointers widers than @code{INTEGER(KIND=1)}
209 @code{g77} no longer generates bad code
210 for an assignment to a @code{COMPLEX} variable or array
211 that partially overlaps one or more of the sources
212 of the same assignment
213 (a very rare construction).
214 It now assigns through a temporary,
215 in cases where such partial overlap is deemed possible.
220 @code{libg2c} (@code{libf2c}) no longer loses track
221 of the file being worked on
222 during a @code{BACKSPACE} operation.
227 @code{libg2c} (@code{libf2c}) fixes a bug whereby
228 input to a @code{NAMELIST} read involving a repeat count,
229 such as @samp{K(5)=10*3},
230 was not properly handled by @code{libf2c}.
231 The first item was written to @samp{K(5)},
232 but the remaining nine were written elsewhere (still within the array),
233 not necessarily starting at @samp{K(6)}.
238 @c Tim Prince reported this, regarding the TEST_FPU benchmark.
239 Automatic arrays now seem to be working on HP-UX systems.
244 The @code{Date} intrinsic now returns the correct result
245 on big-endian systems.
250 Fix @code{g77} so it no longer crashes when compiling
251 I/O statements using keywords that define @code{INTEGER} values,
252 such as @samp{IOSTAT=@var{j}},
253 where @var{j} is other than default @code{INTEGER}
254 (such as @code{INTEGER*2}).
255 Instead, it issues a diagnostic.
260 Fix @code{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/},
261 where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2},
262 instead of producing a spurious diagnostic.
263 Also fix @samp{DATA (A(I),I=1,N)},
264 where @samp{N} is not default @code{INTEGER}
265 to work instead of crashing @code{g77}.
270 The @samp{-ax} option is now obeyed when compiling Fortran programs.
271 (It is passed to the @file{f771} driver.)
275 The new @samp{-fbounds-check} option
276 causes @code{g77} to compile run-time bounds checks
277 of array subscripts, as well as of substring start and end points.
280 @code{libg2c} now supports building as multilibbed library,
281 which provides better support for systems
282 that require options such as @samp{-mieee}
286 Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
287 now are recognized by @code{g77}
288 as if they ended in @samp{.for} and @samp{.fpp}, respectively.
291 The order of arguments to the @emph{subroutine} forms of the
292 @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam}
293 intrinsics has been swapped.
294 The argument serving as the returned value
295 for the corresponding function forms
296 now is the @emph{second} argument,
297 making these consistent with the other subroutine forms
298 of @code{libU77} intrinsics.
301 @code{g77} now warns about a reference to an intrinsic
302 that has an interface that is not Year 2000 (Y2K) compliant.
303 Also, @code{libg2c} has been changed to increase the likelihood
304 of catching references to the implementations of these intrinsics
305 using the @code{EXTERNAL} mechanism
306 (which would avoid the new warnings).
309 @xref{Year 2000 (Y2K) Problems}, for more information.
314 @code{g77} now warns about a reference to a function
315 when the corresponding @emph{subsequent} function program unit
316 disagrees with the reference concerning the type of the function.
320 @samp{-fno-emulate-complex} is now the default option.
321 This should result in improved performance
322 of code that uses the @code{COMPLEX} data type.
325 @cindex double-precision performance
326 @cindex -malign-double
328 The @samp{-malign-double} option
329 now reliably aligns @emph{all} double-precision variables and arrays
330 on Intel x86 targets.
334 Even without the @samp{-malign-double} option,
335 @code{g77} reliably aligns local double-precision variables
336 that are not in @code{EQUIVALENCE} areas
337 and not @code{SAVE}'d.
342 @code{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands
343 instead of generating a run-time call to
344 the @code{libf2c} routines @code{c_div} or @code{z_div},
345 unless the @samp{-Os} option is specified.
349 @code{g77} no longer generates code to maintain @code{errno},
350 a C-language concept,
351 when performing operations such as the @code{SqRt} intrinsic.
355 @code{g77} developers can temporarily use
356 the @samp{-fflatten-arrays} option
357 to compare how the compiler handles code generation
358 using C-like constructs as compared to the
359 Fortran-like method constructs normally used.
364 A substantial portion of the @code{g77} front end's code-generation component
366 It now generates code using facilities more robustly supported
367 by the @code{gcc} back end.
368 One effect of this rewrite is that some codes no longer produce
369 a spurious ``label @var{lab} used before containing binding contour''
374 Support for the @samp{-fugly} option has been removed.
378 Improve documentation and indexing,
379 including information on Year 2000 (Y2K) compliance,
380 and providing more information on internals of the front end.
385 Upgrade to @code{libf2c} as of 1999-05-10.
389 @heading In 0.5.24 versus 0.5.23:
391 There is no @code{g77} version 0.5.24 at this time,
393 0.5.24 is the version number designated for bug fixes and,
394 perhaps, some new features added,
396 Version 0.5.23 requires @code{gcc} 2.8.1,
397 as 0.5.24 was planned to require.
399 Due to @code{EGCS} becoming @code{GCC}
400 (which is now an acronym for ``GNU Compiler Collection''),
401 and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95,
402 there seems to be no need for an actual 0.5.24 release.
404 To reduce the confusion already resulting from use of 0.5.24
405 to designate @code{g77} versions within @code{EGCS} versions 1.0 and 1.1,
406 as well as in versions of @code{g77} documentation and notices
408 ``mainline'' @code{g77} version numbering resumes
409 at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2),
410 skipping over 0.5.24 as a placeholder version number.
412 To repeat, there is no @code{g77} 0.5.24, but there is now a 0.5.25.
413 Please remain calm and return to your keypunch units.
415 @c 1999-03-15: EGCS 1.1.2 released.
416 @heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1:
420 Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
421 so the returned year is in the documented, non-Y2K-compliant range
423 instead of being returned as 100 in the year 2000.
426 @xref{IDate Intrinsic (VXT)},
427 for more information.
431 Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
432 to return the milliseconds value properly
436 Fix the @code{LStat} intrinsic (in @code{libg2c})
437 to return device-ID information properly
441 Improve documentation.
445 @c 1998-12-04: EGCS 1.1.1 released.
446 @heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1:
450 Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation
452 whenever a @code{REWIND} is done.
454 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
455 @code{g77}'s version of @code{libf2c}.)
458 Fix @code{libg2c} so it no longer crashes with a spurious diagnostic
459 upon doing any I/O following a direct formatted write.
461 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
462 @code{g77}'s version of @code{libf2c}.)
465 Fix @code{g77} so it no longer crashes compiling references
466 to the @code{Rand} intrinsic on some systems.
469 Fix @code{g77} portion of installation process so it works
470 better on some systems
471 (those with shells requiring @samp{else true} clauses
472 on @code{if} constructs
473 for the completion code to be set properly).
477 @c 1998-09-03: EGCS 1.1 released.
478 @heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3:
482 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
483 that wrote one byte beyond the end of its @code{CHARACTER}
485 and in the @code{libU77} intrinsics
486 @code{GMTime} and @code{LTime}
487 that overwrote their arguments.
492 Assumed arrays with negative bounds
493 (such as @samp{REAL A(-1:*)})
494 no longer elicit spurious diagnostics from @code{g77},
495 even on systems with pointers having
496 different sizes than integers.
498 This bug is not known to have existed in any
499 recent version of @code{gcc}.
500 It was introduced in an early release of @code{egcs}.
505 Valid combinations of @code{EXTERNAL},
506 passing that external as a dummy argument
507 without explicitly giving it a type,
508 and, in a subsequent program unit,
509 referencing that external as
510 an external function with a different type
511 no longer crash @code{g77}.
516 @code{CASE DEFAULT} no longer crashes @code{g77}.
521 The @samp{-Wunused} option no longer issues a spurious
522 warning about the ``master'' procedure generated by
523 @code{g77} for procedures containing @code{ENTRY} statements.
527 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
528 compile-time constant @code{INTEGER} expression.
531 Fix @code{g77} @samp{-g} option so procedures that
532 use @code{ENTRY} can be stepped through, line by line,
536 Allow any @code{REAL} argument to intrinsics
537 @code{Second} and @code{CPU_Time}.
540 Use @code{tempnam}, if available, to open scratch files
541 (as in @samp{OPEN(STATUS='SCRATCH')})
542 so that the @code{TMPDIR} environment variable,
546 @code{g77}'s version of @code{libf2c} separates out
547 the setting of global state
548 (such as command-line arguments and signal handling)
549 from @file{main.o} into distinct, new library
552 This should make it easier to write portable applications
553 that have their own (non-Fortran) @code{main()} routine
554 properly set up the @code{libf2c} environment, even
555 when @code{libf2c} (now @code{libg2c}) is a shared library.
559 @code{g77} no longer installs the @file{f77} command
560 and @file{f77.1} man page
561 in the @file{/usr} or @file{/usr/local} heirarchy,
562 even if the @file{f77-install-ok} file exists
563 in the source or build directory.
564 See the installation documentation for more information.
569 @code{g77} no longer installs the @file{libf2c.a} library
570 and @file{f2c.h} include file
571 in the @file{/usr} or @file{/usr/local} heirarchy,
572 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
573 in the source or build directory.
574 See the installation documentation for more information.
579 The @file{libf2c.a} library produced by @code{g77} has been
580 renamed to @file{libg2c.a}.
581 It is installed only in the @code{gcc} ``private''
582 directory heirarchy, @file{gcc-lib}.
583 This allows system administrators and users to choose which
584 version of the @code{libf2c} library from @code{netlib} they
585 wish to use on a case-by-case basis.
586 See the installation documentation for more information.
591 The @file{f2c.h} include (header) file produced by @code{g77}
592 has been renamed to @file{g2c.h}.
593 It is installed only in the @code{gcc} ``private''
594 directory heirarchy, @file{gcc-lib}.
595 This allows system administrators and users to choose which
596 version of the include file from @code{netlib} they
597 wish to use on a case-by-case basis.
598 See the installation documentation for more information.
602 The @code{g77} command now expects the run-time library
603 to be named @code{libg2c.a} instead of @code{libf2c.a},
604 to ensure that a version other than the one built and
605 installed as part of the same @code{g77} version is picked up.
609 During the configuration and build process,
610 @code{g77} creates subdirectories it needs only as it
612 Other cleaning up of the configuration and build process
613 has been performed as well.
618 @code{install-info} now used to update the directory of
619 Info documentation to contain an entry for @code{g77}
620 (during installation).
624 Some diagnostics have been changed from warnings to errors,
625 to prevent inadvertent use of the resulting, probably buggy,
627 These mostly include diagnostics about use of unsupported features
628 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
629 @code{WRITE} statements,
630 and about truncations of various sorts of constants.
634 Improve compilation of @code{FORMAT} expressions so that
635 a null byte is appended to the last operand if it
637 This provides a cleaner run-time diagnostic as provided
638 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
643 Improve documentation and indexing.
648 The upgrade to @code{libf2c} as of 1998-06-18
649 should fix a variety of problems, including
650 those involving some uses of the @code{T} format
651 specifier, and perhaps some build (porting) problems
656 @c 1998-09-03: EGCS 1.1 released.
657 @heading In @code{EGCS} 1.1 versus @code{g77} 0.5.23:
661 @cindex stack, 387 coprocessor
665 Fix a code-generation bug that afflicted
666 Intel x86 targets when @samp{-O2} was specified
667 compiling, for example, an old version of
668 the @code{DNRM2} routine.
670 The x87 coprocessor stack was being
671 mismanaged in cases involving assigned @code{GOTO}
677 @code{g77} no longer produces incorrect code
679 for @code{EQUIVALENCE} and @code{COMMON}
680 aggregates that, due to ``unnatural'' ordering of members
681 vis-a-vis their types, require initial padding.
686 Fix @code{g77} crash compiling code
687 containing the construct @samp{CMPLX(0.)} or similar.
692 @code{g77} no longer crashes when compiling code
693 containing specification statements such as
694 @samp{INTEGER(KIND=7) PTR}.
699 @code{g77} no longer crashes when compiling code
700 such as @samp{J = SIGNAL(1, 2)}.
704 @code{g77} now treats @samp{%LOC(@var{expr})} and
705 @samp{LOC(@var{expr})} as ``ordinary'' expressions
706 when they are used as arguments in procedure calls.
707 This change applies only to global (filewide) analysis,
708 making it consistent with
709 how @code{g77} actually generates code
712 Previously, @code{g77} treated these expressions
713 as denoting special ``pointer'' arguments
714 for the purposes of filewide analysis.
719 (or apparently infinite run-time)
720 when compiling certain complicated expressions
721 involving @code{COMPLEX} arithmetic
722 (especially multiplication).
726 @cindex double-precision performance
727 @cindex -malign-double
729 Align static double-precision variables and arrays
731 regardless of whether @samp{-malign-double} is specified.
733 Generally, this affects only local variables and arrays
734 having the @code{SAVE} attribute
735 or given initial values via @code{DATA}.
738 The @code{g77} driver now ensures that @samp{-lg2c}
739 is specified in the link phase prior to any
740 occurrence of @samp{-lm}.
741 This prevents accidentally linking to a routine
742 in the SunOS4 @samp{-lm} library
743 when the generated code wants to link to the one
744 in @code{libf2c} (@code{libg2c}).
747 @code{g77} emits more debugging information when
750 This new information allows, for example,
751 @kbd{which __g77_length_a} to be used in @code{gdb}
752 to determine the type of the phantom length argument
753 supplied with @code{CHARACTER} variables.
755 This information pertains to internally-generated
756 type, variable, and other information,
757 not to the longstanding deficiencies vis-a-vis
758 @code{COMMON} and @code{EQUIVALENCE}.
761 The F90 @code{Date_and_Time} intrinsic now is
765 The F90 @code{System_Clock} intrinsic allows
766 the optional arguments (except for the @code{Count}
767 argument) to be omitted.
771 Upgrade to @code{libf2c} as of 1998-06-18.
776 Improve documentation and indexing.
781 @heading In previous versions:
783 Information on previous versions is not provided
784 in this @file{@value{path-g77}/NEWS} file,
786 See @file{@value{path-g77}/news.texi},
787 or any of its other derivations
788 (Info, HTML, dvi forms)
789 for such information.
793 @c 1998-05-20: 0.5.23 released.
794 @heading In 0.5.23 versus 0.5.22:
797 This release contains several regressions against
798 version 0.5.22 of @code{g77}, due to using the
799 ``vanilla'' @code{gcc} back end instead of patching
800 it to fix a few bugs and improve performance in a
803 Features that have been dropped from this version
804 of @code{g77} due to their being implemented
805 via @code{g77}-specific patches to the @code{gcc}
806 back end in previous releases include:
810 Support for @code{__restrict__} keyword,
811 the options @samp{-fargument-alias}, @samp{-fargument-noalias},
812 and @samp{-fargument-noalias-global},
813 and the corresponding alias-analysis code.
815 (@code{egcs} has the alias-analysis
816 code, but not the @code{__restrict__} keyword.
817 @code{egcs} @code{g77} users benefit from the alias-analysis
818 code despite the lack of the @code{__restrict__} keyword,
819 which is a C-language construct.)
822 Support for the GNU compiler options
823 @samp{-fmove-all-movables},
824 @samp{-freduce-all-givs},
825 and @samp{-frerun-loop-opt}.
827 (@code{egcs} supports these options.
828 @code{g77} users of @code{egcs} benefit from them even if
829 they are not explicitly specified,
830 because the defaults are optimized for @code{g77} users.)
833 Support for the @samp{-W} option warning about
834 integer division by zero.
837 The Intel x86-specific option @samp{-malign-double}
838 applying to stack-allocated data
839 as well as statically-allocate data.
843 Note that the @file{gcc/f/gbe/} subdirectory has been removed
844 from this distribution as a result of @code{g77} no longer
845 including patches for the @code{gcc} back end.
850 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
851 that wrote one byte beyond the end of its @code{CHARACTER}
853 and in the @code{libU77} intrinsics
854 @code{GMTime} and @code{LTime}
855 that overwrote their arguments.
859 Support @code{gcc} version 2.8,
860 and remove support for prior versions of @code{gcc}.
862 @cindex -@w{}-driver option
863 @cindex @code{g77} options, -@w{}-driver
864 @cindex options, -@w{}-driver
866 Remove support for the @samp{--driver} option,
867 as @code{g77} now does all the driving,
868 just like @code{gcc}.
872 @code{CASE DEFAULT} no longer crashes @code{g77}.
877 Valid combinations of @code{EXTERNAL},
878 passing that external as a dummy argument
879 without explicitly giving it a type,
880 and, in a subsequent program unit,
881 referencing that external as
882 an external function with a different type
883 no longer crash @code{g77}.
888 @code{g77} no longer installs the @file{f77} command
889 and @file{f77.1} man page
890 in the @file{/usr} or @file{/usr/local} heirarchy,
891 even if the @file{f77-install-ok} file exists
892 in the source or build directory.
893 See the installation documentation for more information.
898 @code{g77} no longer installs the @file{libf2c.a} library
899 and @file{f2c.h} include file
900 in the @file{/usr} or @file{/usr/local} heirarchy,
901 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
902 in the source or build directory.
903 See the installation documentation for more information.
908 The @file{libf2c.a} library produced by @code{g77} has been
909 renamed to @file{libg2c.a}.
910 It is installed only in the @code{gcc} ``private''
911 directory heirarchy, @file{gcc-lib}.
912 This allows system administrators and users to choose which
913 version of the @code{libf2c} library from @code{netlib} they
914 wish to use on a case-by-case basis.
915 See the installation documentation for more information.
920 The @file{f2c.h} include (header) file produced by @code{g77}
921 has been renamed to @file{g2c.h}.
922 It is installed only in the @code{gcc} ``private''
923 directory heirarchy, @file{gcc-lib}.
924 This allows system administrators and users to choose which
925 version of the include file from @code{netlib} they
926 wish to use on a case-by-case basis.
927 See the installation documentation for more information.
931 The @code{g77} command now expects the run-time library
932 to be named @code{libg2c.a} instead of @code{libf2c.a},
933 to ensure that a version other than the one built and
934 installed as part of the same @code{g77} version is picked up.
938 The @samp{-Wunused} option no longer issues a spurious
939 warning about the ``master'' procedure generated by
940 @code{g77} for procedures containing @code{ENTRY} statements.
944 @code{g77}'s version of @code{libf2c} separates out
945 the setting of global state
946 (such as command-line arguments and signal handling)
947 from @file{main.o} into distinct, new library
950 This should make it easier to write portable applications
951 that have their own (non-Fortran) @code{main()} routine
952 properly set up the @code{libf2c} environment, even
953 when @code{libf2c} (now @code{libg2c}) is a shared library.
957 During the configuration and build process,
958 @code{g77} creates subdirectories it needs only as it
959 needs them, thus avoiding unnecessary creation of, for example,
960 @file{stage1/f/runtime} when doing a non-bootstrap build.
961 Other cleaning up of the configuration and build process
962 has been performed as well.
967 @code{install-info} now used to update the directory of
968 Info documentation to contain an entry for @code{g77}
969 (during installation).
973 Some diagnostics have been changed from warnings to errors,
974 to prevent inadvertent use of the resulting, probably buggy,
976 These mostly include diagnostics about use of unsupported features
977 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
978 @code{WRITE} statements,
979 and about truncations of various sorts of constants.
983 Improve documentation and indexing.
988 Upgrade to @code{libf2c} as of 1998-04-20.
990 This should fix a variety of problems, including
991 those involving some uses of the @code{T} format
992 specifier, and perhaps some build (porting) problems
997 @c 1998-03-16: 0.5.22 released.
998 @heading In 0.5.22 versus 0.5.21:
1000 @ifclear USERVISONLY
1002 Fix code generation for iterative @code{DO} loops that
1003 have one or more references to the iteration variable,
1004 or to aliases of it, in their control expressions.
1005 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1008 @ifclear USERVISONLY
1010 @cindex stack, 387 coprocessor
1014 Fix a code-generation bug that afflicted
1015 Intel x86 targets when @samp{-O2} was specified
1016 compiling, for example, an old version of
1017 the @code{DNRM2} routine.
1019 The x87 coprocessor stack was being
1020 mismanaged in cases involving assigned @code{GOTO}
1024 @ifclear USERVISONLY
1026 Fix @code{DTime} intrinsic so as not to truncate
1027 results to integer values (on some systems).
1031 Fix @code{Signal} intrinsic so it offers portable
1032 support for 64-bit systems (such as Digital Alphas
1035 @ifclear USERVISONLY
1037 Fix run-time crash involving @code{NAMELIST} on 64-bit
1038 machines such as Alphas.
1041 @ifclear USERVISONLY
1043 Fix @code{g77} version of @code{libf2c} so it no longer
1044 produces a spurious @samp{I/O recursion} diagnostic at run time
1045 when an I/O operation (such as @samp{READ *,I}) is interrupted
1046 in a manner that causes the program to be terminated
1047 via the @code{f_exit} routine (such as via @kbd{C-c}).
1050 @ifclear USERVISONLY
1052 Fix @code{g77} crash triggered by @code{CASE} statement with
1053 an omitted lower or upper bound.
1056 @ifclear USERVISONLY
1058 Fix @code{g77} crash compiling references to @code{CPU_Time}
1062 @ifclear USERVISONLY
1064 Fix @code{g77} crash
1065 (or apparently infinite run-time)
1066 when compiling certain complicated expressions
1067 involving @code{COMPLEX} arithmetic
1068 (especially multiplication).
1071 @ifclear USERVISONLY
1073 Fix @code{g77} crash on statements such as
1074 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1075 @samp{Z} is @code{DOUBLE COMPLEX}.
1078 @ifclear USERVISONLY
1080 Fix a @code{g++} crash.
1084 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
1085 compile-time constant @code{INTEGER} expression.
1088 Fix @code{g77} @samp{-g} option so procedures that
1089 use @code{ENTRY} can be stepped through, line by line,
1092 @ifclear USERVISONLY
1094 Fix a profiling-related bug in @code{gcc} back end for
1095 Intel x86 architecture.
1099 Allow any @code{REAL} argument to intrinsics
1100 @code{Second} and @code{CPU_Time}.
1103 Allow any numeric argument to intrinsics
1104 @code{Int2} and @code{Int8}.
1107 Use @code{tempnam}, if available, to open scratch files
1108 (as in @samp{OPEN(STATUS='SCRATCH')})
1109 so that the @code{TMPDIR} environment variable,
1110 if present, is used.
1113 Rename the @code{gcc} keyword @code{restrict} to
1114 @code{__restrict__}, to avoid rejecting valid, existing,
1116 Support for @code{restrict} is now more like support
1119 @ifclear USERVISONLY
1121 Fix @samp{-fpedantic} to not reject procedure invocations
1122 such as @samp{I=J()} and @samp{CALL FOO()}.
1126 Fix @samp{-fugly-comma} to affect invocations of
1127 only external procedures.
1128 Restore rejection of gratuitous trailing omitted
1129 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1132 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1133 @samp{-fbadu77-intrinsics-*} options.
1135 @ifclear USERVISONLY
1137 Improve diagnostic messages from @code{libf2c}
1138 so it is more likely that the printing of the
1139 active format string is limited to the string,
1140 with no trailing garbage being printed.
1142 (Unlike @code{f2c}, @code{g77} did not append
1143 a null byte to its compiled form of every
1144 format string specified via a @code{FORMAT} statement.
1145 However, @code{f2c} would exhibit the problem
1146 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1147 by printing @samp{(I)garbage} as the format string.)
1150 @ifclear USERVISONLY
1152 Improve compilation of @code{FORMAT} expressions so that
1153 a null byte is appended to the last operand if it
1155 This provides a cleaner run-time diagnostic as provided
1156 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
1159 @ifclear USERVISONLY
1161 Fix various crashes involving code with diagnosed errors.
1164 @ifclear USERVISONLY
1166 Fix cross-compilation bug when configuring @code{libf2c}.
1169 @ifclear USERVISONLY
1171 Improve diagnostics.
1174 @ifclear USERVISONLY
1176 Improve documentation and indexing.
1179 @ifclear USERVISONLY
1181 Upgrade to @code{libf2c} as of 1997-09-23.
1182 This fixes a formatted-I/O bug that afflicted
1183 64-bit systems with 32-bit integers
1184 (such as Digital Alpha running GNU/Linux).
1188 @c 1998-03-18: EGCS 1.0.2 released.
1189 @heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1:
1191 @ifclear USERVISONLY
1193 Fix @code{g77} crash triggered by @code{CASE} statement with
1194 an omitted lower or upper bound.
1197 @ifclear USERVISONLY
1199 Fix @code{g77} crash on statements such as
1200 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1201 @samp{Z} is @code{DOUBLE COMPLEX}.
1204 @ifclear USERVISONLY
1206 @cindex support, ELF
1207 @cindex -fPIC option
1208 @cindex options, -fPIC
1210 Fix @samp{-fPIC} (such as compiling for ELF targets)
1211 on the Intel x86 architecture target
1212 so invalid assembler code is no longer produced.
1215 @ifclear USERVISONLY
1217 Fix @samp{-fpedantic} to not reject procedure invocations
1218 such as @samp{I=J()} and @samp{CALL FOO()}.
1221 @ifclear USERVISONLY
1223 Fix @samp{-fugly-comma} to affect invocations of
1224 only external procedures.
1225 Restore rejection of gratuitous trailing omitted
1226 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1230 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1231 @samp{-fbadu77-intrinsics-*} options.
1234 @c 1998-01-06: EGCS 1.0.1 released.
1235 @heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0:
1236 @ifclear USERVISONLY
1239 Fix run-time crash involving @code{NAMELIST} on 64-bit
1240 machines such as Alphas.
1244 @c 1997-12-03: EGCS 1.0 released.
1245 @heading In @code{EGCS} 1.0 versus @code{g77} 0.5.21:
1248 Version 1.0 of @code{egcs}
1249 contains several regressions against
1250 version 0.5.21 of @code{g77},
1252 ``vanilla'' @code{gcc} back end instead of patching
1253 it to fix a few bugs and improve performance in a
1256 Features that have been dropped from this version
1257 of @code{g77} due to their being implemented
1258 via @code{g77}-specific patches to the @code{gcc}
1259 back end in previous releases include:
1263 Support for the C-language @code{restrict} keyword.
1266 Support for the @samp{-W} option warning about
1267 integer division by zero.
1270 The Intel x86-specific option @samp{-malign-double}
1271 applying to stack-allocated data
1272 as well as statically-allocate data.
1275 @ifclear USERVISONLY
1276 Note that the @file{gcc/f/gbe/} subdirectory has been removed
1277 from this distribution as a result of @code{g77}
1278 being fully integrated with
1279 the @code{egcs} variant of the @code{gcc} back end.
1282 @ifclear USERVISONLY
1284 Fix code generation for iterative @code{DO} loops that
1285 have one or more references to the iteration variable,
1286 or to aliases of it, in their control expressions.
1287 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1290 @ifclear USERVISONLY
1292 Fix @code{DTime} intrinsic so as not to truncate
1293 results to integer values (on some systems).
1296 @ifclear USERVISONLY
1298 @c Toon Moene discovered these.
1299 Some Fortran code, miscompiled
1300 by @code{g77} built on @code{gcc} version 2.8.1
1301 on m68k-next-nextstep3 configurations
1302 when using the @samp{-O2} option,
1303 is now compiled correctly.
1304 It is believed that a C function known to miscompile
1305 on that configuration
1306 when using the @samp{-O2 -funroll-loops} options
1307 also is now compiled correctly.
1310 @ifclear USERVISONLY
1312 Remove support for non-@code{egcs} versions of @code{gcc}.
1315 @cindex -@w{}-driver option
1316 @cindex @code{g77} options, -@w{}-driver
1317 @cindex options, -@w{}-driver
1319 Remove support for the @samp{--driver} option,
1320 as @code{g77} now does all the driving,
1321 just like @code{gcc}.
1324 Allow any numeric argument to intrinsics
1325 @code{Int2} and @code{Int8}.
1327 @ifclear USERVISONLY
1329 Improve diagnostic messages from @code{libf2c}
1330 so it is more likely that the printing of the
1331 active format string is limited to the string,
1332 with no trailing garbage being printed.
1334 (Unlike @code{f2c}, @code{g77} did not append
1335 a null byte to its compiled form of every
1336 format string specified via a @code{FORMAT} statement.
1337 However, @code{f2c} would exhibit the problem
1338 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1339 by printing @samp{(I)garbage} as the format string.)
1342 @ifclear USERVISONLY
1344 Upgrade to @code{libf2c} as of 1997-09-23.
1345 This fixes a formatted-I/O bug that afflicted
1346 64-bit systems with 32-bit integers
1347 (such as Digital Alpha running GNU/Linux).
1351 @c 1997-09-09: 0.5.21 released.
1354 @ifclear USERVISONLY
1356 Fix a code-generation bug introduced by 0.5.20
1357 caused by loop unrolling (by specifying
1358 @samp{-funroll-loops} or similar).
1359 This bug afflicted all code compiled by
1360 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1361 Fortran, and so on).
1364 @ifclear USERVISONLY
1366 Fix a code-generation bug manifested when
1367 combining local @code{EQUIVALENCE} with a
1368 @code{DATA} statement that follows
1369 the first executable statement (or is
1370 treated as an executable-context statement
1371 as a result of using the @samp{-fpedantic}
1375 @ifclear USERVISONLY
1377 Fix a compiler crash that occured when an
1378 integer division by a constant zero is detected.
1379 Instead, when the @samp{-W} option is specified,
1380 the @code{gcc} back end issues a warning about such a case.
1381 This bug afflicted all code compiled by
1382 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1383 Fortran, and so on).
1387 When the @samp{-W} option is specified, @code{gcc}, @code{g77},
1388 and other GNU compilers that incorporate the @code{gcc}
1389 back end as modified by @code{g77}, issue
1390 a warning about integer division by constant zero.
1393 @ifclear USERVISONLY
1395 Fix a compiler crash that occurred in some cases
1396 of procedure inlining.
1397 (Such cases became more frequent in 0.5.20.)
1400 @ifclear USERVISONLY
1402 Fix a compiler crash resulting from using @code{DATA}
1403 or similar to initialize a @code{COMPLEX} variable or
1407 @ifclear USERVISONLY
1409 Fix compiler crashes involving use of @code{AND}, @code{OR},
1410 or @code{XOR} intrinsics.
1413 @ifclear USERVISONLY
1415 Fix compiler bug triggered when using a @code{COMMON}
1416 or @code{EQUIVALENCE} variable
1417 as the target of an @code{ASSIGN}
1418 or assigned-@code{GOTO} statement.
1421 @ifclear USERVISONLY
1423 Fix compiler crashes due to using the name of a some
1424 non-standard intrinsics (such as @code{FTell} or
1425 @code{FPutC}) as such and as the name of a procedure
1427 Such dual use of a name in a program is allowed by
1431 @c @code{g77}'s version of @code{libf2c} has been modified
1432 @c so that the external names of library's procedures do not
1433 @c conflict with names used for Fortran procedures compiled
1435 @c An additional layer of jacket procedures has been added
1436 @c to @code{libf2c} to map the old names to the new names,
1437 @c for automatic use by programs that interface to the
1438 @c library procedures via the external-procedure mechanism.
1440 @c For example, the intrinsic @code{FPUTC} previously was
1441 @c implemented by @code{g77} as a call to the @code{libf2c}
1442 @c routine @code{fputc_}.
1443 @c This would conflict with a Fortran procedure named @code{FPUTC}
1444 @c (using default compiler options), and this conflict
1445 @c would cause a crash under certain circumstances.
1447 @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
1448 @c which does not conflict with the @code{fputc_} external
1449 @c that implements a Fortran procedure named @code{FPUTC}.
1451 @c Programs that refer to @code{FPUTC} as an external procedure
1452 @c without supplying their own implementation will link to
1453 @c the new @code{libf2c} routine @code{fputc_}, which is
1454 @c simply a jacket routine that calls @code{G77_fputc_0}.
1456 @ifclear USERVISONLY
1458 Place automatic arrays on the stack, even if
1459 @code{SAVE} or the @samp{-fno-automatic} option
1461 This avoids a compiler crash in some cases.
1464 @ifclear USERVISONLY
1466 The @samp{-malign-double} option now reliably aligns
1467 @code{DOUBLE PRECISION} optimally on Pentium and
1468 Pentium Pro architectures (586 and 686 in @code{gcc}).
1472 New option @samp{-Wno-globals} disables warnings
1473 about ``suspicious'' use of a name both as a global
1474 name and as the implicit name of an intrinsic, and
1475 warnings about disagreements over the number or natures of
1476 arguments passed to global procedures, or the
1477 natures of the procedures themselves.
1479 The default is to issue such warnings, which are
1480 new as of this version of @code{g77}.
1483 New option @samp{-fno-globals} disables diagnostics
1484 about potentially fatal disagreements
1485 analysis problems, such as disagreements over the
1486 number or natures of arguments passed to global
1487 procedures, or the natures of those procedures themselves.
1489 The default is to issue such diagnostics and flag
1490 the compilation as unsuccessful.
1491 With this option, the diagnostics are issued as
1492 warnings, or, if @samp{-Wno-globals} is specified,
1493 are not issued at all.
1495 This option also disables inlining of global procedures,
1496 to avoid compiler crashes resulting from coding errors
1497 that these diagnostics normally would identify.
1499 @ifclear USERVISONLY
1501 Diagnose cases where a reference to a procedure
1502 disagrees with the type of that procedure, or
1503 where disagreements about the number or nature
1505 This avoids a compiler crash.
1508 @ifclear USERVISONLY
1510 Fix parsing bug whereby @code{g77} rejected a
1511 second initialization specification immediately
1512 following the first's closing @samp{/} without
1513 an intervening comma in a @code{DATA} statement,
1514 and the second specification was an implied-DO list.
1517 @ifclear USERVISONLY
1519 Improve performance of the @code{gcc} back end so
1520 certain complicated expressions involving @code{COMPLEX}
1521 arithmetic (especially multiplication) don't appear to
1522 take forever to compile.
1525 @ifclear USERVISONLY
1527 Fix a couple of profiling-related bugs in @code{gcc}
1531 @ifclear USERVISONLY
1533 Integrate GNU Ada's (GNAT's) changes to the back end,
1534 which consist almost entirely of bug fixes.
1535 These fixes are circa version 3.10p of GNAT.
1538 @ifclear USERVISONLY
1540 Include some other @code{gcc} fixes that seem useful in
1541 @code{g77}'s version of @code{gcc}.
1542 (See @file{gcc/ChangeLog} for details---compare it
1543 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
1548 Fix @code{libU77} routines that accept file and other names
1549 to strip trailing blanks from them, for consistency
1550 with other implementations.
1551 Blanks may be forcibly appended to such names by
1552 appending a single null character (@samp{CHAR(0)})
1553 to the significant trailing blanks.
1556 Fix @code{CHMOD} intrinsic to work with file names
1557 that have embedded blanks, commas, and so on.
1560 Fix @code{SIGNAL} intrinsic so it accepts an
1561 optional third @code{Status} argument.
1563 @ifclear USERVISONLY
1565 Fix @code{IDATE()} intrinsic subroutine (VXT form)
1566 so it accepts arguments in the correct order.
1567 Documentation fixed accordingly, and for
1568 @code{GMTIME()} and @code{LTIME()} as well.
1572 Make many changes to @code{libU77} intrinsics to
1573 support existing code more directly.
1575 Such changes include allowing both subroutine and
1576 function forms of many routines, changing @code{MCLOCK()}
1577 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
1578 introducing @code{MCLOCK8()} and @code{TIME8()} to
1579 return @code{INTEGER(KIND=2)} values,
1580 and placing functions that are intended to perform
1581 side effects in a new intrinsic group, @code{badu77}.
1583 @ifclear USERVISONLY
1585 Improve @code{libU77} so it is more portable.
1589 Add options @samp{-fbadu77-intrinsics-delete},
1590 @samp{-fbadu77-intrinsics-hide}, and so on.
1592 @ifclear USERVISONLY
1594 Fix crashes involving diagnosed or invalid code.
1597 @ifclear USERVISONLY
1599 @code{g77} and @code{gcc} now do a somewhat better
1600 job detecting and diagnosing arrays that are too
1601 large to handle before these cause diagnostics
1602 during the assembler or linker phase, a compiler
1603 crash, or generation of incorrect code.
1606 @ifclear USERVISONLY
1608 Make some fixes to alias analysis code.
1611 @ifclear USERVISONLY
1613 Add support for @code{restrict} keyword in @code{gcc}
1617 @ifclear USERVISONLY
1619 Support @code{gcc} version 2.7.2.3
1620 (modified by @code{g77} into version 2.7.2.3.f.1),
1622 support for prior versions of @code{gcc}.
1625 @ifclear USERVISONLY
1627 Incorporate GNAT's patches to the @code{gcc} back
1628 end into @code{g77}'s, so GNAT users do not need
1629 to apply GNAT's patches to build both GNAT and @code{g77}
1630 from the same source tree.
1633 @ifclear USERVISONLY
1635 Modify @code{make} rules and related code so that
1636 generation of Info documentation doesn't require
1637 compilation using @code{gcc}.
1638 Now, any ANSI C compiler should be adequate to
1639 produce the @code{g77} documentation (in particular,
1640 the tables of intrinsics) from scratch.
1644 Add @code{INT2} and @code{INT8} intrinsics.
1647 Add @code{CPU_TIME} intrinsic.
1650 Add @code{ALARM} intrinsic.
1653 @code{CTIME} intrinsic now accepts any @code{INTEGER}
1654 argument, not just @code{INTEGER(KIND=2)}.
1656 @ifclear USERVISONLY
1658 Warn when explicit type declaration disagrees with
1659 the type of an intrinsic invocation.
1662 @ifclear USERVISONLY
1664 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
1667 @ifclear USERVISONLY
1669 Fix typo in @code{make} rule @code{g77-cross}, used only for
1673 @ifclear USERVISONLY
1675 Fix @code{libf2c} build procedure to re-archive library
1676 if previous attempt to archive was interrupted.
1679 @ifclear USERVISONLY
1681 Change @code{gcc} to unroll loops only during the last
1682 invocation (of as many as two invocations) of loop
1686 @ifclear USERVISONLY
1688 Improve handling of @samp{-fno-f2c} so that code that
1689 attempts to pass an intrinsic as an actual argument,
1690 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
1691 that the run-time-library routine is, effectively,
1692 compiled with @samp{-ff2c} in effect.
1695 @ifclear USERVISONLY
1697 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
1698 as an option that inhibits linking, just like @samp{-c} or
1699 @samp{-S}, and to recognize and properly handle the
1700 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
1701 and @samp{-Xlinker} options.
1704 @ifclear USERVISONLY
1706 Upgrade to @code{libf2c} as of 1997-08-16.
1709 @ifclear USERVISONLY
1711 Modify @code{libf2c} to consistently and clearly diagnose
1712 recursive I/O (at run time).
1716 @code{g77} driver now prints version information (such as produced
1717 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
1720 The @samp{.r} suffix now designates a Ratfor source file,
1721 to be preprocessed via the @code{ratfor} command, available
1724 @ifclear USERVISONLY
1726 Fix some aspects of how @code{gcc} determines what kind of
1727 system is being configured and what kinds are supported.
1728 For example, GNU Linux/Alpha ELF systems now are directly
1732 @ifclear USERVISONLY
1734 Improve diagnostics.
1737 @ifclear USERVISONLY
1739 Improve documentation and indexing.
1742 @ifclear USERVISONLY
1744 Include all pertinent files for @code{libf2c} that come
1745 from @code{netlib.bell-labs.com}; give any such files
1746 that aren't quite accurate in @code{g77}'s version of
1747 @code{libf2c} the suffix @samp{.netlib}.
1750 @ifclear USERVISONLY
1752 Reserve @code{INTEGER(KIND=0)} for future use.
1756 @c 1997-02-28: 0.5.20 released.
1760 The @samp{-fno-typeless-boz} option is now the default.
1762 This option specifies that non-decimal-radix
1763 constants using the prefixed-radix form (such as @samp{Z'1234'})
1764 are to be interpreted as @code{INTEGER(KIND=1)} constants.
1765 Specify @samp{-ftypeless-boz} to cause such
1766 constants to be interpreted as typeless.
1768 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
1772 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect},
1773 for information on the @samp{-ftypeless-boz} option.
1777 Options @samp{-ff90-intrinsics-enable} and
1778 @samp{-fvxt-intrinsics-enable} now are the
1781 Some programs might use names that clash with
1782 intrinsic names defined (and now enabled) by these
1783 options or by the new @code{libU77} intrinsics.
1784 Users of such programs might need to compile them
1785 differently (using, for example, @samp{-ff90-intrinsics-disable})
1786 or, better yet, insert appropriate @code{EXTERNAL}
1787 statements specifying that these names are not intended
1788 to be names of intrinsics.
1791 The @code{ALWAYS_FLUSH} macro is no longer defined when
1792 building @code{libf2c}, which should result in improved
1793 I/O performance, especially over NFS.
1795 @emph{Note:} If you have code that depends on the behavior
1796 of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
1797 you will have to modify @code{libf2c} accordingly before
1798 building it from this and future versions of @code{g77}.
1801 @xref{Output Assumed To Flush}, for more information.
1805 Dave Love's implementation of @code{libU77} has been
1806 added to the version of @code{libf2c} distributed with
1807 and built as part of @code{g77}.
1808 @code{g77} now knows about the routines in this library
1812 New option @samp{-fvxt} specifies that the
1813 source file is written in VXT Fortran, instead of GNU Fortran.
1816 @xref{VXT Fortran}, for more information on the constructs
1817 recognized when the @samp{-fvxt} option is specified.
1821 The @samp{-fvxt-not-f90} option has been deleted,
1822 along with its inverse, @samp{-ff90-not-vxt}.
1824 If you used one of these deleted options, you should
1825 re-read the pertinent documentation to determine which
1826 options, if any, are appropriate for compiling your
1827 code with this version of @code{g77}.
1830 @xref{Other Dialects}, for more information.
1834 The @samp{-fugly} option now issues a warning, as it
1835 likely will be removed in a future version.
1837 (Enabling all the @samp{-fugly-*} options is unlikely
1838 to be feasible, or sensible, in the future,
1839 so users should learn to specify only those
1840 @samp{-fugly-*} options they really need for a
1841 particular source file.)
1844 The @samp{-fugly-assumed} option, introduced in
1845 version 0.5.19, has been changed to
1846 better accommodate old and new code.
1849 @xref{Ugly Assumed-Size Arrays}, for more information.
1852 @ifclear USERVISONLY
1854 Make a number of fixes to the @code{g77} front end and
1855 the @code{gcc} back end to better support Alpha (AXP)
1857 This includes providing at least one bug-fix to the
1858 @code{gcc} back end for Alphas.
1862 Related to supporting Alpha (AXP) machines, the @code{LOC()}
1863 intrinsic and @code{%LOC()} construct now return
1864 values of @code{INTEGER(KIND=0)} type,
1865 as defined by the GNU Fortran language.
1867 This type is wide enough
1868 (holds the same number of bits)
1869 as the character-pointer type on the machine.
1871 On most machines, this won't make a difference,
1872 whereas, on Alphas and other systems with 64-bit pointers,
1873 the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)}
1874 (often referred to as @code{INTEGER*8})
1875 instead of the more common @code{INTEGER(KIND=1)}
1876 (often referred to as @code{INTEGER*4}).
1879 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
1880 end, to avoid bugs in @code{complex} support in the
1881 @code{gcc} back end.
1882 New option @samp{-fno-emulate-complex}
1883 causes @code{g77} to revert the 0.5.19 behavior.
1885 @ifclear USERVISONLY
1887 Fix bug whereby @samp{REAL A(1)}, for example, caused
1888 a compiler crash if @samp{-fugly-assumed} was in effect
1889 and @var{A} was a local (automatic) array.
1890 That case is no longer affected by the new
1891 handling of @samp{-fugly-assumed}.
1894 @ifclear USERVISONLY
1896 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
1897 no longer deletes @file{foo.f} before issuing other
1898 diagnostics, and so the @samp{-x} option is properly
1902 @ifclear USERVISONLY
1904 Enable inlining of subroutines and functions by the @code{gcc}
1906 This works as it does for @code{gcc} itself---program units
1907 may be inlined for invocations that follow them in the same
1908 program unit, as long as the appropriate compile-time
1909 options are specified.
1913 Dummy arguments are no longer assumed to potentially alias
1915 other dummy arguments or @code{COMMON} areas when any of
1916 these are defined (assigned to) by Fortran code.
1918 This can result in faster and/or smaller programs when
1919 compiling with optimization enabled, though on some
1920 systems this effect is observed only when @samp{-fforce-addr}
1923 New options @samp{-falias-check}, @samp{-fargument-alias},
1924 @samp{-fargument-noalias},
1925 and @samp{-fno-argument-noalias-global} control the
1926 way @code{g77} handles potential aliasing.
1929 @xref{Aliasing Assumed To Work}, for detailed information on why the
1930 new defaults might result in some programs no longer working the way they
1931 did when compiled by previous versions of @code{g77}.
1934 @ifclear USERVISONLY
1936 The @code{CONJG()} and @code{DCONJG()} intrinsics now
1937 are compiled in-line.
1940 @ifclear USERVISONLY
1942 The bug-fix for 0.5.19.1 has been re-done.
1943 The @code{g77} compiler has been changed back to
1944 assume @code{libf2c} has no aliasing problems in
1945 its implementations of the @code{COMPLEX} (and
1946 @code{DOUBLE COMPLEX}) intrinsics.
1947 The @code{libf2c} has been changed to have no such
1950 As a result, 0.5.20 is expected to offer improved performance
1951 over 0.5.19.1, perhaps as good as 0.5.19 in most
1952 or all cases, due to this change alone.
1954 @emph{Note:} This change requires version 0.5.20 of
1955 @code{libf2c}, at least, when linking code produced
1956 by any versions of @code{g77} other than 0.5.19.1.
1957 Use @samp{g77 -v} to determine the version numbers
1958 of the @code{libF77}, @code{libI77}, and @code{libU77}
1959 components of the @code{libf2c} library.
1960 (If these version numbers are not printed---in
1961 particular, if the linker complains about unresolved
1962 references to names like @samp{g77__fvers__}---that
1963 strongly suggests your installation has an obsolete
1964 version of @code{libf2c}.)
1968 New option @samp{-fugly-assign} specifies that the
1969 same memory locations are to be used to hold the
1970 values assigned by both statements @samp{I = 3} and
1971 @samp{ASSIGN 10 TO I}, for example.
1972 (Normally, @code{g77} uses a separate memory location
1973 to hold assigned statement labels.)
1976 @xref{Ugly Assigned Labels}, for more information.
1980 @code{FORMAT} and @code{ENTRY} statements now are allowed to
1981 precede @code{IMPLICIT NONE} statements.
1983 @ifclear USERVISONLY
1985 Produce diagnostic for unsupported @code{SELECT CASE} on
1986 @code{CHARACTER} type, instead of crashing, at compile time.
1989 @ifclear USERVISONLY
1991 Fix crashes involving diagnosed or invalid code.
1994 @ifclear USERVISONLY
1996 Change approach to building @code{libf2c} archive
1997 (@file{libf2c.a}) so that members are added to it
1998 only when truly necessary, so the user that installs
1999 an already-built @code{g77} doesn't need to have write
2000 access to the build tree (whereas the user doing the
2001 build might not have access to install new software
2005 @ifclear USERVISONLY
2007 Support @code{gcc} version 2.7.2.2
2008 (modified by @code{g77} into version 2.7.2.2.f.2),
2010 support for prior versions of @code{gcc}.
2013 @ifclear USERVISONLY
2015 Upgrade to @code{libf2c} as of 1997-02-08, and
2016 fix up some of the build procedures.
2019 @ifclear USERVISONLY
2021 Improve general build procedures for @code{g77},
2022 fixing minor bugs (such as deletion of any file
2023 named @file{f771} in the parent directory of @code{gcc/}).
2027 Enable full support of @code{INTEGER(KIND=2)}
2028 (often referred to as @code{INTEGER*8})
2030 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
2031 may make full use of its features via the @code{g77}
2032 version of @file{f2c.h} and the @code{INTEGER(KIND=2)}
2033 support routines in the @code{g77} version of @code{libf2c}.
2036 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
2037 yields version information on the library.
2040 The @code{SNGL} and @code{FLOAT} intrinsics now are
2041 specific intrinsics, instead of synonyms for the
2042 generic intrinsic @code{REAL}.
2045 New intrinsics have been added.
2046 These are @code{REALPART}, @code{IMAGPART},
2048 @code{LONG}, and @code{SHORT}.
2051 A new group of intrinsics, @code{gnu}, has been added
2052 to contain the new @code{REALPART}, @code{IMAGPART},
2053 and @code{COMPLEX} intrinsics.
2054 An old group, @code{dcp}, has been removed.
2057 Complain about industry-wide ambiguous references
2058 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
2059 where @var{expr} is @code{DOUBLE COMPLEX} (or any
2060 complex type other than @code{COMPLEX}), unless
2061 @samp{-ff90} option specifies Fortran 90 interpretation
2062 or new @samp{-fugly-complex} option, in conjunction with
2063 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
2065 @ifclear USERVISONLY
2067 Make improvements to diagnostics.
2070 @ifclear USERVISONLY
2072 Speed up compiler a bit.
2075 @ifclear USERVISONLY
2077 Improvements to documentation and indexing, including
2078 a new chapter containing information on one, later
2079 more, diagnostics that users are directed to pull
2080 up automatically via a message in the diagnostic itself.
2082 (Hence the menu item @code{M} for the node
2083 @code{Diagnostics} in the top-level menu of
2084 the Info documentation.)
2088 @ifclear DOC-OLDNEWS
2089 @heading In previous versions:
2091 Information on previous versions is archived
2092 in @file{@value{path-g77}/news.texi}
2093 following the test of the @code{DOC-OLDNEWS} macro.
2097 @c 1997-02-01: 0.5.19.1 released.
2098 @heading In 0.5.19.1:
2101 Code-generation bugs afflicting operations on complex
2102 data have been fixed.
2104 These bugs occurred when assigning the result of an
2105 operation to a complex variable (or array element)
2106 that also served as an input to that operation.
2108 The operations affected by this bug were: @code{CONJG()},
2109 @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
2110 @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
2111 @code{CSQRT()}, @code{CDSQRT()}, complex division, and
2112 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
2114 (The related generic and @samp{Z}-prefixed intrinsics,
2115 such as @code{ZSIN()}, also were affected.)
2117 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
2118 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
2119 @code{DOUBLE COMPLEX}) have been fixed.
2122 @c 1996-12-07: 0.5.19 released.
2126 Fix @code{FORMAT} statement parsing so negative values for
2127 specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
2128 are correctly processed as negative.
2131 Fix @code{SIGNAL} intrinsic so it once again accepts a
2132 procedure as its second argument.
2135 A temporary kludge option provides bare-bones information on
2136 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
2139 New @samp{-fonetrip} option specifies FORTRAN-66-style
2140 one-trip @code{DO} loops.
2143 New @samp{-fno-silent} option causes names of program units
2144 to be printed as they are compiled, in a fashion similar to
2145 UNIX @code{f77} and @code{f2c}.
2148 New @samp{-fugly-assumed} option specifies that arrays
2149 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
2150 treated as assumed-size.
2153 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
2154 constants using the prefixed-radix form (such as @samp{Z'1234'})
2155 are to be interpreted as @code{INTEGER} constants.
2158 New @samp{-ff66} option is a ``shorthand'' option that specifies
2159 behaviors considered appropriate for FORTRAN 66 programs.
2162 New @samp{-ff77} option is a ``shorthand'' option that specifies
2163 behaviors considered appropriate for UNIX @code{f77} programs.
2166 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
2167 to perform some of what @samp{-fugly} used to do.
2168 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
2169 in that they do nothing more than enable (or disable) other
2170 @samp{-fugly-*} options.
2173 Fix parsing of assignment statements involving targets that
2174 are substrings of elements of @code{CHARACTER} arrays having
2175 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
2176 @samp{REALFUNCTIONFOO}.
2179 Fix crashes involving diagnosed code.
2182 Fix handling of local @code{EQUIVALENCE} areas so certain cases
2183 of valid Fortran programs are not misdiagnosed as improperly
2184 extending the area backwards.
2187 Support @code{gcc} version 2.7.2.1.
2190 Upgrade to @code{libf2c} as of 1996-09-26, and
2191 fix up some of the build procedures.
2194 Change code generation for list-directed I/O so it allows
2195 for new versions of @code{libf2c} that might return non-zero
2196 status codes for some operations previously assumed to always
2199 This change not only affects how @code{IOSTAT=} variables
2200 are set by list-directed I/O, it also affects whether
2201 @code{END=} and @code{ERR=} labels are reached by these
2205 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
2206 procedures in @code{libf2c}.
2209 Modify @code{fseek_()} in @code{libf2c} to be more portable
2210 (though, in practice, there might be no systems where this
2211 matters) and to catch invalid @code{whence} arguments.
2214 Some useless warnings from the @samp{-Wunused} option have
2218 Fix a problem building the @file{f771} executable
2219 on AIX systems by linking with the @samp{-bbigtoc} option.
2222 Abort configuration if @code{gcc} has not been patched
2223 using the patch file provided in the @file{gcc/f/gbe/}
2227 Add options @samp{--help} and @samp{--version} to the
2228 @code{g77} command, to conform to GNU coding guidelines.
2229 Also add printing of @code{g77} version number when
2230 the @samp{--verbose} (@samp{-v}) option is used.
2233 Change internally generated name for local @code{EQUIVALENCE}
2234 areas to one based on the alphabetically sorted first name
2235 in the list of names for entities placed at the beginning
2239 Improvements to documentation and indexing.
2242 @c 1996-04-01: 0.5.18 released.
2246 Add some rudimentary support for @code{INTEGER*1},
2247 @code{INTEGER*2}, @code{INTEGER*8},
2248 and their @code{LOGICAL} equivalents.
2249 (This support works on most, maybe all, @code{gcc} targets.)
2251 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2252 for providing the patch for this!
2254 Among the missing elements from the support for these
2255 features are full intrinsic support and constants.
2258 Add some rudimentary support for the @code{BYTE} and
2259 @code{WORD} type-declaration statements.
2260 @code{BYTE} corresponds to @code{INTEGER*1},
2261 while @code{WORD} corresponds to @code{INTEGER*2}.
2263 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2264 for providing the patch for this!
2267 The compiler code handling intrinsics has been largely
2268 rewritten to accommodate the new types.
2269 No new intrinsics or arguments for existing
2270 intrinsics have been added, so there is, at this
2271 point, no intrinsic to convert to @code{INTEGER*8},
2275 Support automatic arrays in procedures.
2278 Reduce space/time requirements for handling large
2279 @emph{sparsely} initialized aggregate arrays.
2280 This improvement applies to only a subset of
2281 the general problem to be addressed in 0.6.
2284 Treat initial values of zero as if they weren't
2285 specified (in DATA and type-declaration statements).
2286 The initial values will be set to zero anyway, but the amount
2287 of compile time processing them will be reduced,
2288 in some cases significantly (though, again, this
2289 is only a subset of the general problem to be
2292 A new option, @samp{-fzeros}, is introduced to
2293 enable the traditional treatment of zeros as any
2297 With @samp{-ff90} in force, @code{g77} incorrectly
2298 interpreted @samp{REAL(Z)} as returning a @code{REAL}
2299 result, instead of as a @code{DOUBLE PRECISION}
2301 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
2303 With @samp{-fno-f90} in force, the interpretation remains
2304 unchanged, since this appears to be how at least some
2305 F77 code using the @code{DOUBLE COMPLEX} extension expected
2308 Essentially, @samp{REAL(Z)} in F90 is the same as
2309 @samp{DBLE(Z)}, while in extended F77, it appears to
2310 be the same as @samp{REAL(REAL(Z))}.
2313 An expression involving exponentiation, where both operands
2314 were type @code{INTEGER} and the right-hand operand
2315 was negative, was erroneously evaluated.
2318 Fix bugs involving @code{DATA} implied-@code{DO} constructs
2319 (these involved an errant diagnostic and a crash, both on good
2320 code, one involving subsequent statement-function definition).
2323 Close @code{INCLUDE} files after processing them, so compiling source
2324 files with lots of @code{INCLUDE} statements does not result in
2325 being unable to open @code{INCLUDE} files after all the available
2326 file descriptors are used up.
2329 Speed up compiling, especially of larger programs, and perhaps
2330 slightly reduce memory utilization while compiling (this is
2331 @emph{not} the improvement planned for 0.6 involving large aggregate
2332 areas)---these improvements result from simply turning
2333 off some low-level code to do self-checking that hasn't been
2334 triggered in a long time.
2337 Introduce three new options that
2338 implement optimizations in the @code{gcc} back end (GBE).
2339 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
2340 and @samp{-frerun-loop-opt}, which are enabled, by default,
2341 for Fortran compilations.
2342 These optimizations are intended to help toon Fortran programs.
2345 Patch the GBE to do a better job optimizing certain
2346 kinds of references to array elements.
2349 Due to patches to the GBE, the version number of @code{gcc}
2350 also is patched to make it easier to manage installations,
2351 especially useful if it turns out a @code{g77} change to the
2354 The @code{g77}-modified version number is the @code{gcc}
2355 version number with the string @samp{.f.@var{n}} appended,
2356 where @samp{f} identifies the version as enhanced for
2357 Fortran, and @var{n} is @samp{1} for the first Fortran
2358 patch for that version of @code{gcc}, @samp{2} for the
2361 So, this introduces version 2.7.2.f.1 of @code{gcc}.
2364 Make several improvements and fixes to diagnostics, including
2365 the removal of two that were inappropriate or inadequate.
2368 Warning about two successive arithmetic operators, produced
2369 by @samp{-Wsurprising}, now produced @emph{only} when both
2370 operators are, indeed, arithmetic (not relational/boolean).
2373 @samp{-Wsurprising} now warns about the remaining cases
2374 of using non-integral variables for implied-@code{DO}
2375 loops, instead of these being rejected unless @samp{-fpedantic}
2376 or @samp{-fugly} specified.
2379 Allow @code{SAVE} of a local variable or array, even after
2380 it has been given an initial value via @code{DATA}, for example.
2383 Introduce an Info version of @code{g77} documentation, which
2384 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
2385 @file{gcc/f/PROJECTS}.
2386 These files will be removed in a future release.
2387 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
2388 @file{gcc/f/NEWS} now are automatically built from
2389 the texinfo source when distributions are made.
2391 This effort was inspired by a first pass at translating
2392 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
2393 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
2396 New @samp{-fno-second-underscore} option to specify
2397 that, when @samp{-funderscoring} is in effect, a second
2398 underscore is not to be appended to Fortran names already
2399 containing an underscore.
2402 Change the way iterative @code{DO} loops work to follow
2404 In particular, calculation of the iteration count is
2405 still done by converting the start, end, and increment
2406 parameters to the type of the @code{DO} variable, but
2407 the result of the calculation is always converted to
2408 the default @code{INTEGER} type.
2410 (This should have no effect on existing code compiled
2411 by @code{g77}, but code written to assume that use
2412 of a @emph{wider} type for the @code{DO} variable
2413 will result in an iteration count being fully calculated
2414 using that wider type (wider
2415 than default @code{INTEGER}) must be rewritten.)
2418 Support @code{gcc} version 2.7.2.
2421 Upgrade to @code{libf2c} as of 1996-03-23, and
2422 fix up some of the build procedures.
2424 Note that the email addresses related to @code{f2c}
2425 have changed---the distribution site now is
2426 named @code{netlib.bell-labs.com}, and the
2427 maintainer's new address is @email{dmg@@bell-labs.com}.
2430 @c 1995-11-18: 0.5.17 released.
2434 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
2435 system's @file{/dev/null} special file if run by user @code{root}.
2437 @strong{All users} of version 0.5.16 should ensure that
2438 they have not removed @file{/dev/null} or replaced it with an ordinary
2439 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
2440 @samp{ls -l /dev/zero}.
2441 If the output isn't basically the
2442 same, contact your system
2443 administrator about restoring @file{/dev/null} to its proper status).
2445 This bug is particularly insidious because removing @file{/dev/null} as
2446 a special file can go undetected for quite a while, aside from
2447 various applications and programs exhibiting sudden, strange
2450 I sincerely apologize for not realizing the
2451 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
2452 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
2453 it is supposed to build (especially if it reports unresolved
2454 references, which it should in this case)!
2457 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
2460 Fix crash that can occur when diagnostics given outside of any
2461 program unit (such as when input file contains @samp{@@foo}).
2464 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
2467 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
2468 and issue clearer error message in cases where target of @code{ASSIGN}
2469 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
2473 Make @code{libf2c} build procedures work on more systems again by
2474 eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}.
2477 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
2478 options to compiler.
2481 Fix failure to always diagnose missing type declaration for
2482 @code{IMPLICIT NONE}.
2485 Fix compile-time performance problem (which could sometimes
2486 crash the compiler, cause a hang, or whatever, due to a bug
2487 in the back end) involving exponentiation with a large @code{INTEGER}
2488 constant for the right-hand operator (e.g. @samp{I**32767}).
2491 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
2492 utility in particular) is properly built using the host compiler.
2495 Add new @samp{-Wsurprising} option to warn about constructs that are
2496 interpreted by the Fortran standard (and @code{g77}) in ways that
2497 are surprising to many programmers.
2500 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
2501 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
2503 @emph{Note:} You should
2504 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
2505 these as generic intrinsics, to improve likelihood of diagnostics
2506 (instead of subtle run-time bugs) when using a compiler that
2507 doesn't support these as intrinsics (e.g. @code{f2c}).
2510 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
2511 with non-@code{INTEGER} index variable; issue that under
2512 @samp{-Wsurprising} instead.
2515 Clarify some diagnostics that say things like ``ignored'' when that's
2519 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
2523 Minor improvements to code generation for various operations on
2524 @code{LOGICAL} operands.
2527 Minor improvement to code generation for some @code{DO} loops on some
2531 Support @code{gcc} version 2.7.1.
2534 Upgrade to @code{libf2c} as of 1995-11-15.
2537 @c 1995-08-30: 0.5.16 released.
2541 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
2542 not involving @code{COMMON}.
2545 Fix code-generation bugs involving invoking ``gratis'' library procedures
2546 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
2547 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
2548 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
2549 @code{DERF()}, and @code{DERFC()}.
2552 Update @code{libf2c} to include netlib patches through 1995-08-16, and
2553 @code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
2554 consistent with other Fortran implementations by outputting
2555 leading zeros in formatted and list-directed output.
2558 Fix a code-generation bug involving adjustable dummy arrays with high
2559 bounds whose primaries are changed during procedure execution, and
2560 which might well improve code-generation performance for such arrays
2561 compared to @code{f2c} plus @code{gcc} (but apparently only when using
2562 @file{gcc-2.7.0} or later).
2565 Fix a code-generation bug involving invocation of @code{COMPLEX} and
2566 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
2567 @code{DOUBLE COMPLEX} divides, when the result
2568 of the invocation or divide is assigned directly to a variable
2569 that overlaps one or more of the arguments to the invocation or divide.
2572 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
2573 nonconstant and the expression is used to dimension a dummy
2574 array, since the @code{gcc} back end does not support the necessary
2575 mechanics (and the @code{gcc} front end rejects the equivalent
2576 construct, as it turns out).
2579 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
2582 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
2583 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
2586 Fix crashes and such involving diagnosed code.
2589 Diagnose, instead of crashing on, statement function definitions
2590 having duplicate dummy argument names.
2593 Fix bug causing rejection of good code involving statement function
2597 Fix bug resulting in debugger not knowing size of local equivalence
2598 area when any member of area has initial value (via @code{DATA},
2602 Fix installation bug that prevented installation of @code{g77} driver.
2603 Provide for easy selection of whether to install copy of @code{g77}
2604 as @code{f77} to replace the broken code.
2607 Fix @code{gcc} driver (affects @code{g77} thereby) to not
2608 gratuitously invoke the
2609 @code{f771} program (e.g. when @samp{-E} is specified).
2612 Fix diagnostic to point to correct source line when it immediately
2613 follows an @code{INCLUDE} statement.
2616 Support more compiler options in @code{gcc}/@code{g77} when
2617 compiling Fortran files.
2618 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
2619 correct setting of version-number macros for preprocessing, full
2620 recognition of @samp{-O0}, and
2621 automatic insertion of configuration-specific linker specs.
2624 Add new intrinsics that interface to existing routines in @code{libf2c}:
2625 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
2626 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
2627 @code{SIGNAL}, and @code{SYSTEM}.
2628 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
2629 @code{SYSTEM} are intrinsic subroutines, not functions (since they
2630 have side effects), so to get the return values from @code{SIGNAL}
2631 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
2632 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
2635 Add new intrinsic group named @code{unix} to contain the new intrinsics,
2636 and by default enable this new group.
2639 Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
2643 Improve @code{g77} so that @samp{g77 -v} by itself (or with
2644 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
2645 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
2646 version info, and so that long-form options @code{gcc} accepts are
2647 understood by @code{g77} as well (even in truncated, unambiguous forms).
2650 Add new @code{g77} option @samp{--driver=name} to specify driver when
2651 default, @code{gcc}, isn't appropriate.
2654 Add support for @samp{#} directives (as output by the preprocessor) in the
2655 compiler, and enable generation of those directives by the
2656 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
2657 info are more useful to users of the preprocessor.
2660 Produce better diagnostics, more like @code{gcc}, with info such as
2661 @samp{In function `foo':} and @samp{In file included from...:}.
2664 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
2667 When @samp{-Wunused} in effect, don't warn about local variables used as
2668 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
2669 variables, even though, strictly speaking, these are not uses
2670 of the variables themselves.
2673 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
2674 at all, since there's no way to turn this off for individual
2675 cases (@code{g77} might someday start warning about these)---applies
2676 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
2677 warn about unused dummy arguments.
2680 New option @samp{-fno-underscoring} that inhibits transformation of names
2681 (by appending one or two underscores) so users may experiment
2682 with implications of such an environment.
2685 Minor improvement to @file{gcc/f/info} module to make it easier to build
2686 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
2687 (but definitely not all machines nor all non-@code{gcc} compilers).
2689 do not report bugs showing problems compilers have with
2690 macros defined in @file{gcc/f/target.h} and used in places like
2691 @file{gcc/f/expr.c}.
2694 Add warning to be printed for each invocation of the compiler
2695 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
2697 since @code{g77} is known to not work well for such cases.
2700 Lots of new documentation (though work is still needed to put it into
2701 canonical GNU format).
2704 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
2705 (by default), to produce
2706 smaller library without lots of debugging clutter.
2709 @c 1995-05-19: 0.5.15 released.
2713 Fix bad code generation involving @samp{X**I} and temporary, internal variables
2714 generated by @code{g77} and the back end (such as for @code{DO} loops).
2717 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
2720 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
2723 Fix crash or other erratic behavior when null character constant
2724 (@samp{''}) is encountered.
2727 Fix crash or other erratic behavior involving diagnosed code.
2730 Fix code generation for external functions returning type @code{REAL} when
2731 the @samp{-ff2c} option is in force (which it is by default) so that
2732 @code{f2c} compatibility is indeed provided.
2735 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
2736 with an array declarator.
2739 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
2741 of a typical fixed-form line, defaulting to 72 columns, such
2742 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
2743 meaning no characters are ignored.
2744 does not affect lines
2745 with @samp{&} in column 1, which are always processed as if
2746 @samp{-ffixed-line-length-none} was in effect.
2749 No longer generate better code for some kinds of array references,
2750 as @code{gcc} back end is to be fixed to do this even better, and it
2751 turned out to slow down some code in some cases after all.
2754 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
2755 values (e.g. via @code{DATA}), uninitialized members now always
2756 initialized to binary zeros (though this is not required by
2757 the standard, and might not be done in future versions
2759 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
2760 (essentially those with members of more than one type), the
2761 uninitialized members were initialized to spaces, to
2762 cater to @code{CHARACTER} types, but it seems no existing code expects
2763 that, while much existing code expects binary zeros.
2769 Don't emit bad code when low bound of adjustable array is nonconstant
2770 and thus might vary as an expression at run time.
2773 Emit correct code for calculation of number of trips in @code{DO} loops
2775 where the loop should not execute at all.
2776 (This bug affected cases
2777 where the difference between the begin and end values was less
2778 than the step count, though probably not for floating-point cases.)
2781 Fix crash when extra parentheses surround item in
2782 @code{DATA} implied-@code{DO} list.
2785 Fix crash over minor internal inconsistencies in handling diagnostics,
2786 just substitute dummy strings where necessary.
2789 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
2792 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
2793 is a string of one or more digits.
2796 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
2799 Fix various crashes involving code with diagnosed errors.
2802 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
2803 @file{header.gcc} facility for handling systems like MS-DOS.
2806 Allow @code{INCLUDE} statement to be continued across multiple lines,
2807 even allow it to coexist with other statements on the same line.
2810 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
2811 fixes a bug involving infinite loops reading EOF with empty list-directed
2815 Remove all the @code{g77}-specific auto-configuration scripts, code,
2817 except for temporary substitutes for bsearch() and strtoul(), as
2818 too many configure/build problems were reported in these areas.
2819 People will have to fix their systems' problems themselves, or at
2820 least somewhere other than @code{g77}, which expects a working ANSI C
2821 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
2824 Complain if initialized common redeclared as larger in subsequent program
2828 Warn if blank common initialized, since its size can vary and hence
2829 related warnings that might be helpful won't be seen.
2832 New @samp{-fbackslash} option, on by default, that causes @samp{\}
2833 within @code{CHARACTER}
2834 and Hollerith constants to be interpreted a la GNU C.
2836 this behavior is somewhat different from @code{f2c}'s, which supports only
2837 a limited subset of backslash (escape) sequences.
2840 Make @samp{-fugly-args} the default.
2843 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
2844 to be specified as initial values for variables or named constants
2845 (@code{PARAMETER}), and also allows character<->numeric conversion in
2846 those contexts---turn off via @samp{-fno-ugly-init}.
2849 New @samp{-finit-local-zero} option to initialize
2850 local variables to binary zeros.
2851 This does not affect whether they are @code{SAVE}d, i.e. made
2852 automatic or static.
2855 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
2857 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
2860 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
2861 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
2862 requires @samp{-O}), and implies @samp{-Wunused} as well.
2865 @samp{-Wunused} no longer gives spurious messages for unused
2866 @code{EXTERNAL} names (since they are assumed to refer to block data
2867 program units, to make use of libraries more reliable).
2870 Support @code{%LOC()} and @code{LOC()} of character arguments.
2873 Support null (zero-length) character constants and expressions.
2876 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
2879 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
2880 character expressions that are valid in assignments but
2881 not normally as actual arguments.
2884 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
2887 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
2888 in @code{BLOCK DATA}, even though these are not allowed by the standard.
2891 Allow @code{RETURN} in main program unit.
2894 Changes to Hollerith-constant support to obey Appendix C of the
2899 Now padded on the right with zeros, not spaces.
2902 Hollerith ``format specifications'' in the form of arrays of
2903 non-character allowed.
2906 Warnings issued when non-space truncation occurs when converting
2910 When specified as actual argument, now passed
2911 by reference to @code{INTEGER} (padded on right with spaces if constant
2912 too small, otherwise fully intact if constant wider the @code{INTEGER}
2913 type) instead of by value.
2916 @strong{Warning:} @code{f2c} differs on the
2917 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
2918 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
2919 as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary
2920 to widen to @code{INTEGER}), essentially.
2923 Changes and fixes to typeless-constant support:
2927 Now treated as a typeless double-length @code{INTEGER} value.
2930 Warnings issued when overflow occurs.
2933 Padded on the left with zeros when converting
2937 Should be properly aligned and ordered on
2938 the target machine for whatever type it is turned into.
2941 When specified as actual argument, now passed as reference to
2942 a default @code{INTEGER} constant.
2946 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
2947 the expression plus a length for the expression just as if
2948 it were a @code{CHARACTER} expression.
2949 For example, @samp{CALL FOO(%DESCR(D))}, where
2950 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
2953 Name of multi-entrypoint master function changed to incorporate
2954 the name of the primary entry point instead of a decimal
2955 value, so the name of the master function for @samp{SUBROUTINE X}
2956 with alternate entry points is now @samp{__g77_masterfun_x}.
2959 Remove redundant message about zero-step-count @code{DO} loops.
2962 Clean up diagnostic messages, shortening many of them.
2965 Fix typo in @code{g77} man page.
2968 Clarify implications of constant-handling bugs in @file{f/BUGS}.
2971 Generate better code for @samp{**} operator with a right-hand operand of
2972 type @code{INTEGER}.
2975 Generate better code for @code{SQRT()} and @code{DSQRT()},
2976 also when @samp{-ffast-math}
2977 specified, enable better code generation for @code{SIN()} and @code{COS()}.
2980 Generate better code for some kinds of array references.
2983 Speed up lexing somewhat (this makes the compilation phase noticeably