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-1999
12 @set last-update-news 1999-07-08
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://www.gnu.org/software/gcc/onlinedocs/g77_news.html}.
152 The following information was last updated on @value{last-update-news}:
154 @heading In development:
158 The @code{TtyNam} intrinsics now set @var{Name} to all spaces (at run time)
159 if the system has no @code{ttyname} implementation available.
164 Upgrade to @code{libf2c} as of 1999-06-28.
166 This fixes a bug whereby
167 input to a @code{NAMELIST} read involving a repeat count,
168 such as @samp{K(5)=10*3},
169 was not properly handled by @code{libf2c}.
170 The first item was written to @samp{K(5)},
171 but the remaining nine were written elsewhere (still within the array),
172 not necessarily starting at @samp{K(6)}.
176 @heading In 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 1.1.2:
180 @code{g77} no longer generates bad code for assignments,
181 or other conversions,
182 of @code{REAL} or @code{COMPLEX} constant expressions
183 to type @code{INTEGER(KIND=2)}
184 (often referred to as @code{INTEGER*8}).
186 For example, @samp{INTEGER*8 J; J = 4E10} now works as documented.
191 @code{g77} no longer truncates @code{INTEGER(KIND=2)}
192 (usually @code{INTEGER*8})
193 subscript expressions when evaluating array references
194 on systems with pointers widers than @code{INTEGER(KIND=1)}
200 @code{g77} no longer generates bad code
201 for an assignment to a @code{COMPLEX} variable or array
202 that partially overlaps one or more of the sources
203 of the same assignment
204 (a very rare construction).
205 It now assigns through a temporary,
206 in cases where such partial overlap is deemed possible.
211 @code{libg2c} (@code{libf2c}) no longer loses track
212 of the file being worked on
213 during a @code{BACKSPACE} operation.
218 @code{libg2c} (@code{libf2c}) fixes a bug whereby
219 input to a @code{NAMELIST} read involving a repeat count,
220 such as @samp{K(5)=10*3},
221 was not properly handled by @code{libf2c}.
222 The first item was written to @samp{K(5)},
223 but the remaining nine were written elsewhere (still within the array),
224 not necessarily starting at @samp{K(6)}.
229 @c Tim Prince reported this, regarding the TEST_FPU benchmark.
230 Automatic arrays now seem to be working on HP-UX systems.
235 The @code{Date} intrinsic now returns the correct result
236 on big-endian systems.
241 Fix @code{g77} so it no longer crashes when compiling
242 I/O statements using keywords that define @code{INTEGER} values,
243 such as @samp{IOSTAT=@var{j}},
244 where @var{j} is other than default @code{INTEGER}
245 (such as @code{INTEGER*2}).
246 Instead, it issues a diagnostic.
251 Fix @code{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/},
252 where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2},
253 instead of producing a spurious diagnostic.
254 Also fix @samp{DATA (A(I),I=1,N)},
255 where @samp{N} is not default @code{INTEGER}
256 to work instead of crashing @code{g77}.
261 The @samp{-ax} option is now obeyed when compiling Fortran programs.
262 (It is passed to the @file{f771} driver.)
266 The new @samp{-fbounds-check} option
267 causes @code{g77} to compile run-time bounds checks
268 of array subscripts, as well as of substring start and end points.
271 @code{libg2c} now supports building as multilibbed library,
272 which provides better support for systems
273 that require options such as @samp{-mieee}
277 Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
278 now are recognized by @code{g77}
279 as if they ended in @samp{.for} and @samp{.fpp}, respectively.
282 The order of arguments to the @emph{subroutine} forms of the
283 @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam}
284 intrinsics has been swapped.
285 The argument serving as the returned value
286 for the corresponding function forms
287 now is the @emph{second} argument,
288 making these consistent with the other subroutine forms
289 of @code{libU77} intrinsics.
292 @code{g77} now warns about a reference to an intrinsic
293 that has an interface that is not Year 2000 (Y2K) compliant.
294 Also, @code{libg2c} has been changed to increase the likelihood
295 of catching references to the implementations of these intrinsics
296 using the @code{EXTERNAL} mechanism
297 (which would avoid the new warnings).
300 @xref{Year 2000 (Y2K) Problems}, for more information.
305 @code{g77} now warns about a reference to a function
306 when the corresponding @emph{subsequent} function program unit
307 disagrees with the reference concerning the type of the function.
311 @samp{-fno-emulate-complex} is now the default option.
312 This should result in improved performance
313 of code that uses the @code{COMPLEX} data type.
316 @cindex double-precision performance
317 @cindex -malign-double
319 The @samp{-malign-double} option
320 now reliably aligns @emph{all} double-precision variables and arrays
321 on Intel x86 targets.
325 Even without the @samp{-malign-double} option,
326 @code{g77} reliably aligns local double-precision variables
327 that are not in @code{EQUIVALENCE} areas
328 and not @code{SAVE}'d.
333 @code{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands
334 instead of generating a run-time call to
335 the @code{libf2c} routines @code{c_div} or @code{z_div},
336 unless the @samp{-Os} option is specified.
340 @code{g77} no longer generates code to maintain @code{errno},
341 a C-language concept,
342 when performing operations such as the @code{SqRt} intrinsic.
346 @code{g77} developers can temporarily use
347 the @samp{-fflatten-arrays} option
348 to compare how the compiler handles code generation
349 using C-like constructs as compared to the
350 Fortran-like method constructs normally used.
355 A substantial portion of the @code{g77} front end's code-generation component
357 It now generates code using facilities more robustly supported
358 by the @code{gcc} back end.
359 One effect of this rewrite is that some codes no longer produce
360 a spurious ``label @var{lab} used before containing binding contour''
365 Support for the @samp{-fugly} option has been removed.
369 Improve documentation and indexing,
370 including information on Year 2000 (Y2K) compliance,
371 and providing more information on internals of the front end.
376 Upgrade to @code{libf2c} as of 1999-05-10.
380 @heading In 0.5.24 versus 0.5.23:
382 There is no @code{g77} version 0.5.24 at this time,
384 0.5.24 is the version number designated for bug fixes and,
385 perhaps, some new features added,
387 Version 0.5.23 requires @code{gcc} 2.8.1,
388 as 0.5.24 was planned to require.
390 Due to @code{EGCS} becoming @code{GCC}
391 (which is now an acronym for ``GNU Compiler Collection''),
392 and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95,
393 there seems to be no need for an actual 0.5.24 release.
395 To reduce the confusion already resulting from use of 0.5.24
396 to designate @code{g77} versions within @code{EGCS} versions 1.0 and 1.1,
397 as well as in versions of @code{g77} documentation and notices
399 ``mainline'' @code{g77} version numbering resumes
400 at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2),
401 skipping over 0.5.24 as a placeholder version number.
403 To repeat, there is no @code{g77} 0.5.24, but there is now a 0.5.25.
404 Please remain calm and return to your keypunch units.
406 @c 1999-03-15: EGCS 1.1.2 released.
407 @heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1:
411 Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
412 so the returned year is in the documented, non-Y2K-compliant range
414 instead of being returned as 100 in the year 2000.
417 @xref{IDate Intrinsic (VXT)},
418 for more information.
422 Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
423 to return the milliseconds value properly
427 Fix the @code{LStat} intrinsic (in @code{libg2c})
428 to return device-ID information properly
432 Improve documentation.
436 @c 1998-12-04: EGCS 1.1.1 released.
437 @heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1:
441 Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation
443 whenever a @code{REWIND} is done.
445 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
446 @code{g77}'s version of @code{libf2c}.)
449 Fix @code{libg2c} so it no longer crashes with a spurious diagnostic
450 upon doing any I/O following a direct formatted write.
452 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
453 @code{g77}'s version of @code{libf2c}.)
456 Fix @code{g77} so it no longer crashes compiling references
457 to the @code{Rand} intrinsic on some systems.
460 Fix @code{g77} portion of installation process so it works
461 better on some systems
462 (those with shells requiring @samp{else true} clauses
463 on @code{if} constructs
464 for the completion code to be set properly).
468 @c 1998-09-03: EGCS 1.1 released.
469 @heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3:
473 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
474 that wrote one byte beyond the end of its @code{CHARACTER}
476 and in the @code{libU77} intrinsics
477 @code{GMTime} and @code{LTime}
478 that overwrote their arguments.
483 Assumed arrays with negative bounds
484 (such as @samp{REAL A(-1:*)})
485 no longer elicit spurious diagnostics from @code{g77},
486 even on systems with pointers having
487 different sizes than integers.
489 This bug is not known to have existed in any
490 recent version of @code{gcc}.
491 It was introduced in an early release of @code{egcs}.
496 Valid combinations of @code{EXTERNAL},
497 passing that external as a dummy argument
498 without explicitly giving it a type,
499 and, in a subsequent program unit,
500 referencing that external as
501 an external function with a different type
502 no longer crash @code{g77}.
507 @code{CASE DEFAULT} no longer crashes @code{g77}.
512 The @samp{-Wunused} option no longer issues a spurious
513 warning about the ``master'' procedure generated by
514 @code{g77} for procedures containing @code{ENTRY} statements.
518 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
519 compile-time constant @code{INTEGER} expression.
522 Fix @code{g77} @samp{-g} option so procedures that
523 use @code{ENTRY} can be stepped through, line by line,
527 Allow any @code{REAL} argument to intrinsics
528 @code{Second} and @code{CPU_Time}.
531 Use @code{tempnam}, if available, to open scratch files
532 (as in @samp{OPEN(STATUS='SCRATCH')})
533 so that the @code{TMPDIR} environment variable,
537 @code{g77}'s version of @code{libf2c} separates out
538 the setting of global state
539 (such as command-line arguments and signal handling)
540 from @file{main.o} into distinct, new library
543 This should make it easier to write portable applications
544 that have their own (non-Fortran) @code{main()} routine
545 properly set up the @code{libf2c} environment, even
546 when @code{libf2c} (now @code{libg2c}) is a shared library.
550 @code{g77} no longer installs the @file{f77} command
551 and @file{f77.1} man page
552 in the @file{/usr} or @file{/usr/local} heirarchy,
553 even if the @file{f77-install-ok} file exists
554 in the source or build directory.
555 See the installation documentation for more information.
560 @code{g77} no longer installs the @file{libf2c.a} library
561 and @file{f2c.h} include file
562 in the @file{/usr} or @file{/usr/local} heirarchy,
563 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
564 in the source or build directory.
565 See the installation documentation for more information.
570 The @file{libf2c.a} library produced by @code{g77} has been
571 renamed to @file{libg2c.a}.
572 It is installed only in the @code{gcc} ``private''
573 directory heirarchy, @file{gcc-lib}.
574 This allows system administrators and users to choose which
575 version of the @code{libf2c} library from @code{netlib} they
576 wish to use on a case-by-case basis.
577 See the installation documentation for more information.
582 The @file{f2c.h} include (header) file produced by @code{g77}
583 has been renamed to @file{g2c.h}.
584 It is installed only in the @code{gcc} ``private''
585 directory heirarchy, @file{gcc-lib}.
586 This allows system administrators and users to choose which
587 version of the include file from @code{netlib} they
588 wish to use on a case-by-case basis.
589 See the installation documentation for more information.
593 The @code{g77} command now expects the run-time library
594 to be named @code{libg2c.a} instead of @code{libf2c.a},
595 to ensure that a version other than the one built and
596 installed as part of the same @code{g77} version is picked up.
600 During the configuration and build process,
601 @code{g77} creates subdirectories it needs only as it
603 Other cleaning up of the configuration and build process
604 has been performed as well.
609 @code{install-info} now used to update the directory of
610 Info documentation to contain an entry for @code{g77}
611 (during installation).
615 Some diagnostics have been changed from warnings to errors,
616 to prevent inadvertent use of the resulting, probably buggy,
618 These mostly include diagnostics about use of unsupported features
619 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
620 @code{WRITE} statements,
621 and about truncations of various sorts of constants.
625 Improve compilation of @code{FORMAT} expressions so that
626 a null byte is appended to the last operand if it
628 This provides a cleaner run-time diagnostic as provided
629 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
634 Improve documentation and indexing.
639 The upgrade to @code{libf2c} as of 1998-06-18
640 should fix a variety of problems, including
641 those involving some uses of the @code{T} format
642 specifier, and perhaps some build (porting) problems
647 @c 1998-09-03: EGCS 1.1 released.
648 @heading In @code{EGCS} 1.1 versus @code{g77} 0.5.23:
652 @cindex stack, 387 coprocessor
656 Fix a code-generation bug that afflicted
657 Intel x86 targets when @samp{-O2} was specified
658 compiling, for example, an old version of
659 the @code{DNRM2} routine.
661 The x87 coprocessor stack was being
662 mismanaged in cases involving assigned @code{GOTO}
668 @code{g77} no longer produces incorrect code
670 for @code{EQUIVALENCE} and @code{COMMON}
671 aggregates that, due to ``unnatural'' ordering of members
672 vis-a-vis their types, require initial padding.
677 Fix @code{g77} crash compiling code
678 containing the construct @samp{CMPLX(0.)} or similar.
683 @code{g77} no longer crashes when compiling code
684 containing specification statements such as
685 @samp{INTEGER(KIND=7) PTR}.
690 @code{g77} no longer crashes when compiling code
691 such as @samp{J = SIGNAL(1, 2)}.
695 @code{g77} now treats @samp{%LOC(@var{expr})} and
696 @samp{LOC(@var{expr})} as ``ordinary'' expressions
697 when they are used as arguments in procedure calls.
698 This change applies only to global (filewide) analysis,
699 making it consistent with
700 how @code{g77} actually generates code
703 Previously, @code{g77} treated these expressions
704 as denoting special ``pointer'' arguments
705 for the purposes of filewide analysis.
710 (or apparently infinite run-time)
711 when compiling certain complicated expressions
712 involving @code{COMPLEX} arithmetic
713 (especially multiplication).
717 @cindex double-precision performance
718 @cindex -malign-double
720 Align static double-precision variables and arrays
722 regardless of whether @samp{-malign-double} is specified.
724 Generally, this affects only local variables and arrays
725 having the @code{SAVE} attribute
726 or given initial values via @code{DATA}.
729 The @code{g77} driver now ensures that @samp{-lg2c}
730 is specified in the link phase prior to any
731 occurrence of @samp{-lm}.
732 This prevents accidentally linking to a routine
733 in the SunOS4 @samp{-lm} library
734 when the generated code wants to link to the one
735 in @code{libf2c} (@code{libg2c}).
738 @code{g77} emits more debugging information when
741 This new information allows, for example,
742 @kbd{which __g77_length_a} to be used in @code{gdb}
743 to determine the type of the phantom length argument
744 supplied with @code{CHARACTER} variables.
746 This information pertains to internally-generated
747 type, variable, and other information,
748 not to the longstanding deficiencies vis-a-vis
749 @code{COMMON} and @code{EQUIVALENCE}.
752 The F90 @code{Date_and_Time} intrinsic now is
756 The F90 @code{System_Clock} intrinsic allows
757 the optional arguments (except for the @code{Count}
758 argument) to be omitted.
762 Upgrade to @code{libf2c} as of 1998-06-18.
767 Improve documentation and indexing.
772 @heading In previous versions:
774 Information on previous versions is not provided
775 in this @file{@value{path-g77}/NEWS} file,
777 See @file{@value{path-g77}/news.texi},
778 or any of its other derivations
779 (Info, HTML, dvi forms)
780 for such information.
784 @c 1998-05-20: 0.5.23 released.
785 @heading In 0.5.23 versus 0.5.22:
788 This release contains several regressions against
789 version 0.5.22 of @code{g77}, due to using the
790 ``vanilla'' @code{gcc} back end instead of patching
791 it to fix a few bugs and improve performance in a
794 Features that have been dropped from this version
795 of @code{g77} due to their being implemented
796 via @code{g77}-specific patches to the @code{gcc}
797 back end in previous releases include:
801 Support for @code{__restrict__} keyword,
802 the options @samp{-fargument-alias}, @samp{-fargument-noalias},
803 and @samp{-fargument-noalias-global},
804 and the corresponding alias-analysis code.
806 (@code{egcs} has the alias-analysis
807 code, but not the @code{__restrict__} keyword.
808 @code{egcs} @code{g77} users benefit from the alias-analysis
809 code despite the lack of the @code{__restrict__} keyword,
810 which is a C-language construct.)
813 Support for the GNU compiler options
814 @samp{-fmove-all-movables},
815 @samp{-freduce-all-givs},
816 and @samp{-frerun-loop-opt}.
818 (@code{egcs} supports these options.
819 @code{g77} users of @code{egcs} benefit from them even if
820 they are not explicitly specified,
821 because the defaults are optimized for @code{g77} users.)
824 Support for the @samp{-W} option warning about
825 integer division by zero.
828 The Intel x86-specific option @samp{-malign-double}
829 applying to stack-allocated data
830 as well as statically-allocate data.
834 Note that the @file{gcc/f/gbe/} subdirectory has been removed
835 from this distribution as a result of @code{g77} no longer
836 including patches for the @code{gcc} back end.
841 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
842 that wrote one byte beyond the end of its @code{CHARACTER}
844 and in the @code{libU77} intrinsics
845 @code{GMTime} and @code{LTime}
846 that overwrote their arguments.
850 Support @code{gcc} version 2.8,
851 and remove support for prior versions of @code{gcc}.
853 @cindex -@w{}-driver option
854 @cindex @code{g77} options, -@w{}-driver
855 @cindex options, -@w{}-driver
857 Remove support for the @samp{--driver} option,
858 as @code{g77} now does all the driving,
859 just like @code{gcc}.
863 @code{CASE DEFAULT} no longer crashes @code{g77}.
868 Valid combinations of @code{EXTERNAL},
869 passing that external as a dummy argument
870 without explicitly giving it a type,
871 and, in a subsequent program unit,
872 referencing that external as
873 an external function with a different type
874 no longer crash @code{g77}.
879 @code{g77} no longer installs the @file{f77} command
880 and @file{f77.1} man page
881 in the @file{/usr} or @file{/usr/local} heirarchy,
882 even if the @file{f77-install-ok} file exists
883 in the source or build directory.
884 See the installation documentation for more information.
889 @code{g77} no longer installs the @file{libf2c.a} library
890 and @file{f2c.h} include file
891 in the @file{/usr} or @file{/usr/local} heirarchy,
892 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
893 in the source or build directory.
894 See the installation documentation for more information.
899 The @file{libf2c.a} library produced by @code{g77} has been
900 renamed to @file{libg2c.a}.
901 It is installed only in the @code{gcc} ``private''
902 directory heirarchy, @file{gcc-lib}.
903 This allows system administrators and users to choose which
904 version of the @code{libf2c} library from @code{netlib} they
905 wish to use on a case-by-case basis.
906 See the installation documentation for more information.
911 The @file{f2c.h} include (header) file produced by @code{g77}
912 has been renamed to @file{g2c.h}.
913 It is installed only in the @code{gcc} ``private''
914 directory heirarchy, @file{gcc-lib}.
915 This allows system administrators and users to choose which
916 version of the include file from @code{netlib} they
917 wish to use on a case-by-case basis.
918 See the installation documentation for more information.
922 The @code{g77} command now expects the run-time library
923 to be named @code{libg2c.a} instead of @code{libf2c.a},
924 to ensure that a version other than the one built and
925 installed as part of the same @code{g77} version is picked up.
929 The @samp{-Wunused} option no longer issues a spurious
930 warning about the ``master'' procedure generated by
931 @code{g77} for procedures containing @code{ENTRY} statements.
935 @code{g77}'s version of @code{libf2c} separates out
936 the setting of global state
937 (such as command-line arguments and signal handling)
938 from @file{main.o} into distinct, new library
941 This should make it easier to write portable applications
942 that have their own (non-Fortran) @code{main()} routine
943 properly set up the @code{libf2c} environment, even
944 when @code{libf2c} (now @code{libg2c}) is a shared library.
948 During the configuration and build process,
949 @code{g77} creates subdirectories it needs only as it
950 needs them, thus avoiding unnecessary creation of, for example,
951 @file{stage1/f/runtime} when doing a non-bootstrap build.
952 Other cleaning up of the configuration and build process
953 has been performed as well.
958 @code{install-info} now used to update the directory of
959 Info documentation to contain an entry for @code{g77}
960 (during installation).
964 Some diagnostics have been changed from warnings to errors,
965 to prevent inadvertent use of the resulting, probably buggy,
967 These mostly include diagnostics about use of unsupported features
968 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
969 @code{WRITE} statements,
970 and about truncations of various sorts of constants.
974 Improve documentation and indexing.
979 Upgrade to @code{libf2c} as of 1998-04-20.
981 This should fix a variety of problems, including
982 those involving some uses of the @code{T} format
983 specifier, and perhaps some build (porting) problems
988 @c 1998-03-16: 0.5.22 released.
989 @heading In 0.5.22 versus 0.5.21:
993 Fix code generation for iterative @code{DO} loops that
994 have one or more references to the iteration variable,
995 or to aliases of it, in their control expressions.
996 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1001 @cindex stack, 387 coprocessor
1005 Fix a code-generation bug that afflicted
1006 Intel x86 targets when @samp{-O2} was specified
1007 compiling, for example, an old version of
1008 the @code{DNRM2} routine.
1010 The x87 coprocessor stack was being
1011 mismanaged in cases involving assigned @code{GOTO}
1015 @ifclear USERVISONLY
1017 Fix @code{DTime} intrinsic so as not to truncate
1018 results to integer values (on some systems).
1022 Fix @code{Signal} intrinsic so it offers portable
1023 support for 64-bit systems (such as Digital Alphas
1026 @ifclear USERVISONLY
1028 Fix run-time crash involving @code{NAMELIST} on 64-bit
1029 machines such as Alphas.
1032 @ifclear USERVISONLY
1034 Fix @code{g77} version of @code{libf2c} so it no longer
1035 produces a spurious @samp{I/O recursion} diagnostic at run time
1036 when an I/O operation (such as @samp{READ *,I}) is interrupted
1037 in a manner that causes the program to be terminated
1038 via the @code{f_exit} routine (such as via @kbd{C-c}).
1041 @ifclear USERVISONLY
1043 Fix @code{g77} crash triggered by @code{CASE} statement with
1044 an omitted lower or upper bound.
1047 @ifclear USERVISONLY
1049 Fix @code{g77} crash compiling references to @code{CPU_Time}
1053 @ifclear USERVISONLY
1055 Fix @code{g77} crash
1056 (or apparently infinite run-time)
1057 when compiling certain complicated expressions
1058 involving @code{COMPLEX} arithmetic
1059 (especially multiplication).
1062 @ifclear USERVISONLY
1064 Fix @code{g77} crash on statements such as
1065 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1066 @samp{Z} is @code{DOUBLE COMPLEX}.
1069 @ifclear USERVISONLY
1071 Fix a @code{g++} crash.
1075 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
1076 compile-time constant @code{INTEGER} expression.
1079 Fix @code{g77} @samp{-g} option so procedures that
1080 use @code{ENTRY} can be stepped through, line by line,
1083 @ifclear USERVISONLY
1085 Fix a profiling-related bug in @code{gcc} back end for
1086 Intel x86 architecture.
1090 Allow any @code{REAL} argument to intrinsics
1091 @code{Second} and @code{CPU_Time}.
1094 Allow any numeric argument to intrinsics
1095 @code{Int2} and @code{Int8}.
1098 Use @code{tempnam}, if available, to open scratch files
1099 (as in @samp{OPEN(STATUS='SCRATCH')})
1100 so that the @code{TMPDIR} environment variable,
1101 if present, is used.
1104 Rename the @code{gcc} keyword @code{restrict} to
1105 @code{__restrict__}, to avoid rejecting valid, existing,
1107 Support for @code{restrict} is now more like support
1110 @ifclear USERVISONLY
1112 Fix @samp{-fpedantic} to not reject procedure invocations
1113 such as @samp{I=J()} and @samp{CALL FOO()}.
1117 Fix @samp{-fugly-comma} to affect invocations of
1118 only external procedures.
1119 Restore rejection of gratuitous trailing omitted
1120 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1123 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1124 @samp{-fbadu77-intrinsics-*} options.
1126 @ifclear USERVISONLY
1128 Improve diagnostic messages from @code{libf2c}
1129 so it is more likely that the printing of the
1130 active format string is limited to the string,
1131 with no trailing garbage being printed.
1133 (Unlike @code{f2c}, @code{g77} did not append
1134 a null byte to its compiled form of every
1135 format string specified via a @code{FORMAT} statement.
1136 However, @code{f2c} would exhibit the problem
1137 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1138 by printing @samp{(I)garbage} as the format string.)
1141 @ifclear USERVISONLY
1143 Improve compilation of @code{FORMAT} expressions so that
1144 a null byte is appended to the last operand if it
1146 This provides a cleaner run-time diagnostic as provided
1147 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
1150 @ifclear USERVISONLY
1152 Fix various crashes involving code with diagnosed errors.
1155 @ifclear USERVISONLY
1157 Fix cross-compilation bug when configuring @code{libf2c}.
1160 @ifclear USERVISONLY
1162 Improve diagnostics.
1165 @ifclear USERVISONLY
1167 Improve documentation and indexing.
1170 @ifclear USERVISONLY
1172 Upgrade to @code{libf2c} as of 1997-09-23.
1173 This fixes a formatted-I/O bug that afflicted
1174 64-bit systems with 32-bit integers
1175 (such as Digital Alpha running GNU/Linux).
1179 @c 1998-03-18: EGCS 1.0.2 released.
1180 @heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1:
1182 @ifclear USERVISONLY
1184 Fix @code{g77} crash triggered by @code{CASE} statement with
1185 an omitted lower or upper bound.
1188 @ifclear USERVISONLY
1190 Fix @code{g77} crash on statements such as
1191 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1192 @samp{Z} is @code{DOUBLE COMPLEX}.
1195 @ifclear USERVISONLY
1197 @cindex support, ELF
1198 @cindex -fPIC option
1199 @cindex options, -fPIC
1201 Fix @samp{-fPIC} (such as compiling for ELF targets)
1202 on the Intel x86 architecture target
1203 so invalid assembler code is no longer produced.
1206 @ifclear USERVISONLY
1208 Fix @samp{-fpedantic} to not reject procedure invocations
1209 such as @samp{I=J()} and @samp{CALL FOO()}.
1212 @ifclear USERVISONLY
1214 Fix @samp{-fugly-comma} to affect invocations of
1215 only external procedures.
1216 Restore rejection of gratuitous trailing omitted
1217 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1221 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1222 @samp{-fbadu77-intrinsics-*} options.
1225 @c 1998-01-06: EGCS 1.0.1 released.
1226 @heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0:
1227 @ifclear USERVISONLY
1230 Fix run-time crash involving @code{NAMELIST} on 64-bit
1231 machines such as Alphas.
1235 @c 1997-12-03: EGCS 1.0 released.
1236 @heading In @code{EGCS} 1.0 versus @code{g77} 0.5.21:
1239 Version 1.0 of @code{egcs}
1240 contains several regressions against
1241 version 0.5.21 of @code{g77},
1243 ``vanilla'' @code{gcc} back end instead of patching
1244 it to fix a few bugs and improve performance in a
1247 Features that have been dropped from this version
1248 of @code{g77} due to their being implemented
1249 via @code{g77}-specific patches to the @code{gcc}
1250 back end in previous releases include:
1254 Support for the C-language @code{restrict} keyword.
1257 Support for the @samp{-W} option warning about
1258 integer division by zero.
1261 The Intel x86-specific option @samp{-malign-double}
1262 applying to stack-allocated data
1263 as well as statically-allocate data.
1266 @ifclear USERVISONLY
1267 Note that the @file{gcc/f/gbe/} subdirectory has been removed
1268 from this distribution as a result of @code{g77}
1269 being fully integrated with
1270 the @code{egcs} variant of the @code{gcc} back end.
1273 @ifclear USERVISONLY
1275 Fix code generation for iterative @code{DO} loops that
1276 have one or more references to the iteration variable,
1277 or to aliases of it, in their control expressions.
1278 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1281 @ifclear USERVISONLY
1283 Fix @code{DTime} intrinsic so as not to truncate
1284 results to integer values (on some systems).
1287 @ifclear USERVISONLY
1289 @c Toon Moene discovered these.
1290 Some Fortran code, miscompiled
1291 by @code{g77} built on @code{gcc} version 2.8.1
1292 on m68k-next-nextstep3 configurations
1293 when using the @samp{-O2} option,
1294 is now compiled correctly.
1295 It is believed that a C function known to miscompile
1296 on that configuration
1297 when using the @samp{-O2 -funroll-loops} options
1298 also is now compiled correctly.
1301 @ifclear USERVISONLY
1303 Remove support for non-@code{egcs} versions of @code{gcc}.
1306 @cindex -@w{}-driver option
1307 @cindex @code{g77} options, -@w{}-driver
1308 @cindex options, -@w{}-driver
1310 Remove support for the @samp{--driver} option,
1311 as @code{g77} now does all the driving,
1312 just like @code{gcc}.
1315 Allow any numeric argument to intrinsics
1316 @code{Int2} and @code{Int8}.
1318 @ifclear USERVISONLY
1320 Improve diagnostic messages from @code{libf2c}
1321 so it is more likely that the printing of the
1322 active format string is limited to the string,
1323 with no trailing garbage being printed.
1325 (Unlike @code{f2c}, @code{g77} did not append
1326 a null byte to its compiled form of every
1327 format string specified via a @code{FORMAT} statement.
1328 However, @code{f2c} would exhibit the problem
1329 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1330 by printing @samp{(I)garbage} as the format string.)
1333 @ifclear USERVISONLY
1335 Upgrade to @code{libf2c} as of 1997-09-23.
1336 This fixes a formatted-I/O bug that afflicted
1337 64-bit systems with 32-bit integers
1338 (such as Digital Alpha running GNU/Linux).
1342 @c 1997-09-09: 0.5.21 released.
1345 @ifclear USERVISONLY
1347 Fix a code-generation bug introduced by 0.5.20
1348 caused by loop unrolling (by specifying
1349 @samp{-funroll-loops} or similar).
1350 This bug afflicted all code compiled by
1351 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1352 Fortran, and so on).
1355 @ifclear USERVISONLY
1357 Fix a code-generation bug manifested when
1358 combining local @code{EQUIVALENCE} with a
1359 @code{DATA} statement that follows
1360 the first executable statement (or is
1361 treated as an executable-context statement
1362 as a result of using the @samp{-fpedantic}
1366 @ifclear USERVISONLY
1368 Fix a compiler crash that occured when an
1369 integer division by a constant zero is detected.
1370 Instead, when the @samp{-W} option is specified,
1371 the @code{gcc} back end issues a warning about such a case.
1372 This bug afflicted all code compiled by
1373 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1374 Fortran, and so on).
1378 When the @samp{-W} option is specified, @code{gcc}, @code{g77},
1379 and other GNU compilers that incorporate the @code{gcc}
1380 back end as modified by @code{g77}, issue
1381 a warning about integer division by constant zero.
1384 @ifclear USERVISONLY
1386 Fix a compiler crash that occurred in some cases
1387 of procedure inlining.
1388 (Such cases became more frequent in 0.5.20.)
1391 @ifclear USERVISONLY
1393 Fix a compiler crash resulting from using @code{DATA}
1394 or similar to initialize a @code{COMPLEX} variable or
1398 @ifclear USERVISONLY
1400 Fix compiler crashes involving use of @code{AND}, @code{OR},
1401 or @code{XOR} intrinsics.
1404 @ifclear USERVISONLY
1406 Fix compiler bug triggered when using a @code{COMMON}
1407 or @code{EQUIVALENCE} variable
1408 as the target of an @code{ASSIGN}
1409 or assigned-@code{GOTO} statement.
1412 @ifclear USERVISONLY
1414 Fix compiler crashes due to using the name of a some
1415 non-standard intrinsics (such as @code{FTell} or
1416 @code{FPutC}) as such and as the name of a procedure
1418 Such dual use of a name in a program is allowed by
1422 @c @code{g77}'s version of @code{libf2c} has been modified
1423 @c so that the external names of library's procedures do not
1424 @c conflict with names used for Fortran procedures compiled
1426 @c An additional layer of jacket procedures has been added
1427 @c to @code{libf2c} to map the old names to the new names,
1428 @c for automatic use by programs that interface to the
1429 @c library procedures via the external-procedure mechanism.
1431 @c For example, the intrinsic @code{FPUTC} previously was
1432 @c implemented by @code{g77} as a call to the @code{libf2c}
1433 @c routine @code{fputc_}.
1434 @c This would conflict with a Fortran procedure named @code{FPUTC}
1435 @c (using default compiler options), and this conflict
1436 @c would cause a crash under certain circumstances.
1438 @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
1439 @c which does not conflict with the @code{fputc_} external
1440 @c that implements a Fortran procedure named @code{FPUTC}.
1442 @c Programs that refer to @code{FPUTC} as an external procedure
1443 @c without supplying their own implementation will link to
1444 @c the new @code{libf2c} routine @code{fputc_}, which is
1445 @c simply a jacket routine that calls @code{G77_fputc_0}.
1447 @ifclear USERVISONLY
1449 Place automatic arrays on the stack, even if
1450 @code{SAVE} or the @samp{-fno-automatic} option
1452 This avoids a compiler crash in some cases.
1455 @ifclear USERVISONLY
1457 The @samp{-malign-double} option now reliably aligns
1458 @code{DOUBLE PRECISION} optimally on Pentium and
1459 Pentium Pro architectures (586 and 686 in @code{gcc}).
1463 New option @samp{-Wno-globals} disables warnings
1464 about ``suspicious'' use of a name both as a global
1465 name and as the implicit name of an intrinsic, and
1466 warnings about disagreements over the number or natures of
1467 arguments passed to global procedures, or the
1468 natures of the procedures themselves.
1470 The default is to issue such warnings, which are
1471 new as of this version of @code{g77}.
1474 New option @samp{-fno-globals} disables diagnostics
1475 about potentially fatal disagreements
1476 analysis problems, such as disagreements over the
1477 number or natures of arguments passed to global
1478 procedures, or the natures of those procedures themselves.
1480 The default is to issue such diagnostics and flag
1481 the compilation as unsuccessful.
1482 With this option, the diagnostics are issued as
1483 warnings, or, if @samp{-Wno-globals} is specified,
1484 are not issued at all.
1486 This option also disables inlining of global procedures,
1487 to avoid compiler crashes resulting from coding errors
1488 that these diagnostics normally would identify.
1490 @ifclear USERVISONLY
1492 Diagnose cases where a reference to a procedure
1493 disagrees with the type of that procedure, or
1494 where disagreements about the number or nature
1496 This avoids a compiler crash.
1499 @ifclear USERVISONLY
1501 Fix parsing bug whereby @code{g77} rejected a
1502 second initialization specification immediately
1503 following the first's closing @samp{/} without
1504 an intervening comma in a @code{DATA} statement,
1505 and the second specification was an implied-DO list.
1508 @ifclear USERVISONLY
1510 Improve performance of the @code{gcc} back end so
1511 certain complicated expressions involving @code{COMPLEX}
1512 arithmetic (especially multiplication) don't appear to
1513 take forever to compile.
1516 @ifclear USERVISONLY
1518 Fix a couple of profiling-related bugs in @code{gcc}
1522 @ifclear USERVISONLY
1524 Integrate GNU Ada's (GNAT's) changes to the back end,
1525 which consist almost entirely of bug fixes.
1526 These fixes are circa version 3.10p of GNAT.
1529 @ifclear USERVISONLY
1531 Include some other @code{gcc} fixes that seem useful in
1532 @code{g77}'s version of @code{gcc}.
1533 (See @file{gcc/ChangeLog} for details---compare it
1534 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
1539 Fix @code{libU77} routines that accept file and other names
1540 to strip trailing blanks from them, for consistency
1541 with other implementations.
1542 Blanks may be forcibly appended to such names by
1543 appending a single null character (@samp{CHAR(0)})
1544 to the significant trailing blanks.
1547 Fix @code{CHMOD} intrinsic to work with file names
1548 that have embedded blanks, commas, and so on.
1551 Fix @code{SIGNAL} intrinsic so it accepts an
1552 optional third @code{Status} argument.
1554 @ifclear USERVISONLY
1556 Fix @code{IDATE()} intrinsic subroutine (VXT form)
1557 so it accepts arguments in the correct order.
1558 Documentation fixed accordingly, and for
1559 @code{GMTIME()} and @code{LTIME()} as well.
1563 Make many changes to @code{libU77} intrinsics to
1564 support existing code more directly.
1566 Such changes include allowing both subroutine and
1567 function forms of many routines, changing @code{MCLOCK()}
1568 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
1569 introducing @code{MCLOCK8()} and @code{TIME8()} to
1570 return @code{INTEGER(KIND=2)} values,
1571 and placing functions that are intended to perform
1572 side effects in a new intrinsic group, @code{badu77}.
1574 @ifclear USERVISONLY
1576 Improve @code{libU77} so it is more portable.
1580 Add options @samp{-fbadu77-intrinsics-delete},
1581 @samp{-fbadu77-intrinsics-hide}, and so on.
1583 @ifclear USERVISONLY
1585 Fix crashes involving diagnosed or invalid code.
1588 @ifclear USERVISONLY
1590 @code{g77} and @code{gcc} now do a somewhat better
1591 job detecting and diagnosing arrays that are too
1592 large to handle before these cause diagnostics
1593 during the assembler or linker phase, a compiler
1594 crash, or generation of incorrect code.
1597 @ifclear USERVISONLY
1599 Make some fixes to alias analysis code.
1602 @ifclear USERVISONLY
1604 Add support for @code{restrict} keyword in @code{gcc}
1608 @ifclear USERVISONLY
1610 Support @code{gcc} version 2.7.2.3
1611 (modified by @code{g77} into version 2.7.2.3.f.1),
1613 support for prior versions of @code{gcc}.
1616 @ifclear USERVISONLY
1618 Incorporate GNAT's patches to the @code{gcc} back
1619 end into @code{g77}'s, so GNAT users do not need
1620 to apply GNAT's patches to build both GNAT and @code{g77}
1621 from the same source tree.
1624 @ifclear USERVISONLY
1626 Modify @code{make} rules and related code so that
1627 generation of Info documentation doesn't require
1628 compilation using @code{gcc}.
1629 Now, any ANSI C compiler should be adequate to
1630 produce the @code{g77} documentation (in particular,
1631 the tables of intrinsics) from scratch.
1635 Add @code{INT2} and @code{INT8} intrinsics.
1638 Add @code{CPU_TIME} intrinsic.
1641 Add @code{ALARM} intrinsic.
1644 @code{CTIME} intrinsic now accepts any @code{INTEGER}
1645 argument, not just @code{INTEGER(KIND=2)}.
1647 @ifclear USERVISONLY
1649 Warn when explicit type declaration disagrees with
1650 the type of an intrinsic invocation.
1653 @ifclear USERVISONLY
1655 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
1658 @ifclear USERVISONLY
1660 Fix typo in @code{make} rule @code{g77-cross}, used only for
1664 @ifclear USERVISONLY
1666 Fix @code{libf2c} build procedure to re-archive library
1667 if previous attempt to archive was interrupted.
1670 @ifclear USERVISONLY
1672 Change @code{gcc} to unroll loops only during the last
1673 invocation (of as many as two invocations) of loop
1677 @ifclear USERVISONLY
1679 Improve handling of @samp{-fno-f2c} so that code that
1680 attempts to pass an intrinsic as an actual argument,
1681 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
1682 that the run-time-library routine is, effectively,
1683 compiled with @samp{-ff2c} in effect.
1686 @ifclear USERVISONLY
1688 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
1689 as an option that inhibits linking, just like @samp{-c} or
1690 @samp{-S}, and to recognize and properly handle the
1691 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
1692 and @samp{-Xlinker} options.
1695 @ifclear USERVISONLY
1697 Upgrade to @code{libf2c} as of 1997-08-16.
1700 @ifclear USERVISONLY
1702 Modify @code{libf2c} to consistently and clearly diagnose
1703 recursive I/O (at run time).
1707 @code{g77} driver now prints version information (such as produced
1708 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
1711 The @samp{.r} suffix now designates a Ratfor source file,
1712 to be preprocessed via the @code{ratfor} command, available
1715 @ifclear USERVISONLY
1717 Fix some aspects of how @code{gcc} determines what kind of
1718 system is being configured and what kinds are supported.
1719 For example, GNU Linux/Alpha ELF systems now are directly
1723 @ifclear USERVISONLY
1725 Improve diagnostics.
1728 @ifclear USERVISONLY
1730 Improve documentation and indexing.
1733 @ifclear USERVISONLY
1735 Include all pertinent files for @code{libf2c} that come
1736 from @code{netlib.bell-labs.com}; give any such files
1737 that aren't quite accurate in @code{g77}'s version of
1738 @code{libf2c} the suffix @samp{.netlib}.
1741 @ifclear USERVISONLY
1743 Reserve @code{INTEGER(KIND=0)} for future use.
1747 @c 1997-02-28: 0.5.20 released.
1751 The @samp{-fno-typeless-boz} option is now the default.
1753 This option specifies that non-decimal-radix
1754 constants using the prefixed-radix form (such as @samp{Z'1234'})
1755 are to be interpreted as @code{INTEGER(KIND=1)} constants.
1756 Specify @samp{-ftypeless-boz} to cause such
1757 constants to be interpreted as typeless.
1759 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
1763 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect},
1764 for information on the @samp{-ftypeless-boz} option.
1768 Options @samp{-ff90-intrinsics-enable} and
1769 @samp{-fvxt-intrinsics-enable} now are the
1772 Some programs might use names that clash with
1773 intrinsic names defined (and now enabled) by these
1774 options or by the new @code{libU77} intrinsics.
1775 Users of such programs might need to compile them
1776 differently (using, for example, @samp{-ff90-intrinsics-disable})
1777 or, better yet, insert appropriate @code{EXTERNAL}
1778 statements specifying that these names are not intended
1779 to be names of intrinsics.
1782 The @code{ALWAYS_FLUSH} macro is no longer defined when
1783 building @code{libf2c}, which should result in improved
1784 I/O performance, especially over NFS.
1786 @emph{Note:} If you have code that depends on the behavior
1787 of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
1788 you will have to modify @code{libf2c} accordingly before
1789 building it from this and future versions of @code{g77}.
1792 @xref{Output Assumed To Flush}, for more information.
1796 Dave Love's implementation of @code{libU77} has been
1797 added to the version of @code{libf2c} distributed with
1798 and built as part of @code{g77}.
1799 @code{g77} now knows about the routines in this library
1803 New option @samp{-fvxt} specifies that the
1804 source file is written in VXT Fortran, instead of GNU Fortran.
1807 @xref{VXT Fortran}, for more information on the constructs
1808 recognized when the @samp{-fvxt} option is specified.
1812 The @samp{-fvxt-not-f90} option has been deleted,
1813 along with its inverse, @samp{-ff90-not-vxt}.
1815 If you used one of these deleted options, you should
1816 re-read the pertinent documentation to determine which
1817 options, if any, are appropriate for compiling your
1818 code with this version of @code{g77}.
1821 @xref{Other Dialects}, for more information.
1825 The @samp{-fugly} option now issues a warning, as it
1826 likely will be removed in a future version.
1828 (Enabling all the @samp{-fugly-*} options is unlikely
1829 to be feasible, or sensible, in the future,
1830 so users should learn to specify only those
1831 @samp{-fugly-*} options they really need for a
1832 particular source file.)
1835 The @samp{-fugly-assumed} option, introduced in
1836 version 0.5.19, has been changed to
1837 better accommodate old and new code.
1840 @xref{Ugly Assumed-Size Arrays}, for more information.
1843 @ifclear USERVISONLY
1845 Make a number of fixes to the @code{g77} front end and
1846 the @code{gcc} back end to better support Alpha (AXP)
1848 This includes providing at least one bug-fix to the
1849 @code{gcc} back end for Alphas.
1853 Related to supporting Alpha (AXP) machines, the @code{LOC()}
1854 intrinsic and @code{%LOC()} construct now return
1855 values of @code{INTEGER(KIND=0)} type,
1856 as defined by the GNU Fortran language.
1858 This type is wide enough
1859 (holds the same number of bits)
1860 as the character-pointer type on the machine.
1862 On most machines, this won't make a difference,
1863 whereas, on Alphas and other systems with 64-bit pointers,
1864 the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)}
1865 (often referred to as @code{INTEGER*8})
1866 instead of the more common @code{INTEGER(KIND=1)}
1867 (often referred to as @code{INTEGER*4}).
1870 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
1871 end, to avoid bugs in @code{complex} support in the
1872 @code{gcc} back end.
1873 New option @samp{-fno-emulate-complex}
1874 causes @code{g77} to revert the 0.5.19 behavior.
1876 @ifclear USERVISONLY
1878 Fix bug whereby @samp{REAL A(1)}, for example, caused
1879 a compiler crash if @samp{-fugly-assumed} was in effect
1880 and @var{A} was a local (automatic) array.
1881 That case is no longer affected by the new
1882 handling of @samp{-fugly-assumed}.
1885 @ifclear USERVISONLY
1887 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
1888 no longer deletes @file{foo.f} before issuing other
1889 diagnostics, and so the @samp{-x} option is properly
1893 @ifclear USERVISONLY
1895 Enable inlining of subroutines and functions by the @code{gcc}
1897 This works as it does for @code{gcc} itself---program units
1898 may be inlined for invocations that follow them in the same
1899 program unit, as long as the appropriate compile-time
1900 options are specified.
1904 Dummy arguments are no longer assumed to potentially alias
1906 other dummy arguments or @code{COMMON} areas when any of
1907 these are defined (assigned to) by Fortran code.
1909 This can result in faster and/or smaller programs when
1910 compiling with optimization enabled, though on some
1911 systems this effect is observed only when @samp{-fforce-addr}
1914 New options @samp{-falias-check}, @samp{-fargument-alias},
1915 @samp{-fargument-noalias},
1916 and @samp{-fno-argument-noalias-global} control the
1917 way @code{g77} handles potential aliasing.
1920 @xref{Aliasing Assumed To Work}, for detailed information on why the
1921 new defaults might result in some programs no longer working the way they
1922 did when compiled by previous versions of @code{g77}.
1925 @ifclear USERVISONLY
1927 The @code{CONJG()} and @code{DCONJG()} intrinsics now
1928 are compiled in-line.
1931 @ifclear USERVISONLY
1933 The bug-fix for 0.5.19.1 has been re-done.
1934 The @code{g77} compiler has been changed back to
1935 assume @code{libf2c} has no aliasing problems in
1936 its implementations of the @code{COMPLEX} (and
1937 @code{DOUBLE COMPLEX}) intrinsics.
1938 The @code{libf2c} has been changed to have no such
1941 As a result, 0.5.20 is expected to offer improved performance
1942 over 0.5.19.1, perhaps as good as 0.5.19 in most
1943 or all cases, due to this change alone.
1945 @emph{Note:} This change requires version 0.5.20 of
1946 @code{libf2c}, at least, when linking code produced
1947 by any versions of @code{g77} other than 0.5.19.1.
1948 Use @samp{g77 -v} to determine the version numbers
1949 of the @code{libF77}, @code{libI77}, and @code{libU77}
1950 components of the @code{libf2c} library.
1951 (If these version numbers are not printed---in
1952 particular, if the linker complains about unresolved
1953 references to names like @samp{g77__fvers__}---that
1954 strongly suggests your installation has an obsolete
1955 version of @code{libf2c}.)
1959 New option @samp{-fugly-assign} specifies that the
1960 same memory locations are to be used to hold the
1961 values assigned by both statements @samp{I = 3} and
1962 @samp{ASSIGN 10 TO I}, for example.
1963 (Normally, @code{g77} uses a separate memory location
1964 to hold assigned statement labels.)
1967 @xref{Ugly Assigned Labels}, for more information.
1971 @code{FORMAT} and @code{ENTRY} statements now are allowed to
1972 precede @code{IMPLICIT NONE} statements.
1974 @ifclear USERVISONLY
1976 Produce diagnostic for unsupported @code{SELECT CASE} on
1977 @code{CHARACTER} type, instead of crashing, at compile time.
1980 @ifclear USERVISONLY
1982 Fix crashes involving diagnosed or invalid code.
1985 @ifclear USERVISONLY
1987 Change approach to building @code{libf2c} archive
1988 (@file{libf2c.a}) so that members are added to it
1989 only when truly necessary, so the user that installs
1990 an already-built @code{g77} doesn't need to have write
1991 access to the build tree (whereas the user doing the
1992 build might not have access to install new software
1996 @ifclear USERVISONLY
1998 Support @code{gcc} version 2.7.2.2
1999 (modified by @code{g77} into version 2.7.2.2.f.2),
2001 support for prior versions of @code{gcc}.
2004 @ifclear USERVISONLY
2006 Upgrade to @code{libf2c} as of 1997-02-08, and
2007 fix up some of the build procedures.
2010 @ifclear USERVISONLY
2012 Improve general build procedures for @code{g77},
2013 fixing minor bugs (such as deletion of any file
2014 named @file{f771} in the parent directory of @code{gcc/}).
2018 Enable full support of @code{INTEGER(KIND=2)}
2019 (often referred to as @code{INTEGER*8})
2021 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
2022 may make full use of its features via the @code{g77}
2023 version of @file{f2c.h} and the @code{INTEGER(KIND=2)}
2024 support routines in the @code{g77} version of @code{libf2c}.
2027 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
2028 yields version information on the library.
2031 The @code{SNGL} and @code{FLOAT} intrinsics now are
2032 specific intrinsics, instead of synonyms for the
2033 generic intrinsic @code{REAL}.
2036 New intrinsics have been added.
2037 These are @code{REALPART}, @code{IMAGPART},
2039 @code{LONG}, and @code{SHORT}.
2042 A new group of intrinsics, @code{gnu}, has been added
2043 to contain the new @code{REALPART}, @code{IMAGPART},
2044 and @code{COMPLEX} intrinsics.
2045 An old group, @code{dcp}, has been removed.
2048 Complain about industry-wide ambiguous references
2049 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
2050 where @var{expr} is @code{DOUBLE COMPLEX} (or any
2051 complex type other than @code{COMPLEX}), unless
2052 @samp{-ff90} option specifies Fortran 90 interpretation
2053 or new @samp{-fugly-complex} option, in conjunction with
2054 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
2056 @ifclear USERVISONLY
2058 Make improvements to diagnostics.
2061 @ifclear USERVISONLY
2063 Speed up compiler a bit.
2066 @ifclear USERVISONLY
2068 Improvements to documentation and indexing, including
2069 a new chapter containing information on one, later
2070 more, diagnostics that users are directed to pull
2071 up automatically via a message in the diagnostic itself.
2073 (Hence the menu item @code{M} for the node
2074 @code{Diagnostics} in the top-level menu of
2075 the Info documentation.)
2079 @ifclear DOC-OLDNEWS
2080 @heading In previous versions:
2082 Information on previous versions is archived
2083 in @file{@value{path-g77}/news.texi}
2084 following the test of the @code{DOC-OLDNEWS} macro.
2088 @c 1997-02-01: 0.5.19.1 released.
2089 @heading In 0.5.19.1:
2092 Code-generation bugs afflicting operations on complex
2093 data have been fixed.
2095 These bugs occurred when assigning the result of an
2096 operation to a complex variable (or array element)
2097 that also served as an input to that operation.
2099 The operations affected by this bug were: @code{CONJG()},
2100 @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
2101 @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
2102 @code{CSQRT()}, @code{CDSQRT()}, complex division, and
2103 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
2105 (The related generic and @samp{Z}-prefixed intrinsics,
2106 such as @code{ZSIN()}, also were affected.)
2108 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
2109 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
2110 @code{DOUBLE COMPLEX}) have been fixed.
2113 @c 1996-12-07: 0.5.19 released.
2117 Fix @code{FORMAT} statement parsing so negative values for
2118 specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
2119 are correctly processed as negative.
2122 Fix @code{SIGNAL} intrinsic so it once again accepts a
2123 procedure as its second argument.
2126 A temporary kludge option provides bare-bones information on
2127 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
2130 New @samp{-fonetrip} option specifies FORTRAN-66-style
2131 one-trip @code{DO} loops.
2134 New @samp{-fno-silent} option causes names of program units
2135 to be printed as they are compiled, in a fashion similar to
2136 UNIX @code{f77} and @code{f2c}.
2139 New @samp{-fugly-assumed} option specifies that arrays
2140 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
2141 treated as assumed-size.
2144 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
2145 constants using the prefixed-radix form (such as @samp{Z'1234'})
2146 are to be interpreted as @code{INTEGER} constants.
2149 New @samp{-ff66} option is a ``shorthand'' option that specifies
2150 behaviors considered appropriate for FORTRAN 66 programs.
2153 New @samp{-ff77} option is a ``shorthand'' option that specifies
2154 behaviors considered appropriate for UNIX @code{f77} programs.
2157 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
2158 to perform some of what @samp{-fugly} used to do.
2159 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
2160 in that they do nothing more than enable (or disable) other
2161 @samp{-fugly-*} options.
2164 Fix parsing of assignment statements involving targets that
2165 are substrings of elements of @code{CHARACTER} arrays having
2166 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
2167 @samp{REALFUNCTIONFOO}.
2170 Fix crashes involving diagnosed code.
2173 Fix handling of local @code{EQUIVALENCE} areas so certain cases
2174 of valid Fortran programs are not misdiagnosed as improperly
2175 extending the area backwards.
2178 Support @code{gcc} version 2.7.2.1.
2181 Upgrade to @code{libf2c} as of 1996-09-26, and
2182 fix up some of the build procedures.
2185 Change code generation for list-directed I/O so it allows
2186 for new versions of @code{libf2c} that might return non-zero
2187 status codes for some operations previously assumed to always
2190 This change not only affects how @code{IOSTAT=} variables
2191 are set by list-directed I/O, it also affects whether
2192 @code{END=} and @code{ERR=} labels are reached by these
2196 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
2197 procedures in @code{libf2c}.
2200 Modify @code{fseek_()} in @code{libf2c} to be more portable
2201 (though, in practice, there might be no systems where this
2202 matters) and to catch invalid @code{whence} arguments.
2205 Some useless warnings from the @samp{-Wunused} option have
2209 Fix a problem building the @file{f771} executable
2210 on AIX systems by linking with the @samp{-bbigtoc} option.
2213 Abort configuration if @code{gcc} has not been patched
2214 using the patch file provided in the @file{gcc/f/gbe/}
2218 Add options @samp{--help} and @samp{--version} to the
2219 @code{g77} command, to conform to GNU coding guidelines.
2220 Also add printing of @code{g77} version number when
2221 the @samp{--verbose} (@samp{-v}) option is used.
2224 Change internally generated name for local @code{EQUIVALENCE}
2225 areas to one based on the alphabetically sorted first name
2226 in the list of names for entities placed at the beginning
2230 Improvements to documentation and indexing.
2233 @c 1996-04-01: 0.5.18 released.
2237 Add some rudimentary support for @code{INTEGER*1},
2238 @code{INTEGER*2}, @code{INTEGER*8},
2239 and their @code{LOGICAL} equivalents.
2240 (This support works on most, maybe all, @code{gcc} targets.)
2242 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2243 for providing the patch for this!
2245 Among the missing elements from the support for these
2246 features are full intrinsic support and constants.
2249 Add some rudimentary support for the @code{BYTE} and
2250 @code{WORD} type-declaration statements.
2251 @code{BYTE} corresponds to @code{INTEGER*1},
2252 while @code{WORD} corresponds to @code{INTEGER*2}.
2254 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2255 for providing the patch for this!
2258 The compiler code handling intrinsics has been largely
2259 rewritten to accommodate the new types.
2260 No new intrinsics or arguments for existing
2261 intrinsics have been added, so there is, at this
2262 point, no intrinsic to convert to @code{INTEGER*8},
2266 Support automatic arrays in procedures.
2269 Reduce space/time requirements for handling large
2270 @emph{sparsely} initialized aggregate arrays.
2271 This improvement applies to only a subset of
2272 the general problem to be addressed in 0.6.
2275 Treat initial values of zero as if they weren't
2276 specified (in DATA and type-declaration statements).
2277 The initial values will be set to zero anyway, but the amount
2278 of compile time processing them will be reduced,
2279 in some cases significantly (though, again, this
2280 is only a subset of the general problem to be
2283 A new option, @samp{-fzeros}, is introduced to
2284 enable the traditional treatment of zeros as any
2288 With @samp{-ff90} in force, @code{g77} incorrectly
2289 interpreted @samp{REAL(Z)} as returning a @code{REAL}
2290 result, instead of as a @code{DOUBLE PRECISION}
2292 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
2294 With @samp{-fno-f90} in force, the interpretation remains
2295 unchanged, since this appears to be how at least some
2296 F77 code using the @code{DOUBLE COMPLEX} extension expected
2299 Essentially, @samp{REAL(Z)} in F90 is the same as
2300 @samp{DBLE(Z)}, while in extended F77, it appears to
2301 be the same as @samp{REAL(REAL(Z))}.
2304 An expression involving exponentiation, where both operands
2305 were type @code{INTEGER} and the right-hand operand
2306 was negative, was erroneously evaluated.
2309 Fix bugs involving @code{DATA} implied-@code{DO} constructs
2310 (these involved an errant diagnostic and a crash, both on good
2311 code, one involving subsequent statement-function definition).
2314 Close @code{INCLUDE} files after processing them, so compiling source
2315 files with lots of @code{INCLUDE} statements does not result in
2316 being unable to open @code{INCLUDE} files after all the available
2317 file descriptors are used up.
2320 Speed up compiling, especially of larger programs, and perhaps
2321 slightly reduce memory utilization while compiling (this is
2322 @emph{not} the improvement planned for 0.6 involving large aggregate
2323 areas)---these improvements result from simply turning
2324 off some low-level code to do self-checking that hasn't been
2325 triggered in a long time.
2328 Introduce three new options that
2329 implement optimizations in the @code{gcc} back end (GBE).
2330 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
2331 and @samp{-frerun-loop-opt}, which are enabled, by default,
2332 for Fortran compilations.
2333 These optimizations are intended to help toon Fortran programs.
2336 Patch the GBE to do a better job optimizing certain
2337 kinds of references to array elements.
2340 Due to patches to the GBE, the version number of @code{gcc}
2341 also is patched to make it easier to manage installations,
2342 especially useful if it turns out a @code{g77} change to the
2345 The @code{g77}-modified version number is the @code{gcc}
2346 version number with the string @samp{.f.@var{n}} appended,
2347 where @samp{f} identifies the version as enhanced for
2348 Fortran, and @var{n} is @samp{1} for the first Fortran
2349 patch for that version of @code{gcc}, @samp{2} for the
2352 So, this introduces version 2.7.2.f.1 of @code{gcc}.
2355 Make several improvements and fixes to diagnostics, including
2356 the removal of two that were inappropriate or inadequate.
2359 Warning about two successive arithmetic operators, produced
2360 by @samp{-Wsurprising}, now produced @emph{only} when both
2361 operators are, indeed, arithmetic (not relational/boolean).
2364 @samp{-Wsurprising} now warns about the remaining cases
2365 of using non-integral variables for implied-@code{DO}
2366 loops, instead of these being rejected unless @samp{-fpedantic}
2367 or @samp{-fugly} specified.
2370 Allow @code{SAVE} of a local variable or array, even after
2371 it has been given an initial value via @code{DATA}, for example.
2374 Introduce an Info version of @code{g77} documentation, which
2375 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
2376 @file{gcc/f/PROJECTS}.
2377 These files will be removed in a future release.
2378 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
2379 @file{gcc/f/NEWS} now are automatically built from
2380 the texinfo source when distributions are made.
2382 This effort was inspired by a first pass at translating
2383 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
2384 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
2387 New @samp{-fno-second-underscore} option to specify
2388 that, when @samp{-funderscoring} is in effect, a second
2389 underscore is not to be appended to Fortran names already
2390 containing an underscore.
2393 Change the way iterative @code{DO} loops work to follow
2395 In particular, calculation of the iteration count is
2396 still done by converting the start, end, and increment
2397 parameters to the type of the @code{DO} variable, but
2398 the result of the calculation is always converted to
2399 the default @code{INTEGER} type.
2401 (This should have no effect on existing code compiled
2402 by @code{g77}, but code written to assume that use
2403 of a @emph{wider} type for the @code{DO} variable
2404 will result in an iteration count being fully calculated
2405 using that wider type (wider
2406 than default @code{INTEGER}) must be rewritten.)
2409 Support @code{gcc} version 2.7.2.
2412 Upgrade to @code{libf2c} as of 1996-03-23, and
2413 fix up some of the build procedures.
2415 Note that the email addresses related to @code{f2c}
2416 have changed---the distribution site now is
2417 named @code{netlib.bell-labs.com}, and the
2418 maintainer's new address is @email{dmg@@bell-labs.com}.
2421 @c 1995-11-18: 0.5.17 released.
2425 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
2426 system's @file{/dev/null} special file if run by user @code{root}.
2428 @strong{All users} of version 0.5.16 should ensure that
2429 they have not removed @file{/dev/null} or replaced it with an ordinary
2430 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
2431 @samp{ls -l /dev/zero}.
2432 If the output isn't basically the
2433 same, contact your system
2434 administrator about restoring @file{/dev/null} to its proper status).
2436 This bug is particularly insidious because removing @file{/dev/null} as
2437 a special file can go undetected for quite a while, aside from
2438 various applications and programs exhibiting sudden, strange
2441 I sincerely apologize for not realizing the
2442 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
2443 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
2444 it is supposed to build (especially if it reports unresolved
2445 references, which it should in this case)!
2448 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
2451 Fix crash that can occur when diagnostics given outside of any
2452 program unit (such as when input file contains @samp{@@foo}).
2455 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
2458 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
2459 and issue clearer error message in cases where target of @code{ASSIGN}
2460 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
2464 Make @code{libf2c} build procedures work on more systems again by
2465 eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}.
2468 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
2469 options to compiler.
2472 Fix failure to always diagnose missing type declaration for
2473 @code{IMPLICIT NONE}.
2476 Fix compile-time performance problem (which could sometimes
2477 crash the compiler, cause a hang, or whatever, due to a bug
2478 in the back end) involving exponentiation with a large @code{INTEGER}
2479 constant for the right-hand operator (e.g. @samp{I**32767}).
2482 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
2483 utility in particular) is properly built using the host compiler.
2486 Add new @samp{-Wsurprising} option to warn about constructs that are
2487 interpreted by the Fortran standard (and @code{g77}) in ways that
2488 are surprising to many programmers.
2491 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
2492 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
2494 @emph{Note:} You should
2495 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
2496 these as generic intrinsics, to improve likelihood of diagnostics
2497 (instead of subtle run-time bugs) when using a compiler that
2498 doesn't support these as intrinsics (e.g. @code{f2c}).
2501 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
2502 with non-@code{INTEGER} index variable; issue that under
2503 @samp{-Wsurprising} instead.
2506 Clarify some diagnostics that say things like ``ignored'' when that's
2510 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
2514 Minor improvements to code generation for various operations on
2515 @code{LOGICAL} operands.
2518 Minor improvement to code generation for some @code{DO} loops on some
2522 Support @code{gcc} version 2.7.1.
2525 Upgrade to @code{libf2c} as of 1995-11-15.
2528 @c 1995-08-30: 0.5.16 released.
2532 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
2533 not involving @code{COMMON}.
2536 Fix code-generation bugs involving invoking ``gratis'' library procedures
2537 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
2538 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
2539 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
2540 @code{DERF()}, and @code{DERFC()}.
2543 Update @code{libf2c} to include netlib patches through 1995-08-16, and
2544 @code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
2545 consistent with other Fortran implementations by outputting
2546 leading zeros in formatted and list-directed output.
2549 Fix a code-generation bug involving adjustable dummy arrays with high
2550 bounds whose primaries are changed during procedure execution, and
2551 which might well improve code-generation performance for such arrays
2552 compared to @code{f2c} plus @code{gcc} (but apparently only when using
2553 @file{gcc-2.7.0} or later).
2556 Fix a code-generation bug involving invocation of @code{COMPLEX} and
2557 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
2558 @code{DOUBLE COMPLEX} divides, when the result
2559 of the invocation or divide is assigned directly to a variable
2560 that overlaps one or more of the arguments to the invocation or divide.
2563 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
2564 nonconstant and the expression is used to dimension a dummy
2565 array, since the @code{gcc} back end does not support the necessary
2566 mechanics (and the @code{gcc} front end rejects the equivalent
2567 construct, as it turns out).
2570 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
2573 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
2574 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
2577 Fix crashes and such involving diagnosed code.
2580 Diagnose, instead of crashing on, statement function definitions
2581 having duplicate dummy argument names.
2584 Fix bug causing rejection of good code involving statement function
2588 Fix bug resulting in debugger not knowing size of local equivalence
2589 area when any member of area has initial value (via @code{DATA},
2593 Fix installation bug that prevented installation of @code{g77} driver.
2594 Provide for easy selection of whether to install copy of @code{g77}
2595 as @code{f77} to replace the broken code.
2598 Fix @code{gcc} driver (affects @code{g77} thereby) to not
2599 gratuitously invoke the
2600 @code{f771} program (e.g. when @samp{-E} is specified).
2603 Fix diagnostic to point to correct source line when it immediately
2604 follows an @code{INCLUDE} statement.
2607 Support more compiler options in @code{gcc}/@code{g77} when
2608 compiling Fortran files.
2609 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
2610 correct setting of version-number macros for preprocessing, full
2611 recognition of @samp{-O0}, and
2612 automatic insertion of configuration-specific linker specs.
2615 Add new intrinsics that interface to existing routines in @code{libf2c}:
2616 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
2617 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
2618 @code{SIGNAL}, and @code{SYSTEM}.
2619 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
2620 @code{SYSTEM} are intrinsic subroutines, not functions (since they
2621 have side effects), so to get the return values from @code{SIGNAL}
2622 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
2623 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
2626 Add new intrinsic group named @code{unix} to contain the new intrinsics,
2627 and by default enable this new group.
2630 Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
2634 Improve @code{g77} so that @samp{g77 -v} by itself (or with
2635 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
2636 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
2637 version info, and so that long-form options @code{gcc} accepts are
2638 understood by @code{g77} as well (even in truncated, unambiguous forms).
2641 Add new @code{g77} option @samp{--driver=name} to specify driver when
2642 default, @code{gcc}, isn't appropriate.
2645 Add support for @samp{#} directives (as output by the preprocessor) in the
2646 compiler, and enable generation of those directives by the
2647 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
2648 info are more useful to users of the preprocessor.
2651 Produce better diagnostics, more like @code{gcc}, with info such as
2652 @samp{In function `foo':} and @samp{In file included from...:}.
2655 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
2658 When @samp{-Wunused} in effect, don't warn about local variables used as
2659 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
2660 variables, even though, strictly speaking, these are not uses
2661 of the variables themselves.
2664 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
2665 at all, since there's no way to turn this off for individual
2666 cases (@code{g77} might someday start warning about these)---applies
2667 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
2668 warn about unused dummy arguments.
2671 New option @samp{-fno-underscoring} that inhibits transformation of names
2672 (by appending one or two underscores) so users may experiment
2673 with implications of such an environment.
2676 Minor improvement to @file{gcc/f/info} module to make it easier to build
2677 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
2678 (but definitely not all machines nor all non-@code{gcc} compilers).
2680 do not report bugs showing problems compilers have with
2681 macros defined in @file{gcc/f/target.h} and used in places like
2682 @file{gcc/f/expr.c}.
2685 Add warning to be printed for each invocation of the compiler
2686 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
2688 since @code{g77} is known to not work well for such cases.
2691 Lots of new documentation (though work is still needed to put it into
2692 canonical GNU format).
2695 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
2696 (by default), to produce
2697 smaller library without lots of debugging clutter.
2700 @c 1995-05-19: 0.5.15 released.
2704 Fix bad code generation involving @samp{X**I} and temporary, internal variables
2705 generated by @code{g77} and the back end (such as for @code{DO} loops).
2708 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
2711 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
2714 Fix crash or other erratic behavior when null character constant
2715 (@samp{''}) is encountered.
2718 Fix crash or other erratic behavior involving diagnosed code.
2721 Fix code generation for external functions returning type @code{REAL} when
2722 the @samp{-ff2c} option is in force (which it is by default) so that
2723 @code{f2c} compatibility is indeed provided.
2726 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
2727 with an array declarator.
2730 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
2732 of a typical fixed-form line, defaulting to 72 columns, such
2733 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
2734 meaning no characters are ignored.
2735 does not affect lines
2736 with @samp{&} in column 1, which are always processed as if
2737 @samp{-ffixed-line-length-none} was in effect.
2740 No longer generate better code for some kinds of array references,
2741 as @code{gcc} back end is to be fixed to do this even better, and it
2742 turned out to slow down some code in some cases after all.
2745 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
2746 values (e.g. via @code{DATA}), uninitialized members now always
2747 initialized to binary zeros (though this is not required by
2748 the standard, and might not be done in future versions
2750 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
2751 (essentially those with members of more than one type), the
2752 uninitialized members were initialized to spaces, to
2753 cater to @code{CHARACTER} types, but it seems no existing code expects
2754 that, while much existing code expects binary zeros.
2760 Don't emit bad code when low bound of adjustable array is nonconstant
2761 and thus might vary as an expression at run time.
2764 Emit correct code for calculation of number of trips in @code{DO} loops
2766 where the loop should not execute at all.
2767 (This bug affected cases
2768 where the difference between the begin and end values was less
2769 than the step count, though probably not for floating-point cases.)
2772 Fix crash when extra parentheses surround item in
2773 @code{DATA} implied-@code{DO} list.
2776 Fix crash over minor internal inconsistencies in handling diagnostics,
2777 just substitute dummy strings where necessary.
2780 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
2783 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
2784 is a string of one or more digits.
2787 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
2790 Fix various crashes involving code with diagnosed errors.
2793 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
2794 @file{header.gcc} facility for handling systems like MS-DOS.
2797 Allow @code{INCLUDE} statement to be continued across multiple lines,
2798 even allow it to coexist with other statements on the same line.
2801 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
2802 fixes a bug involving infinite loops reading EOF with empty list-directed
2806 Remove all the @code{g77}-specific auto-configuration scripts, code,
2808 except for temporary substitutes for bsearch() and strtoul(), as
2809 too many configure/build problems were reported in these areas.
2810 People will have to fix their systems' problems themselves, or at
2811 least somewhere other than @code{g77}, which expects a working ANSI C
2812 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
2815 Complain if initialized common redeclared as larger in subsequent program
2819 Warn if blank common initialized, since its size can vary and hence
2820 related warnings that might be helpful won't be seen.
2823 New @samp{-fbackslash} option, on by default, that causes @samp{\}
2824 within @code{CHARACTER}
2825 and Hollerith constants to be interpreted a la GNU C.
2827 this behavior is somewhat different from @code{f2c}'s, which supports only
2828 a limited subset of backslash (escape) sequences.
2831 Make @samp{-fugly-args} the default.
2834 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
2835 to be specified as initial values for variables or named constants
2836 (@code{PARAMETER}), and also allows character<->numeric conversion in
2837 those contexts---turn off via @samp{-fno-ugly-init}.
2840 New @samp{-finit-local-zero} option to initialize
2841 local variables to binary zeros.
2842 This does not affect whether they are @code{SAVE}d, i.e. made
2843 automatic or static.
2846 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
2848 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
2851 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
2852 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
2853 requires @samp{-O}), and implies @samp{-Wunused} as well.
2856 @samp{-Wunused} no longer gives spurious messages for unused
2857 @code{EXTERNAL} names (since they are assumed to refer to block data
2858 program units, to make use of libraries more reliable).
2861 Support @code{%LOC()} and @code{LOC()} of character arguments.
2864 Support null (zero-length) character constants and expressions.
2867 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
2870 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
2871 character expressions that are valid in assignments but
2872 not normally as actual arguments.
2875 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
2878 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
2879 in @code{BLOCK DATA}, even though these are not allowed by the standard.
2882 Allow @code{RETURN} in main program unit.
2885 Changes to Hollerith-constant support to obey Appendix C of the
2890 Now padded on the right with zeros, not spaces.
2893 Hollerith ``format specifications'' in the form of arrays of
2894 non-character allowed.
2897 Warnings issued when non-space truncation occurs when converting
2901 When specified as actual argument, now passed
2902 by reference to @code{INTEGER} (padded on right with spaces if constant
2903 too small, otherwise fully intact if constant wider the @code{INTEGER}
2904 type) instead of by value.
2907 @strong{Warning:} @code{f2c} differs on the
2908 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
2909 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
2910 as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary
2911 to widen to @code{INTEGER}), essentially.
2914 Changes and fixes to typeless-constant support:
2918 Now treated as a typeless double-length @code{INTEGER} value.
2921 Warnings issued when overflow occurs.
2924 Padded on the left with zeros when converting
2928 Should be properly aligned and ordered on
2929 the target machine for whatever type it is turned into.
2932 When specified as actual argument, now passed as reference to
2933 a default @code{INTEGER} constant.
2937 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
2938 the expression plus a length for the expression just as if
2939 it were a @code{CHARACTER} expression.
2940 For example, @samp{CALL FOO(%DESCR(D))}, where
2941 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
2944 Name of multi-entrypoint master function changed to incorporate
2945 the name of the primary entry point instead of a decimal
2946 value, so the name of the master function for @samp{SUBROUTINE X}
2947 with alternate entry points is now @samp{__g77_masterfun_x}.
2950 Remove redundant message about zero-step-count @code{DO} loops.
2953 Clean up diagnostic messages, shortening many of them.
2956 Fix typo in @code{g77} man page.
2959 Clarify implications of constant-handling bugs in @file{f/BUGS}.
2962 Generate better code for @samp{**} operator with a right-hand operand of
2963 type @code{INTEGER}.
2966 Generate better code for @code{SQRT()} and @code{DSQRT()},
2967 also when @samp{-ffast-math}
2968 specified, enable better code generation for @code{SIN()} and @code{COS()}.
2971 Generate better code for some kinds of array references.
2974 Speed up lexing somewhat (this makes the compilation phase noticeably