1 @c Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
2 @c Free Software Foundation, Inc.
3 @c This is part of the G77 manual.
4 @c For copying conditions, see the file g77.texi.
6 @c The text of this file appears in the file NEWS
7 @c in the G77 distribution, as well as in the G77 manual.
9 @c Keep this the same as the dates above, since it's used
10 @c in the standalone derivations of this file (e.g. NEWS).
11 @set copyrights-news 1995,1996,1997,1998,1999,2000,2001,2002
13 @set last-update-news 2002-07-25
18 @c The immediately following lines apply to the NEWS file
19 @c which is derived from this file.
20 @emph{Note:} This file is automatically generated from the files
21 @file{news0.texi} and @file{news.texi}.
22 @file{NEWS} is @emph{not} a source file,
23 although it is normally included within source distributions.
25 This file lists news about the @value{which-g77} version
26 (and some other versions) of the GNU Fortran compiler.
27 Copyright (C) @value{copyrights-news} Free Software Foundation, Inc.
28 You may copy, distribute, and modify it freely as long as you preserve
29 this copyright notice and permission notice.
32 @chapter News About GNU Fortran
38 @chapter User-visible Changes
39 @cindex versions, recent
40 @cindex recent versions
41 @cindex changes, user-visible
42 @cindex user-visible changes
44 This chapter describes changes to @command{g77} that are visible
45 to the programmers who actually write and maintain Fortran
46 code they compile with @command{g77}.
47 Information on changes to installation procedures,
48 changes to the documentation, and bug fixes is
49 not provided here, unless it is likely to affect how
50 users use @command{g77}.
51 @xref{News,,News About GNU Fortran}, for information on
52 such changes to @command{g77}.
57 @chapter News About GNU Fortran
58 @cindex versions, recent
59 @cindex recent versions
64 Changes made to recent versions of GNU Fortran are listed
65 below, with the most recent version first.
67 The changes are generally listed in order:
71 Code-generation and run-time-library bug-fixes
74 Compiler and run-time-library crashes involving valid code
81 Fixes and enhancements to existing features
93 This order is not strict---for example, some items
94 involve a combination of these elements.
97 Note that two variants of @command{g77} are tracked below.
98 The @code{egcs} variant is described vis-a-vis
99 previous versions of @code{egcs} and/or
100 an official FSF version, as appropriate.
101 Note that all such variants are obsolete @emph{as of July 1999} -
102 the information is retained here only for 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 @command{g77},
112 see @ref{Known Bugs,,Known Bugs In GNU Fortran}.
116 For information on bugs in the @value{which-g77} version of @command{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 @command{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} @command{g77}.
129 In particular, while this information is intended to apply to
130 the @value{which-g77} version of @command{g77},
131 only an official @emph{release} of that version
132 is expected to contain documentation that is
133 most consistent with the @command{g77} product in that version.
135 Nevertheless, information on @emph{previous} releases of @command{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 @command{g77} versions up-to-date.
147 An online, ``live'' version of this document
148 (derived directly from the mainline, development version
149 of @command{g77} within @command{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 @code{GCC} 3.3 versus @code{GCC} 3.2:
159 Richard Henderson (@email{rth@@redhat.com}) analysed and improved the handling
160 of (no-)aliasing information for dummy arguments and improved the optimization
161 of induction variables in unrolled loops.
164 @heading In @code{GCC} 3.2 versus @code{GCC} 3.1:
170 @heading In @code{GCC} 3.1 (formerly known as g77-0.5.27) versus @code{GCC} 3.0:
173 Problem Reports fixed (in chronological order of submission):
176 Data statement initialization with subscript of kind INTEGER*2
178 Reference to intrinsic `ISHFT' invalid
180 Function BESJN(integer,double) problems
182 g77 -pipe -xf77-cpp-input sends output to stdout
184 g77 -h" gives bogus output
186 ICE on valid input using CALL EXIT(%VAL(...))
188 g77 -v -c -xf77-version /dev/null -xnone causes ice
190 BACKSPACE example that doesn't work as of gcc/g77-3.0.x
192 g77 rejects accepted use of INTEGER*2 as type of DATA statement loop index
194 ICE on compiling source with 540 000 000 REAL array
196 ICE on BESJN(integer*8,real)
198 bug in loop unrolling
202 @command{g77} now has its man page generated from the texinfo documentation,
203 to guarantee that it remains up to date.
206 @command{g77} used to reject the following program on 32-bit targets:
209 DIMENSION A(140 000 000)
214 prog.f: In program `prog':
216 DIMENSION A(140 000 000)
218 Array `a' at (^) is too large to handle
220 because 140 000 000 REALs is larger than the largest bit-extent that can be
221 expressed in 32 bits. However, bit-sizes never play a role after offsets
222 have been converted to byte addresses. Therefore this check has been removed,
223 and the limit is now 2 Gbyte of memory (around 530 000 000 REALs).
224 Note: On GNU/Linux systems one has to compile and link programs that occupy
225 more than 1 Gbyte statically, i.e.@: @code{g77 -static ...}.
228 Based on work done by Juergen Pfeifer (@email{juergen.pfeifer@@gmx.net})
229 libf2c is now a shared library. One can still link in all objects with
230 the program by specifying the @option{-static} option.
233 Robert Anderson (@email{rwa@@alumni.princeton.edu}) thought up a two
234 line change that enables g77 to compile such code as:
238 DIMENSION A(N(1),N(2))
242 Note the use of array elements in the bounds of the adjustable array A.
245 George Helffrich (@email{george@@geo.titech.ac.jp}) implemented a change
246 in substring index checking (when specifying @option{-fbounds-check})
247 that permits the use of zero length substrings of the form
251 Based on code developed by Pedro Vazquez (@email{vazquez@@penelope.iqm.unicamp.br}),
252 the @code{libf2c} library is now able to read and write files larger than
253 2 Gbyte on 32-bit target machines, if the operating system supports this.
256 @heading In 0.5.26, @code{GCC} 3.0 versus @code{GCC} 2.95:
259 When a REWIND was issued after a WRITE statement on an unformatted
260 file, the implicit truncation was performed by copying the truncated
261 file to /tmp and copying the result back. This has been fixed by using
262 the @code{ftruncate} OS function. Thanks go to the GAMESS developers
263 for bringing this to our attention.
266 Using options @option{-g}, @option{-ggdb} or @option{-gdwarf[-2]} (where
267 appropriate for your target) now also enables debugging information
268 for COMMON BLOCK and EQUIVALENCE items to be emitted.
269 Thanks go to Andrew Vaught (@email{andy@@xena.eas.asu.edu}) and
270 George Helffrich (@email{george@@geology.bristol.ac.uk}) for
271 fixing this longstanding problem.
274 It is not necessary anymore to use the option @option{-femulate-complex}
275 to compile Fortran code using COMPLEX arithmetic, even on 64-bit machines
276 (like the Alpha). This will improve code generation.
279 INTRINSIC arithmetic functions are now treated as routines that do not
280 depend on anything but their argument(s). This enables further instruction
281 scheduling, because it is known that they cannot read or modify arbitrary
286 Upgrade to @code{libf2c} as of 2000-12-05.
288 This fixes a bug where a namelist containing initialization of LOGICAL
289 items and a variable starting with T or F would be read incorrectly.
292 The @code{TtyNam} intrinsics now set @var{Name} to all spaces (at run time)
293 if the system has no @code{ttyname} implementation available.
296 Upgrade to @code{libf2c} as of 1999-06-28.
298 This fixes a bug whereby
299 input to a @code{NAMELIST} read involving a repeat count,
300 such as @samp{K(5)=10*3},
301 was not properly handled by @code{libf2c}.
302 The first item was written to @samp{K(5)},
303 but the remaining nine were written elsewhere (still within the array),
304 not necessarily starting at @samp{K(6)}.
308 @heading In 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 1.1.2:
312 @command{g77} no longer generates bad code for assignments,
313 or other conversions,
314 of @code{REAL} or @code{COMPLEX} constant expressions
315 to type @code{INTEGER(KIND=2)}
316 (often referred to as @code{INTEGER*8}).
318 For example, @samp{INTEGER*8 J; J = 4E10} now works as documented.
323 @command{g77} no longer truncates @code{INTEGER(KIND=2)}
324 (usually @code{INTEGER*8})
325 subscript expressions when evaluating array references
326 on systems with pointers widers than @code{INTEGER(KIND=1)}
332 @command{g77} no longer generates bad code
333 for an assignment to a @code{COMPLEX} variable or array
334 that partially overlaps one or more of the sources
335 of the same assignment
336 (a very rare construction).
337 It now assigns through a temporary,
338 in cases where such partial overlap is deemed possible.
343 @code{libg2c} (@code{libf2c}) no longer loses track
344 of the file being worked on
345 during a @code{BACKSPACE} operation.
350 @code{libg2c} (@code{libf2c}) fixes a bug whereby
351 input to a @code{NAMELIST} read involving a repeat count,
352 such as @samp{K(5)=10*3},
353 was not properly handled by @code{libf2c}.
354 The first item was written to @samp{K(5)},
355 but the remaining nine were written elsewhere (still within the array),
356 not necessarily starting at @samp{K(6)}.
361 @c Tim Prince reported this, regarding the TEST_FPU benchmark.
362 Automatic arrays now seem to be working on HP-UX systems.
367 The @code{Date} intrinsic now returns the correct result
368 on big-endian systems.
373 Fix @command{g77} so it no longer crashes when compiling
374 I/O statements using keywords that define @code{INTEGER} values,
375 such as @samp{IOSTAT=@var{j}},
376 where @var{j} is other than default @code{INTEGER}
377 (such as @code{INTEGER*2}).
378 Instead, it issues a diagnostic.
383 Fix @command{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/},
384 where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2},
385 instead of producing a spurious diagnostic.
386 Also fix @samp{DATA (A(I),I=1,N)},
387 where @samp{N} is not default @code{INTEGER}
388 to work instead of crashing @command{g77}.
393 The @option{-ax} option is now obeyed when compiling Fortran programs.
394 (It is passed to the @file{f771} driver.)
398 The new @option{-fbounds-check} option
399 causes @command{g77} to compile run-time bounds checks
400 of array subscripts, as well as of substring start and end points.
403 @code{libg2c} now supports building as multilibbed library,
404 which provides better support for systems
405 that require options such as @option{-mieee}
409 Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
410 now are recognized by @command{g77}
411 as if they ended in @samp{.for} and @samp{.fpp}, respectively.
414 The order of arguments to the @emph{subroutine} forms of the
415 @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam}
416 intrinsics has been swapped.
417 The argument serving as the returned value
418 for the corresponding function forms
419 now is the @emph{second} argument,
420 making these consistent with the other subroutine forms
421 of @code{libU77} intrinsics.
424 @command{g77} now warns about a reference to an intrinsic
425 that has an interface that is not Year 2000 (Y2K) compliant.
426 Also, @code{libg2c} has been changed to increase the likelihood
427 of catching references to the implementations of these intrinsics
428 using the @code{EXTERNAL} mechanism
429 (which would avoid the new warnings).
432 @xref{Year 2000 (Y2K) Problems}, for more information.
437 @command{g77} now warns about a reference to a function
438 when the corresponding @emph{subsequent} function program unit
439 disagrees with the reference concerning the type of the function.
443 @option{-fno-emulate-complex} is now the default option.
444 This should result in improved performance
445 of code that uses the @code{COMPLEX} data type.
448 @cindex double-precision performance
449 @cindex -malign-double
451 The @option{-malign-double} option
452 now reliably aligns @emph{all} double-precision variables and arrays
453 on Intel x86 targets.
457 Even without the @option{-malign-double} option,
458 @command{g77} reliably aligns local double-precision variables
459 that are not in @code{EQUIVALENCE} areas
460 and not @code{SAVE}'d.
465 @command{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands
466 instead of generating a run-time call to
467 the @code{libf2c} routines @code{c_div} or @code{z_div},
468 unless the @option{-Os} option is specified.
472 @command{g77} no longer generates code to maintain @code{errno},
473 a C-language concept,
474 when performing operations such as the @code{SqRt} intrinsic.
478 @command{g77} developers can temporarily use
479 the @option{-fflatten-arrays} option
480 to compare how the compiler handles code generation
481 using C-like constructs as compared to the
482 Fortran-like method constructs normally used.
487 A substantial portion of the @command{g77} front end's code-generation component
489 It now generates code using facilities more robustly supported
490 by the @command{gcc} back end.
491 One effect of this rewrite is that some codes no longer produce
492 a spurious ``label @var{lab} used before containing binding contour''
497 Support for the @option{-fugly} option has been removed.
501 Improve documentation and indexing,
502 including information on Year 2000 (Y2K) compliance,
503 and providing more information on internals of the front end.
508 Upgrade to @code{libf2c} as of 1999-05-10.
512 @heading In 0.5.24 versus 0.5.23:
514 There is no @command{g77} version 0.5.24 at this time,
516 0.5.24 is the version number designated for bug fixes and,
517 perhaps, some new features added,
519 Version 0.5.23 requires @command{gcc} 2.8.1,
520 as 0.5.24 was planned to require.
522 Due to @code{EGCS} becoming @code{GCC}
523 (which is now an acronym for ``GNU Compiler Collection''),
524 and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95,
525 there seems to be no need for an actual 0.5.24 release.
527 To reduce the confusion already resulting from use of 0.5.24
528 to designate @command{g77} versions within @code{EGCS} versions 1.0 and 1.1,
529 as well as in versions of @command{g77} documentation and notices
531 ``mainline'' @command{g77} version numbering resumes
532 at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2),
533 skipping over 0.5.24 as a placeholder version number.
535 To repeat, there is no @command{g77} 0.5.24, but there is now a 0.5.25.
536 Please remain calm and return to your keypunch units.
538 @c 1999-03-15: EGCS 1.1.2 released.
539 @heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1:
543 Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
544 so the returned year is in the documented, non-Y2K-compliant range
546 instead of being returned as 100 in the year 2000.
549 @xref{IDate Intrinsic (VXT)},
550 for more information.
554 Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
555 to return the milliseconds value properly
559 Fix the @code{LStat} intrinsic (in @code{libg2c})
560 to return device-ID information properly
564 Improve documentation.
568 @c 1998-12-04: EGCS 1.1.1 released.
569 @heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1:
573 Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation
575 whenever a @code{REWIND} is done.
577 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
578 @command{g77}'s version of @code{libf2c}.)
581 Fix @code{libg2c} so it no longer crashes with a spurious diagnostic
582 upon doing any I/O following a direct formatted write.
584 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
585 @command{g77}'s version of @code{libf2c}.)
588 Fix @command{g77} so it no longer crashes compiling references
589 to the @code{Rand} intrinsic on some systems.
592 Fix @command{g77} portion of installation process so it works
593 better on some systems
594 (those with shells requiring @samp{else true} clauses
595 on @code{if} constructs
596 for the completion code to be set properly).
600 @c 1998-09-03: EGCS 1.1 released.
601 @heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3:
605 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
606 that wrote one byte beyond the end of its @code{CHARACTER}
608 and in the @code{libU77} intrinsics
609 @code{GMTime} and @code{LTime}
610 that overwrote their arguments.
615 Assumed arrays with negative bounds
616 (such as @samp{REAL A(-1:*)})
617 no longer elicit spurious diagnostics from @command{g77},
618 even on systems with pointers having
619 different sizes than integers.
621 This bug is not known to have existed in any
622 recent version of @command{gcc}.
623 It was introduced in an early release of @code{egcs}.
628 Valid combinations of @code{EXTERNAL},
629 passing that external as a dummy argument
630 without explicitly giving it a type,
631 and, in a subsequent program unit,
632 referencing that external as
633 an external function with a different type
634 no longer crash @command{g77}.
639 @code{CASE DEFAULT} no longer crashes @command{g77}.
644 The @option{-Wunused} option no longer issues a spurious
645 warning about the ``master'' procedure generated by
646 @command{g77} for procedures containing @code{ENTRY} statements.
650 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
651 compile-time constant @code{INTEGER} expression.
654 Fix @command{g77} @option{-g} option so procedures that
655 use @code{ENTRY} can be stepped through, line by line,
659 Allow any @code{REAL} argument to intrinsics
660 @code{Second} and @code{CPU_Time}.
663 Use @code{tempnam}, if available, to open scratch files
664 (as in @samp{OPEN(STATUS='SCRATCH')})
665 so that the @code{TMPDIR} environment variable,
669 @command{g77}'s version of @code{libf2c} separates out
670 the setting of global state
671 (such as command-line arguments and signal handling)
672 from @file{main.o} into distinct, new library
675 This should make it easier to write portable applications
676 that have their own (non-Fortran) @code{main()} routine
677 properly set up the @code{libf2c} environment, even
678 when @code{libf2c} (now @code{libg2c}) is a shared library.
682 @command{g77} no longer installs the @file{f77} command
683 and @file{f77.1} man page
684 in the @file{/usr} or @file{/usr/local} hierarchy,
685 even if the @file{f77-install-ok} file exists
686 in the source or build directory.
687 See the installation documentation for more information.
692 @command{g77} no longer installs the @file{libf2c.a} library
693 and @file{f2c.h} include file
694 in the @file{/usr} or @file{/usr/local} hierarchy,
695 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
696 in the source or build directory.
697 See the installation documentation for more information.
702 The @file{libf2c.a} library produced by @command{g77} has been
703 renamed to @file{libg2c.a}.
704 It is installed only in the @command{gcc} ``private''
705 directory hierarchy, @file{gcc-lib}.
706 This allows system administrators and users to choose which
707 version of the @code{libf2c} library from @code{netlib} they
708 wish to use on a case-by-case basis.
709 See the installation documentation for more information.
714 The @file{f2c.h} include (header) file produced by @command{g77}
715 has been renamed to @file{g2c.h}.
716 It is installed only in the @command{gcc} ``private''
717 directory hierarchy, @file{gcc-lib}.
718 This allows system administrators and users to choose which
719 version of the include file from @code{netlib} they
720 wish to use on a case-by-case basis.
721 See the installation documentation for more information.
725 The @command{g77} command now expects the run-time library
726 to be named @code{libg2c.a} instead of @code{libf2c.a},
727 to ensure that a version other than the one built and
728 installed as part of the same @command{g77} version is picked up.
732 During the configuration and build process,
733 @command{g77} creates subdirectories it needs only as it
735 Other cleaning up of the configuration and build process
736 has been performed as well.
741 @code{install-info} now used to update the directory of
742 Info documentation to contain an entry for @command{g77}
743 (during installation).
747 Some diagnostics have been changed from warnings to errors,
748 to prevent inadvertent use of the resulting, probably buggy,
750 These mostly include diagnostics about use of unsupported features
751 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
752 @code{WRITE} statements,
753 and about truncations of various sorts of constants.
757 Improve compilation of @code{FORMAT} expressions so that
758 a null byte is appended to the last operand if it
760 This provides a cleaner run-time diagnostic as provided
761 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
766 Improve documentation and indexing.
771 The upgrade to @code{libf2c} as of 1998-06-18
772 should fix a variety of problems, including
773 those involving some uses of the @code{T} format
774 specifier, and perhaps some build (porting) problems
779 @c 1998-09-03: EGCS 1.1 released.
780 @heading In @code{EGCS} 1.1 versus @command{g77} 0.5.23:
784 @cindex stack, 387 coprocessor
788 Fix a code-generation bug that afflicted
789 Intel x86 targets when @option{-O2} was specified
790 compiling, for example, an old version of
791 the @code{DNRM2} routine.
793 The x87 coprocessor stack was being
794 mismanaged in cases involving assigned @code{GOTO}
800 @command{g77} no longer produces incorrect code
802 for @code{EQUIVALENCE} and @code{COMMON}
803 aggregates that, due to ``unnatural'' ordering of members
804 vis-a-vis their types, require initial padding.
809 Fix @command{g77} crash compiling code
810 containing the construct @samp{CMPLX(0.)} or similar.
815 @command{g77} no longer crashes when compiling code
816 containing specification statements such as
817 @samp{INTEGER(KIND=7) PTR}.
822 @command{g77} no longer crashes when compiling code
823 such as @samp{J = SIGNAL(1, 2)}.
827 @command{g77} now treats @samp{%LOC(@var{expr})} and
828 @samp{LOC(@var{expr})} as ``ordinary'' expressions
829 when they are used as arguments in procedure calls.
830 This change applies only to global (filewide) analysis,
831 making it consistent with
832 how @command{g77} actually generates code
835 Previously, @command{g77} treated these expressions
836 as denoting special ``pointer'' arguments
837 for the purposes of filewide analysis.
841 Fix @command{g77} crash
842 (or apparently infinite run-time)
843 when compiling certain complicated expressions
844 involving @code{COMPLEX} arithmetic
845 (especially multiplication).
849 @cindex double-precision performance
850 @cindex -malign-double
852 Align static double-precision variables and arrays
854 regardless of whether @option{-malign-double} is specified.
856 Generally, this affects only local variables and arrays
857 having the @code{SAVE} attribute
858 or given initial values via @code{DATA}.
861 The @command{g77} driver now ensures that @option{-lg2c}
862 is specified in the link phase prior to any
863 occurrence of @option{-lm}.
864 This prevents accidentally linking to a routine
865 in the SunOS4 @option{-lm} library
866 when the generated code wants to link to the one
867 in @code{libf2c} (@code{libg2c}).
870 @command{g77} emits more debugging information when
873 This new information allows, for example,
874 @kbd{which __g77_length_a} to be used in @command{gdb}
875 to determine the type of the phantom length argument
876 supplied with @code{CHARACTER} variables.
878 This information pertains to internally-generated
879 type, variable, and other information,
880 not to the longstanding deficiencies vis-a-vis
881 @code{COMMON} and @code{EQUIVALENCE}.
884 The F90 @code{Date_and_Time} intrinsic now is
888 The F90 @code{System_Clock} intrinsic allows
889 the optional arguments (except for the @code{Count}
890 argument) to be omitted.
894 Upgrade to @code{libf2c} as of 1998-06-18.
899 Improve documentation and indexing.
904 @heading In previous versions:
906 Information on previous versions is not provided
907 in this @file{@value{path-g77}/NEWS} file,
909 See @file{@value{path-g77}/news.texi},
910 or any of its other derivations
911 (Info, HTML, dvi forms)
912 for such information.
916 @c 1998-05-20: 0.5.23 released.
917 @heading In 0.5.23 versus 0.5.22:
920 This release contains several regressions against
921 version 0.5.22 of @command{g77}, due to using the
922 ``vanilla'' @command{gcc} back end instead of patching
923 it to fix a few bugs and improve performance in a
926 Features that have been dropped from this version
927 of @command{g77} due to their being implemented
928 via @command{g77}-specific patches to the @command{gcc}
929 back end in previous releases include:
933 Support for @code{__restrict__} keyword,
934 the options @option{-fargument-alias}, @option{-fargument-noalias},
935 and @option{-fargument-noalias-global},
936 and the corresponding alias-analysis code.
938 (@code{egcs} has the alias-analysis
939 code, but not the @code{__restrict__} keyword.
940 @code{egcs} @command{g77} users benefit from the alias-analysis
941 code despite the lack of the @code{__restrict__} keyword,
942 which is a C-language construct.)
945 Support for the GNU compiler options
946 @option{-fmove-all-movables},
947 @option{-freduce-all-givs},
948 and @option{-frerun-loop-opt}.
950 (@code{egcs} supports these options.
951 @command{g77} users of @code{egcs} benefit from them even if
952 they are not explicitly specified,
953 because the defaults are optimized for @command{g77} users.)
956 Support for the @option{-W} option warning about
957 integer division by zero.
960 The Intel x86-specific option @option{-malign-double}
961 applying to stack-allocated data
962 as well as statically-allocate data.
966 Note that the @file{gcc/f/gbe/} subdirectory has been removed
967 from this distribution as a result of @command{g77} no longer
968 including patches for the @command{gcc} back end.
973 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
974 that wrote one byte beyond the end of its @code{CHARACTER}
976 and in the @code{libU77} intrinsics
977 @code{GMTime} and @code{LTime}
978 that overwrote their arguments.
982 Support @command{gcc} version 2.8,
983 and remove support for prior versions of @command{gcc}.
985 @cindex -@w{}-driver option
986 @cindex @command{g77} options, -@w{}-driver
987 @cindex options, -@w{}-driver
989 Remove support for the @option{--driver} option,
990 as @command{g77} now does all the driving,
991 just like @command{gcc}.
995 @code{CASE DEFAULT} no longer crashes @command{g77}.
1000 Valid combinations of @code{EXTERNAL},
1001 passing that external as a dummy argument
1002 without explicitly giving it a type,
1003 and, in a subsequent program unit,
1004 referencing that external as
1005 an external function with a different type
1006 no longer crash @command{g77}.
1009 @ifclear USERVISONLY
1011 @command{g77} no longer installs the @file{f77} command
1012 and @file{f77.1} man page
1013 in the @file{/usr} or @file{/usr/local} hierarchy,
1014 even if the @file{f77-install-ok} file exists
1015 in the source or build directory.
1016 See the installation documentation for more information.
1019 @ifclear USERVISONLY
1021 @command{g77} no longer installs the @file{libf2c.a} library
1022 and @file{f2c.h} include file
1023 in the @file{/usr} or @file{/usr/local} hierarchy,
1024 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
1025 in the source or build directory.
1026 See the installation documentation for more information.
1029 @ifclear USERVISONLY
1031 The @file{libf2c.a} library produced by @command{g77} has been
1032 renamed to @file{libg2c.a}.
1033 It is installed only in the @command{gcc} ``private''
1034 directory hierarchy, @file{gcc-lib}.
1035 This allows system administrators and users to choose which
1036 version of the @code{libf2c} library from @code{netlib} they
1037 wish to use on a case-by-case basis.
1038 See the installation documentation for more information.
1041 @ifclear USERVISONLY
1043 The @file{f2c.h} include (header) file produced by @command{g77}
1044 has been renamed to @file{g2c.h}.
1045 It is installed only in the @command{gcc} ``private''
1046 directory hierarchy, @file{gcc-lib}.
1047 This allows system administrators and users to choose which
1048 version of the include file from @code{netlib} they
1049 wish to use on a case-by-case basis.
1050 See the installation documentation for more information.
1054 The @command{g77} command now expects the run-time library
1055 to be named @code{libg2c.a} instead of @code{libf2c.a},
1056 to ensure that a version other than the one built and
1057 installed as part of the same @command{g77} version is picked up.
1059 @ifclear USERVISONLY
1061 The @option{-Wunused} option no longer issues a spurious
1062 warning about the ``master'' procedure generated by
1063 @command{g77} for procedures containing @code{ENTRY} statements.
1067 @command{g77}'s version of @code{libf2c} separates out
1068 the setting of global state
1069 (such as command-line arguments and signal handling)
1070 from @file{main.o} into distinct, new library
1073 This should make it easier to write portable applications
1074 that have their own (non-Fortran) @code{main()} routine
1075 properly set up the @code{libf2c} environment, even
1076 when @code{libf2c} (now @code{libg2c}) is a shared library.
1078 @ifclear USERVISONLY
1080 During the configuration and build process,
1081 @command{g77} creates subdirectories it needs only as it
1082 needs them, thus avoiding unnecessary creation of, for example,
1083 @file{stage1/f/runtime} when doing a non-bootstrap build.
1084 Other cleaning up of the configuration and build process
1085 has been performed as well.
1088 @ifclear USERVISONLY
1090 @code{install-info} now used to update the directory of
1091 Info documentation to contain an entry for @command{g77}
1092 (during installation).
1096 Some diagnostics have been changed from warnings to errors,
1097 to prevent inadvertent use of the resulting, probably buggy,
1099 These mostly include diagnostics about use of unsupported features
1100 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
1101 @code{WRITE} statements,
1102 and about truncations of various sorts of constants.
1104 @ifclear USERVISONLY
1106 Improve documentation and indexing.
1109 @ifclear USERVISONLY
1111 Upgrade to @code{libf2c} as of 1998-04-20.
1113 This should fix a variety of problems, including
1114 those involving some uses of the @code{T} format
1115 specifier, and perhaps some build (porting) problems
1120 @c 1998-03-16: 0.5.22 released.
1121 @heading In 0.5.22 versus 0.5.21:
1123 @ifclear USERVISONLY
1125 Fix code generation for iterative @code{DO} loops that
1126 have one or more references to the iteration variable,
1127 or to aliases of it, in their control expressions.
1128 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1131 @ifclear USERVISONLY
1133 @cindex stack, 387 coprocessor
1137 Fix a code-generation bug that afflicted
1138 Intel x86 targets when @option{-O2} was specified
1139 compiling, for example, an old version of
1140 the @code{DNRM2} routine.
1142 The x87 coprocessor stack was being
1143 mismanaged in cases involving assigned @code{GOTO}
1147 @ifclear USERVISONLY
1149 Fix @code{DTime} intrinsic so as not to truncate
1150 results to integer values (on some systems).
1154 Fix @code{Signal} intrinsic so it offers portable
1155 support for 64-bit systems (such as Digital Alphas
1158 @ifclear USERVISONLY
1160 Fix run-time crash involving @code{NAMELIST} on 64-bit
1161 machines such as Alphas.
1164 @ifclear USERVISONLY
1166 Fix @command{g77} version of @code{libf2c} so it no longer
1167 produces a spurious @samp{I/O recursion} diagnostic at run time
1168 when an I/O operation (such as @samp{READ *,I}) is interrupted
1169 in a manner that causes the program to be terminated
1170 via the @code{f_exit} routine (such as via @kbd{C-c}).
1173 @ifclear USERVISONLY
1175 Fix @command{g77} crash triggered by @code{CASE} statement with
1176 an omitted lower or upper bound.
1179 @ifclear USERVISONLY
1181 Fix @command{g77} crash compiling references to @code{CPU_Time}
1185 @ifclear USERVISONLY
1187 Fix @command{g77} crash
1188 (or apparently infinite run-time)
1189 when compiling certain complicated expressions
1190 involving @code{COMPLEX} arithmetic
1191 (especially multiplication).
1194 @ifclear USERVISONLY
1196 Fix @command{g77} crash on statements such as
1197 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1198 @samp{Z} is @code{DOUBLE COMPLEX}.
1201 @ifclear USERVISONLY
1203 Fix a @command{g++} crash.
1207 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
1208 compile-time constant @code{INTEGER} expression.
1211 Fix @command{g77} @option{-g} option so procedures that
1212 use @code{ENTRY} can be stepped through, line by line,
1215 @ifclear USERVISONLY
1217 Fix a profiling-related bug in @command{gcc} back end for
1218 Intel x86 architecture.
1222 Allow any @code{REAL} argument to intrinsics
1223 @code{Second} and @code{CPU_Time}.
1226 Allow any numeric argument to intrinsics
1227 @code{Int2} and @code{Int8}.
1230 Use @code{tempnam}, if available, to open scratch files
1231 (as in @samp{OPEN(STATUS='SCRATCH')})
1232 so that the @code{TMPDIR} environment variable,
1233 if present, is used.
1236 Rename the @command{gcc} keyword @code{restrict} to
1237 @code{__restrict__}, to avoid rejecting valid, existing,
1239 Support for @code{restrict} is now more like support
1242 @ifclear USERVISONLY
1244 Fix @option{-fpedantic} to not reject procedure invocations
1245 such as @samp{I=J()} and @samp{CALL FOO()}.
1249 Fix @option{-fugly-comma} to affect invocations of
1250 only external procedures.
1251 Restore rejection of gratuitous trailing omitted
1252 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1255 Fix compiler so it accepts @option{-fgnu-intrinsics-*} and
1256 @option{-fbadu77-intrinsics-*} options.
1258 @ifclear USERVISONLY
1260 Improve diagnostic messages from @code{libf2c}
1261 so it is more likely that the printing of the
1262 active format string is limited to the string,
1263 with no trailing garbage being printed.
1265 (Unlike @command{f2c}, @command{g77} did not append
1266 a null byte to its compiled form of every
1267 format string specified via a @code{FORMAT} statement.
1268 However, @command{f2c} would exhibit the problem
1269 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1270 by printing @samp{(I)garbage} as the format string.)
1273 @ifclear USERVISONLY
1275 Improve compilation of @code{FORMAT} expressions so that
1276 a null byte is appended to the last operand if it
1278 This provides a cleaner run-time diagnostic as provided
1279 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
1282 @ifclear USERVISONLY
1284 Fix various crashes involving code with diagnosed errors.
1287 @ifclear USERVISONLY
1289 Fix cross-compilation bug when configuring @code{libf2c}.
1292 @ifclear USERVISONLY
1294 Improve diagnostics.
1297 @ifclear USERVISONLY
1299 Improve documentation and indexing.
1302 @ifclear USERVISONLY
1304 Upgrade to @code{libf2c} as of 1997-09-23.
1305 This fixes a formatted-I/O bug that afflicted
1306 64-bit systems with 32-bit integers
1307 (such as Digital Alpha running GNU/Linux).
1311 @c 1998-03-18: EGCS 1.0.2 released.
1312 @heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1:
1314 @ifclear USERVISONLY
1316 Fix @command{g77} crash triggered by @code{CASE} statement with
1317 an omitted lower or upper bound.
1320 @ifclear USERVISONLY
1322 Fix @command{g77} crash on statements such as
1323 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1324 @samp{Z} is @code{DOUBLE COMPLEX}.
1327 @ifclear USERVISONLY
1329 @cindex support, ELF
1330 @cindex -fPIC option
1331 @cindex options, -fPIC
1333 Fix @option{-fPIC} (such as compiling for ELF targets)
1334 on the Intel x86 architecture target
1335 so invalid assembler code is no longer produced.
1338 @ifclear USERVISONLY
1340 Fix @option{-fpedantic} to not reject procedure invocations
1341 such as @samp{I=J()} and @samp{CALL FOO()}.
1344 @ifclear USERVISONLY
1346 Fix @option{-fugly-comma} to affect invocations of
1347 only external procedures.
1348 Restore rejection of gratuitous trailing omitted
1349 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1353 Fix compiler so it accepts @option{-fgnu-intrinsics-*} and
1354 @option{-fbadu77-intrinsics-*} options.
1357 @c 1998-01-06: EGCS 1.0.1 released.
1358 @heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0:
1359 @ifclear USERVISONLY
1362 Fix run-time crash involving @code{NAMELIST} on 64-bit
1363 machines such as Alphas.
1367 @c 1997-12-03: EGCS 1.0 released.
1368 @heading In @code{EGCS} 1.0 versus @command{g77} 0.5.21:
1371 Version 1.0 of @code{egcs}
1372 contains several regressions against
1373 version 0.5.21 of @command{g77},
1375 ``vanilla'' @command{gcc} back end instead of patching
1376 it to fix a few bugs and improve performance in a
1379 Features that have been dropped from this version
1380 of @command{g77} due to their being implemented
1381 via @command{g77}-specific patches to the @command{gcc}
1382 back end in previous releases include:
1386 Support for the C-language @code{restrict} keyword.
1389 Support for the @option{-W} option warning about
1390 integer division by zero.
1393 The Intel x86-specific option @option{-malign-double}
1394 applying to stack-allocated data
1395 as well as statically-allocate data.
1398 @ifclear USERVISONLY
1399 Note that the @file{gcc/f/gbe/} subdirectory has been removed
1400 from this distribution as a result of @command{g77}
1401 being fully integrated with
1402 the @code{egcs} variant of the @command{gcc} back end.
1405 @ifclear USERVISONLY
1407 Fix code generation for iterative @code{DO} loops that
1408 have one or more references to the iteration variable,
1409 or to aliases of it, in their control expressions.
1410 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1413 @ifclear USERVISONLY
1415 Fix @code{DTime} intrinsic so as not to truncate
1416 results to integer values (on some systems).
1419 @ifclear USERVISONLY
1421 @c Toon Moene discovered these.
1422 Some Fortran code, miscompiled
1423 by @command{g77} built on @command{gcc} version 2.8.1
1424 on m68k-next-nextstep3 configurations
1425 when using the @option{-O2} option,
1426 is now compiled correctly.
1427 It is believed that a C function known to miscompile
1428 on that configuration
1429 when using the @samp{-O2 -funroll-loops} options
1430 also is now compiled correctly.
1433 @ifclear USERVISONLY
1435 Remove support for non-@code{egcs} versions of @command{gcc}.
1438 @cindex -@w{}-driver option
1439 @cindex @command{g77} options, -@w{}-driver
1440 @cindex options, -@w{}-driver
1442 Remove support for the @option{--driver} option,
1443 as @command{g77} now does all the driving,
1444 just like @command{gcc}.
1447 Allow any numeric argument to intrinsics
1448 @code{Int2} and @code{Int8}.
1450 @ifclear USERVISONLY
1452 Improve diagnostic messages from @code{libf2c}
1453 so it is more likely that the printing of the
1454 active format string is limited to the string,
1455 with no trailing garbage being printed.
1457 (Unlike @command{f2c}, @command{g77} did not append
1458 a null byte to its compiled form of every
1459 format string specified via a @code{FORMAT} statement.
1460 However, @code{f2c} would exhibit the problem
1461 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1462 by printing @samp{(I)garbage} as the format string.)
1465 @ifclear USERVISONLY
1467 Upgrade to @code{libf2c} as of 1997-09-23.
1468 This fixes a formatted-I/O bug that afflicted
1469 64-bit systems with 32-bit integers
1470 (such as Digital Alpha running GNU/Linux).
1474 @c 1997-09-09: 0.5.21 released.
1477 @ifclear USERVISONLY
1479 Fix a code-generation bug introduced by 0.5.20
1480 caused by loop unrolling (by specifying
1481 @option{-funroll-loops} or similar).
1482 This bug afflicted all code compiled by
1483 version 2.7.2.2.f.2 of @command{gcc} (C, C++,
1484 Fortran, and so on).
1487 @ifclear USERVISONLY
1489 Fix a code-generation bug manifested when
1490 combining local @code{EQUIVALENCE} with a
1491 @code{DATA} statement that follows
1492 the first executable statement (or is
1493 treated as an executable-context statement
1494 as a result of using the @option{-fpedantic}
1498 @ifclear USERVISONLY
1500 Fix a compiler crash that occurred when an
1501 integer division by a constant zero is detected.
1502 Instead, when the @option{-W} option is specified,
1503 the @command{gcc} back end issues a warning about such a case.
1504 This bug afflicted all code compiled by
1505 version 2.7.2.2.f.2 of @command{gcc} (C, C++,
1506 Fortran, and so on).
1510 When the @option{-W} option is specified, @command{gcc}, @command{g77},
1511 and other GNU compilers that incorporate the @command{gcc}
1512 back end as modified by @command{g77}, issue
1513 a warning about integer division by constant zero.
1516 @ifclear USERVISONLY
1518 Fix a compiler crash that occurred in some cases
1519 of procedure inlining.
1520 (Such cases became more frequent in 0.5.20.)
1523 @ifclear USERVISONLY
1525 Fix a compiler crash resulting from using @code{DATA}
1526 or similar to initialize a @code{COMPLEX} variable or
1530 @ifclear USERVISONLY
1532 Fix compiler crashes involving use of @code{AND}, @code{OR},
1533 or @code{XOR} intrinsics.
1536 @ifclear USERVISONLY
1538 Fix compiler bug triggered when using a @code{COMMON}
1539 or @code{EQUIVALENCE} variable
1540 as the target of an @code{ASSIGN}
1541 or assigned-@code{GOTO} statement.
1544 @ifclear USERVISONLY
1546 Fix compiler crashes due to using the name of a some
1547 non-standard intrinsics (such as @code{FTell} or
1548 @code{FPutC}) as such and as the name of a procedure
1550 Such dual use of a name in a program is allowed by
1554 @c @command{g77}'s version of @code{libf2c} has been modified
1555 @c so that the external names of library's procedures do not
1556 @c conflict with names used for Fortran procedures compiled
1557 @c by @command{g77}.
1558 @c An additional layer of jacket procedures has been added
1559 @c to @code{libf2c} to map the old names to the new names,
1560 @c for automatic use by programs that interface to the
1561 @c library procedures via the external-procedure mechanism.
1563 @c For example, the intrinsic @code{FPUTC} previously was
1564 @c implemented by @command{g77} as a call to the @code{libf2c}
1565 @c routine @code{fputc_}.
1566 @c This would conflict with a Fortran procedure named @code{FPUTC}
1567 @c (using default compiler options), and this conflict
1568 @c would cause a crash under certain circumstances.
1570 @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
1571 @c which does not conflict with the @code{fputc_} external
1572 @c that implements a Fortran procedure named @code{FPUTC}.
1574 @c Programs that refer to @code{FPUTC} as an external procedure
1575 @c without supplying their own implementation will link to
1576 @c the new @code{libf2c} routine @code{fputc_}, which is
1577 @c simply a jacket routine that calls @code{G77_fputc_0}.
1579 @ifclear USERVISONLY
1581 Place automatic arrays on the stack, even if
1582 @code{SAVE} or the @option{-fno-automatic} option
1584 This avoids a compiler crash in some cases.
1587 @ifclear USERVISONLY
1589 The @option{-malign-double} option now reliably aligns
1590 @code{DOUBLE PRECISION} optimally on Pentium and
1591 Pentium Pro architectures (586 and 686 in @command{gcc}).
1595 New option @option{-Wno-globals} disables warnings
1596 about ``suspicious'' use of a name both as a global
1597 name and as the implicit name of an intrinsic, and
1598 warnings about disagreements over the number or natures of
1599 arguments passed to global procedures, or the
1600 natures of the procedures themselves.
1602 The default is to issue such warnings, which are
1603 new as of this version of @command{g77}.
1606 New option @option{-fno-globals} disables diagnostics
1607 about potentially fatal disagreements
1608 analysis problems, such as disagreements over the
1609 number or natures of arguments passed to global
1610 procedures, or the natures of those procedures themselves.
1612 The default is to issue such diagnostics and flag
1613 the compilation as unsuccessful.
1614 With this option, the diagnostics are issued as
1615 warnings, or, if @option{-Wno-globals} is specified,
1616 are not issued at all.
1618 This option also disables inlining of global procedures,
1619 to avoid compiler crashes resulting from coding errors
1620 that these diagnostics normally would identify.
1622 @ifclear USERVISONLY
1624 Diagnose cases where a reference to a procedure
1625 disagrees with the type of that procedure, or
1626 where disagreements about the number or nature
1628 This avoids a compiler crash.
1631 @ifclear USERVISONLY
1633 Fix parsing bug whereby @command{g77} rejected a
1634 second initialization specification immediately
1635 following the first's closing @samp{/} without
1636 an intervening comma in a @code{DATA} statement,
1637 and the second specification was an implied-DO list.
1640 @ifclear USERVISONLY
1642 Improve performance of the @command{gcc} back end so
1643 certain complicated expressions involving @code{COMPLEX}
1644 arithmetic (especially multiplication) don't appear to
1645 take forever to compile.
1648 @ifclear USERVISONLY
1650 Fix a couple of profiling-related bugs in @command{gcc}
1654 @ifclear USERVISONLY
1656 Integrate GNU Ada's (GNAT's) changes to the back end,
1657 which consist almost entirely of bug fixes.
1658 These fixes are circa version 3.10p of GNAT.
1661 @ifclear USERVISONLY
1663 Include some other @command{gcc} fixes that seem useful in
1664 @command{g77}'s version of @command{gcc}.
1665 (See @file{gcc/ChangeLog} for details---compare it
1666 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
1671 Fix @code{libU77} routines that accept file and other names
1672 to strip trailing blanks from them, for consistency
1673 with other implementations.
1674 Blanks may be forcibly appended to such names by
1675 appending a single null character (@samp{CHAR(0)})
1676 to the significant trailing blanks.
1679 Fix @code{CHMOD} intrinsic to work with file names
1680 that have embedded blanks, commas, and so on.
1683 Fix @code{SIGNAL} intrinsic so it accepts an
1684 optional third @code{Status} argument.
1686 @ifclear USERVISONLY
1688 Fix @code{IDATE()} intrinsic subroutine (VXT form)
1689 so it accepts arguments in the correct order.
1690 Documentation fixed accordingly, and for
1691 @code{GMTIME()} and @code{LTIME()} as well.
1695 Make many changes to @code{libU77} intrinsics to
1696 support existing code more directly.
1698 Such changes include allowing both subroutine and
1699 function forms of many routines, changing @code{MCLOCK()}
1700 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
1701 introducing @code{MCLOCK8()} and @code{TIME8()} to
1702 return @code{INTEGER(KIND=2)} values,
1703 and placing functions that are intended to perform
1704 side effects in a new intrinsic group, @code{badu77}.
1706 @ifclear USERVISONLY
1708 Improve @code{libU77} so it is more portable.
1712 Add options @option{-fbadu77-intrinsics-delete},
1713 @option{-fbadu77-intrinsics-hide}, and so on.
1715 @ifclear USERVISONLY
1717 Fix crashes involving diagnosed or invalid code.
1720 @ifclear USERVISONLY
1722 @command{g77} and @command{gcc} now do a somewhat better
1723 job detecting and diagnosing arrays that are too
1724 large to handle before these cause diagnostics
1725 during the assembler or linker phase, a compiler
1726 crash, or generation of incorrect code.
1729 @ifclear USERVISONLY
1731 Make some fixes to alias analysis code.
1734 @ifclear USERVISONLY
1736 Add support for @code{restrict} keyword in @command{gcc}
1740 @ifclear USERVISONLY
1742 Support @command{gcc} version 2.7.2.3
1743 (modified by @command{g77} into version 2.7.2.3.f.1),
1745 support for prior versions of @command{gcc}.
1748 @ifclear USERVISONLY
1750 Incorporate GNAT's patches to the @command{gcc} back
1751 end into @command{g77}'s, so GNAT users do not need
1752 to apply GNAT's patches to build both GNAT and @command{g77}
1753 from the same source tree.
1756 @ifclear USERVISONLY
1758 Modify @command{make} rules and related code so that
1759 generation of Info documentation doesn't require
1760 compilation using @command{gcc}.
1761 Now, any ANSI C compiler should be adequate to
1762 produce the @command{g77} documentation (in particular,
1763 the tables of intrinsics) from scratch.
1767 Add @code{INT2} and @code{INT8} intrinsics.
1770 Add @code{CPU_TIME} intrinsic.
1773 Add @code{ALARM} intrinsic.
1776 @code{CTIME} intrinsic now accepts any @code{INTEGER}
1777 argument, not just @code{INTEGER(KIND=2)}.
1779 @ifclear USERVISONLY
1781 Warn when explicit type declaration disagrees with
1782 the type of an intrinsic invocation.
1785 @ifclear USERVISONLY
1787 Support @samp{*f771} entry in @command{gcc} @file{specs} file.
1790 @ifclear USERVISONLY
1792 Fix typo in @command{make} rule @command{g77-cross}, used only for
1796 @ifclear USERVISONLY
1798 Fix @code{libf2c} build procedure to re-archive library
1799 if previous attempt to archive was interrupted.
1802 @ifclear USERVISONLY
1804 Change @command{gcc} to unroll loops only during the last
1805 invocation (of as many as two invocations) of loop
1809 @ifclear USERVISONLY
1811 Improve handling of @option{-fno-f2c} so that code that
1812 attempts to pass an intrinsic as an actual argument,
1813 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
1814 that the run-time-library routine is, effectively,
1815 compiled with @option{-ff2c} in effect.
1818 @ifclear USERVISONLY
1820 Fix @command{g77} driver to recognize @option{-fsyntax-only}
1821 as an option that inhibits linking, just like @option{-c} or
1822 @option{-S}, and to recognize and properly handle the
1823 @option{-nostdlib}, @option{-M}, @option{-MM}, @option{-nodefaultlibs},
1824 and @option{-Xlinker} options.
1827 @ifclear USERVISONLY
1829 Upgrade to @code{libf2c} as of 1997-08-16.
1832 @ifclear USERVISONLY
1834 Modify @code{libf2c} to consistently and clearly diagnose
1835 recursive I/O (at run time).
1839 @command{g77} driver now prints version information (such as produced
1840 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
1843 The @samp{.r} suffix now designates a Ratfor source file,
1844 to be preprocessed via the @command{ratfor} command, available
1847 @ifclear USERVISONLY
1849 Fix some aspects of how @command{gcc} determines what kind of
1850 system is being configured and what kinds are supported.
1851 For example, GNU Linux/Alpha ELF systems now are directly
1855 @ifclear USERVISONLY
1857 Improve diagnostics.
1860 @ifclear USERVISONLY
1862 Improve documentation and indexing.
1865 @ifclear USERVISONLY
1867 Include all pertinent files for @code{libf2c} that come
1868 from @code{netlib.bell-labs.com}; give any such files
1869 that aren't quite accurate in @command{g77}'s version of
1870 @code{libf2c} the suffix @samp{.netlib}.
1873 @ifclear USERVISONLY
1875 Reserve @code{INTEGER(KIND=0)} for future use.
1879 @c 1997-02-28: 0.5.20 released.
1883 The @option{-fno-typeless-boz} option is now the default.
1885 This option specifies that non-decimal-radix
1886 constants using the prefixed-radix form (such as @samp{Z'1234'})
1887 are to be interpreted as @code{INTEGER(KIND=1)} constants.
1888 Specify @option{-ftypeless-boz} to cause such
1889 constants to be interpreted as typeless.
1891 (Version 0.5.19 introduced @option{-fno-typeless-boz} and
1895 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect},
1896 for information on the @option{-ftypeless-boz} option.
1900 Options @option{-ff90-intrinsics-enable} and
1901 @option{-fvxt-intrinsics-enable} now are the
1904 Some programs might use names that clash with
1905 intrinsic names defined (and now enabled) by these
1906 options or by the new @code{libU77} intrinsics.
1907 Users of such programs might need to compile them
1908 differently (using, for example, @option{-ff90-intrinsics-disable})
1909 or, better yet, insert appropriate @code{EXTERNAL}
1910 statements specifying that these names are not intended
1911 to be names of intrinsics.
1914 The @code{ALWAYS_FLUSH} macro is no longer defined when
1915 building @code{libf2c}, which should result in improved
1916 I/O performance, especially over NFS.
1918 @emph{Note:} If you have code that depends on the behavior
1919 of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
1920 you will have to modify @code{libf2c} accordingly before
1921 building it from this and future versions of @command{g77}.
1924 @xref{Output Assumed To Flush}, for more information.
1928 Dave Love's implementation of @code{libU77} has been
1929 added to the version of @code{libf2c} distributed with
1930 and built as part of @command{g77}.
1931 @command{g77} now knows about the routines in this library
1935 New option @option{-fvxt} specifies that the
1936 source file is written in VXT Fortran, instead of GNU Fortran.
1939 @xref{VXT Fortran}, for more information on the constructs
1940 recognized when the @option{-fvxt} option is specified.
1944 The @option{-fvxt-not-f90} option has been deleted,
1945 along with its inverse, @option{-ff90-not-vxt}.
1947 If you used one of these deleted options, you should
1948 re-read the pertinent documentation to determine which
1949 options, if any, are appropriate for compiling your
1950 code with this version of @command{g77}.
1953 @xref{Other Dialects}, for more information.
1957 The @option{-fugly} option now issues a warning, as it
1958 likely will be removed in a future version.
1960 (Enabling all the @option{-fugly-*} options is unlikely
1961 to be feasible, or sensible, in the future,
1962 so users should learn to specify only those
1963 @option{-fugly-*} options they really need for a
1964 particular source file.)
1967 The @option{-fugly-assumed} option, introduced in
1968 version 0.5.19, has been changed to
1969 better accommodate old and new code.
1972 @xref{Ugly Assumed-Size Arrays}, for more information.
1975 @ifclear USERVISONLY
1977 Make a number of fixes to the @command{g77} front end and
1978 the @command{gcc} back end to better support Alpha (AXP)
1980 This includes providing at least one bug-fix to the
1981 @command{gcc} back end for Alphas.
1985 Related to supporting Alpha (AXP) machines, the @code{LOC()}
1986 intrinsic and @code{%LOC()} construct now return
1987 values of @code{INTEGER(KIND=0)} type,
1988 as defined by the GNU Fortran language.
1990 This type is wide enough
1991 (holds the same number of bits)
1992 as the character-pointer type on the machine.
1994 On most machines, this won't make a difference,
1995 whereas, on Alphas and other systems with 64-bit pointers,
1996 the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)}
1997 (often referred to as @code{INTEGER*8})
1998 instead of the more common @code{INTEGER(KIND=1)}
1999 (often referred to as @code{INTEGER*4}).
2002 Emulate @code{COMPLEX} arithmetic in the @command{g77} front
2003 end, to avoid bugs in @code{complex} support in the
2004 @command{gcc} back end.
2005 New option @option{-fno-emulate-complex}
2006 causes @command{g77} to revert the 0.5.19 behavior.
2008 @ifclear USERVISONLY
2010 Fix bug whereby @samp{REAL A(1)}, for example, caused
2011 a compiler crash if @option{-fugly-assumed} was in effect
2012 and @var{A} was a local (automatic) array.
2013 That case is no longer affected by the new
2014 handling of @option{-fugly-assumed}.
2017 @ifclear USERVISONLY
2019 Fix @command{g77} command driver so that @samp{g77 -o foo.f}
2020 no longer deletes @file{foo.f} before issuing other
2021 diagnostics, and so the @option{-x} option is properly
2025 @ifclear USERVISONLY
2027 Enable inlining of subroutines and functions by the @command{gcc}
2029 This works as it does for @command{gcc} itself---program units
2030 may be inlined for invocations that follow them in the same
2031 program unit, as long as the appropriate compile-time
2032 options are specified.
2036 Dummy arguments are no longer assumed to potentially alias
2038 other dummy arguments or @code{COMMON} areas when any of
2039 these are defined (assigned to) by Fortran code.
2041 This can result in faster and/or smaller programs when
2042 compiling with optimization enabled, though on some
2043 systems this effect is observed only when @option{-fforce-addr}
2046 New options @option{-falias-check}, @option{-fargument-alias},
2047 @option{-fargument-noalias},
2048 and @option{-fno-argument-noalias-global} control the
2049 way @command{g77} handles potential aliasing.
2052 @xref{Aliasing Assumed To Work}, for detailed information on why the
2053 new defaults might result in some programs no longer working the way they
2054 did when compiled by previous versions of @command{g77}.
2057 @ifclear USERVISONLY
2059 The @code{CONJG()} and @code{DCONJG()} intrinsics now
2060 are compiled in-line.
2063 @ifclear USERVISONLY
2065 The bug-fix for 0.5.19.1 has been re-done.
2066 The @command{g77} compiler has been changed back to
2067 assume @code{libf2c} has no aliasing problems in
2068 its implementations of the @code{COMPLEX} (and
2069 @code{DOUBLE COMPLEX}) intrinsics.
2070 The @code{libf2c} has been changed to have no such
2073 As a result, 0.5.20 is expected to offer improved performance
2074 over 0.5.19.1, perhaps as good as 0.5.19 in most
2075 or all cases, due to this change alone.
2077 @emph{Note:} This change requires version 0.5.20 of
2078 @code{libf2c}, at least, when linking code produced
2079 by any versions of @command{g77} other than 0.5.19.1.
2080 Use @samp{g77 -v} to determine the version numbers
2081 of the @code{libF77}, @code{libI77}, and @code{libU77}
2082 components of the @code{libf2c} library.
2083 (If these version numbers are not printed---in
2084 particular, if the linker complains about unresolved
2085 references to names like @samp{g77__fvers__}---that
2086 strongly suggests your installation has an obsolete
2087 version of @code{libf2c}.)
2091 New option @option{-fugly-assign} specifies that the
2092 same memory locations are to be used to hold the
2093 values assigned by both statements @samp{I = 3} and
2094 @samp{ASSIGN 10 TO I}, for example.
2095 (Normally, @command{g77} uses a separate memory location
2096 to hold assigned statement labels.)
2099 @xref{Ugly Assigned Labels}, for more information.
2103 @code{FORMAT} and @code{ENTRY} statements now are allowed to
2104 precede @code{IMPLICIT NONE} statements.
2106 @ifclear USERVISONLY
2108 Produce diagnostic for unsupported @code{SELECT CASE} on
2109 @code{CHARACTER} type, instead of crashing, at compile time.
2112 @ifclear USERVISONLY
2114 Fix crashes involving diagnosed or invalid code.
2117 @ifclear USERVISONLY
2119 Change approach to building @code{libf2c} archive
2120 (@file{libf2c.a}) so that members are added to it
2121 only when truly necessary, so the user that installs
2122 an already-built @command{g77} doesn't need to have write
2123 access to the build tree (whereas the user doing the
2124 build might not have access to install new software
2128 @ifclear USERVISONLY
2130 Support @command{gcc} version 2.7.2.2
2131 (modified by @command{g77} into version 2.7.2.2.f.2),
2133 support for prior versions of @command{gcc}.
2136 @ifclear USERVISONLY
2138 Upgrade to @code{libf2c} as of 1997-02-08, and
2139 fix up some of the build procedures.
2142 @ifclear USERVISONLY
2144 Improve general build procedures for @command{g77},
2145 fixing minor bugs (such as deletion of any file
2146 named @file{f771} in the parent directory of @code{gcc/}).
2150 Enable full support of @code{INTEGER(KIND=2)}
2151 (often referred to as @code{INTEGER*8})
2153 @code{libf2c} and @file{f2c.h} so that @command{f2c} users
2154 may make full use of its features via the @command{g77}
2155 version of @file{f2c.h} and the @code{INTEGER(KIND=2)}
2156 support routines in the @command{g77} version of @code{libf2c}.
2159 Improve @command{g77} driver and @code{libf2c} so that @samp{g77 -v}
2160 yields version information on the library.
2163 The @code{SNGL} and @code{FLOAT} intrinsics now are
2164 specific intrinsics, instead of synonyms for the
2165 generic intrinsic @code{REAL}.
2168 New intrinsics have been added.
2169 These are @code{REALPART}, @code{IMAGPART},
2171 @code{LONG}, and @code{SHORT}.
2174 A new group of intrinsics, @code{gnu}, has been added
2175 to contain the new @code{REALPART}, @code{IMAGPART},
2176 and @code{COMPLEX} intrinsics.
2177 An old group, @code{dcp}, has been removed.
2180 Complain about industry-wide ambiguous references
2181 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
2182 where @var{expr} is @code{DOUBLE COMPLEX} (or any
2183 complex type other than @code{COMPLEX}), unless
2184 @option{-ff90} option specifies Fortran 90 interpretation
2185 or new @option{-fugly-complex} option, in conjunction with
2186 @option{-fnot-f90}, specifies @command{f2c} interpretation.
2188 @ifclear USERVISONLY
2190 Make improvements to diagnostics.
2193 @ifclear USERVISONLY
2195 Speed up compiler a bit.
2198 @ifclear USERVISONLY
2200 Improvements to documentation and indexing, including
2201 a new chapter containing information on one, later
2202 more, diagnostics that users are directed to pull
2203 up automatically via a message in the diagnostic itself.
2205 (Hence the menu item @code{M} for the node
2206 @code{Diagnostics} in the top-level menu of
2207 the Info documentation.)
2211 @ifclear DOC-OLDNEWS
2212 @heading In previous versions:
2214 Information on previous versions is archived
2215 in @file{@value{path-g77}/news.texi}
2216 following the test of the @code{DOC-OLDNEWS} macro.
2220 @c 1997-02-01: 0.5.19.1 released.
2221 @heading In 0.5.19.1:
2224 Code-generation bugs afflicting operations on complex
2225 data have been fixed.
2227 These bugs occurred when assigning the result of an
2228 operation to a complex variable (or array element)
2229 that also served as an input to that operation.
2231 The operations affected by this bug were: @code{CONJG()},
2232 @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
2233 @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
2234 @code{CSQRT()}, @code{CDSQRT()}, complex division, and
2235 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
2237 (The related generic and @samp{Z}-prefixed intrinsics,
2238 such as @code{ZSIN()}, also were affected.)
2240 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
2241 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
2242 @code{DOUBLE COMPLEX}) have been fixed.
2245 @c 1996-12-07: 0.5.19 released.
2249 Fix @code{FORMAT} statement parsing so negative values for
2250 specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
2251 are correctly processed as negative.
2254 Fix @code{SIGNAL} intrinsic so it once again accepts a
2255 procedure as its second argument.
2258 A temporary kludge option provides bare-bones information on
2259 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
2262 New @option{-fonetrip} option specifies FORTRAN-66-style
2263 one-trip @code{DO} loops.
2266 New @option{-fno-silent} option causes names of program units
2267 to be printed as they are compiled, in a fashion similar to
2268 UNIX @command{f77} and @command{f2c}.
2271 New @option{-fugly-assumed} option specifies that arrays
2272 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
2273 treated as assumed-size.
2276 New @option{-fno-typeless-boz} option specifies that non-decimal-radix
2277 constants using the prefixed-radix form (such as @samp{Z'1234'})
2278 are to be interpreted as @code{INTEGER} constants.
2281 New @option{-ff66} option is a ``shorthand'' option that specifies
2282 behaviors considered appropriate for FORTRAN 66 programs.
2285 New @option{-ff77} option is a ``shorthand'' option that specifies
2286 behaviors considered appropriate for UNIX @command{f77} programs.
2289 New @option{-fugly-comma} and @option{-fugly-logint} options provided
2290 to perform some of what @option{-fugly} used to do.
2291 @option{-fugly} and @option{-fno-ugly} are now ``shorthand'' options,
2292 in that they do nothing more than enable (or disable) other
2293 @option{-fugly-*} options.
2296 Fix parsing of assignment statements involving targets that
2297 are substrings of elements of @code{CHARACTER} arrays having
2298 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
2299 @samp{REALFUNCTIONFOO}.
2302 Fix crashes involving diagnosed code.
2305 Fix handling of local @code{EQUIVALENCE} areas so certain cases
2306 of valid Fortran programs are not misdiagnosed as improperly
2307 extending the area backwards.
2310 Support @command{gcc} version 2.7.2.1.
2313 Upgrade to @code{libf2c} as of 1996-09-26, and
2314 fix up some of the build procedures.
2317 Change code generation for list-directed I/O so it allows
2318 for new versions of @code{libf2c} that might return non-zero
2319 status codes for some operations previously assumed to always
2322 This change not only affects how @code{IOSTAT=} variables
2323 are set by list-directed I/O, it also affects whether
2324 @code{END=} and @code{ERR=} labels are reached by these
2328 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
2329 procedures in @code{libf2c}.
2332 Modify @code{fseek_()} in @code{libf2c} to be more portable
2333 (though, in practice, there might be no systems where this
2334 matters) and to catch invalid @code{whence} arguments.
2337 Some useless warnings from the @option{-Wunused} option have
2341 Fix a problem building the @file{f771} executable
2342 on AIX systems by linking with the @option{-bbigtoc} option.
2345 Abort configuration if @command{gcc} has not been patched
2346 using the patch file provided in the @file{gcc/f/gbe/}
2350 Add options @option{--help} and @option{--version} to the
2351 @command{g77} command, to conform to GNU coding guidelines.
2352 Also add printing of @command{g77} version number when
2353 the @option{--verbose} (@option{-v}) option is used.
2356 Change internally generated name for local @code{EQUIVALENCE}
2357 areas to one based on the alphabetically sorted first name
2358 in the list of names for entities placed at the beginning
2362 Improvements to documentation and indexing.
2365 @c 1996-04-01: 0.5.18 released.
2369 Add some rudimentary support for @code{INTEGER*1},
2370 @code{INTEGER*2}, @code{INTEGER*8},
2371 and their @code{LOGICAL} equivalents.
2372 (This support works on most, maybe all, @command{gcc} targets.)
2374 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2375 for providing the patch for this!
2377 Among the missing elements from the support for these
2378 features are full intrinsic support and constants.
2381 Add some rudimentary support for the @code{BYTE} and
2382 @code{WORD} type-declaration statements.
2383 @code{BYTE} corresponds to @code{INTEGER*1},
2384 while @code{WORD} corresponds to @code{INTEGER*2}.
2386 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2387 for providing the patch for this!
2390 The compiler code handling intrinsics has been largely
2391 rewritten to accommodate the new types.
2392 No new intrinsics or arguments for existing
2393 intrinsics have been added, so there is, at this
2394 point, no intrinsic to convert to @code{INTEGER*8},
2398 Support automatic arrays in procedures.
2401 Reduce space/time requirements for handling large
2402 @emph{sparsely} initialized aggregate arrays.
2403 This improvement applies to only a subset of
2404 the general problem to be addressed in 0.6.
2407 Treat initial values of zero as if they weren't
2408 specified (in DATA and type-declaration statements).
2409 The initial values will be set to zero anyway, but the amount
2410 of compile time processing them will be reduced,
2411 in some cases significantly (though, again, this
2412 is only a subset of the general problem to be
2415 A new option, @option{-fzeros}, is introduced to
2416 enable the traditional treatment of zeros as any
2420 With @option{-ff90} in force, @command{g77} incorrectly
2421 interpreted @samp{REAL(Z)} as returning a @code{REAL}
2422 result, instead of as a @code{DOUBLE PRECISION}
2424 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
2426 With @option{-fno-f90} in force, the interpretation remains
2427 unchanged, since this appears to be how at least some
2428 F77 code using the @code{DOUBLE COMPLEX} extension expected
2431 Essentially, @samp{REAL(Z)} in F90 is the same as
2432 @samp{DBLE(Z)}, while in extended F77, it appears to
2433 be the same as @samp{REAL(REAL(Z))}.
2436 An expression involving exponentiation, where both operands
2437 were type @code{INTEGER} and the right-hand operand
2438 was negative, was erroneously evaluated.
2441 Fix bugs involving @code{DATA} implied-@code{DO} constructs
2442 (these involved an errant diagnostic and a crash, both on good
2443 code, one involving subsequent statement-function definition).
2446 Close @code{INCLUDE} files after processing them, so compiling source
2447 files with lots of @code{INCLUDE} statements does not result in
2448 being unable to open @code{INCLUDE} files after all the available
2449 file descriptors are used up.
2452 Speed up compiling, especially of larger programs, and perhaps
2453 slightly reduce memory utilization while compiling (this is
2454 @emph{not} the improvement planned for 0.6 involving large aggregate
2455 areas)---these improvements result from simply turning
2456 off some low-level code to do self-checking that hasn't been
2457 triggered in a long time.
2460 Introduce three new options that
2461 implement optimizations in the @command{gcc} back end (GBE).
2462 These options are @option{-fmove-all-movables}, @option{-freduce-all-givs},
2463 and @option{-frerun-loop-opt}, which are enabled, by default,
2464 for Fortran compilations.
2465 These optimizations are intended to help toon Fortran programs.
2468 Patch the GBE to do a better job optimizing certain
2469 kinds of references to array elements.
2472 Due to patches to the GBE, the version number of @command{gcc}
2473 also is patched to make it easier to manage installations,
2474 especially useful if it turns out a @command{g77} change to the
2477 The @command{g77}-modified version number is the @command{gcc}
2478 version number with the string @samp{.f.@var{n}} appended,
2479 where @samp{f} identifies the version as enhanced for
2480 Fortran, and @var{n} is @samp{1} for the first Fortran
2481 patch for that version of @command{gcc}, @samp{2} for the
2484 So, this introduces version 2.7.2.f.1 of @command{gcc}.
2487 Make several improvements and fixes to diagnostics, including
2488 the removal of two that were inappropriate or inadequate.
2491 Warning about two successive arithmetic operators, produced
2492 by @option{-Wsurprising}, now produced @emph{only} when both
2493 operators are, indeed, arithmetic (not relational/boolean).
2496 @option{-Wsurprising} now warns about the remaining cases
2497 of using non-integral variables for implied-@code{DO}
2498 loops, instead of these being rejected unless @option{-fpedantic}
2499 or @option{-fugly} specified.
2502 Allow @code{SAVE} of a local variable or array, even after
2503 it has been given an initial value via @code{DATA}, for example.
2506 Introduce an Info version of @command{g77} documentation, which
2507 supersedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
2508 @file{gcc/f/PROJECTS}.
2509 These files will be removed in a future release.
2510 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
2511 @file{gcc/f/NEWS} now are automatically built from
2512 the texinfo source when distributions are made.
2514 This effort was inspired by a first pass at translating
2515 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
2516 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
2519 New @option{-fno-second-underscore} option to specify
2520 that, when @option{-funderscoring} is in effect, a second
2521 underscore is not to be appended to Fortran names already
2522 containing an underscore.
2525 Change the way iterative @code{DO} loops work to follow
2527 In particular, calculation of the iteration count is
2528 still done by converting the start, end, and increment
2529 parameters to the type of the @code{DO} variable, but
2530 the result of the calculation is always converted to
2531 the default @code{INTEGER} type.
2533 (This should have no effect on existing code compiled
2534 by @command{g77}, but code written to assume that use
2535 of a @emph{wider} type for the @code{DO} variable
2536 will result in an iteration count being fully calculated
2537 using that wider type (wider
2538 than default @code{INTEGER}) must be rewritten.)
2541 Support @command{gcc} version 2.7.2.
2544 Upgrade to @code{libf2c} as of 1996-03-23, and
2545 fix up some of the build procedures.
2547 Note that the email addresses related to @command{f2c}
2548 have changed---the distribution site now is
2549 named @code{netlib.bell-labs.com}, and the
2550 maintainer's new address is @email{dmg@@bell-labs.com}.
2553 @c 1995-11-18: 0.5.17 released.
2557 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
2558 system's @file{/dev/null} special file if run by user @code{root}.
2560 @strong{All users} of version 0.5.16 should ensure that
2561 they have not removed @file{/dev/null} or replaced it with an ordinary
2562 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
2563 @samp{ls -l /dev/zero}.
2564 If the output isn't basically the
2565 same, contact your system
2566 administrator about restoring @file{/dev/null} to its proper status).
2568 This bug is particularly insidious because removing @file{/dev/null} as
2569 a special file can go undetected for quite a while, aside from
2570 various applications and programs exhibiting sudden, strange
2573 I sincerely apologize for not realizing the
2574 implications of the fact that when @samp{g77 -v} runs the @command{ld} command
2575 with @samp{-o /dev/null} that @command{ld} tries to @emph{remove} the executable
2576 it is supposed to build (especially if it reports unresolved
2577 references, which it should in this case)!
2580 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
2583 Fix crash that can occur when diagnostics given outside of any
2584 program unit (such as when input file contains @samp{@@foo}).
2587 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
2590 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
2591 and issue clearer error message in cases where target of @code{ASSIGN}
2592 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
2596 Make @code{libf2c} build procedures work on more systems again by
2597 eliminating unnecessary invocations of @samp{ld -r -x} and @command{mv}.
2600 Fix omission of @option{-funix-intrinsics-@dots{}} options in list of permitted
2601 options to compiler.
2604 Fix failure to always diagnose missing type declaration for
2605 @code{IMPLICIT NONE}.
2608 Fix compile-time performance problem (which could sometimes
2609 crash the compiler, cause a hang, or whatever, due to a bug
2610 in the back end) involving exponentiation with a large @code{INTEGER}
2611 constant for the right-hand operator (e.g. @samp{I**32767}).
2614 Fix build procedures so cross-compiling @command{g77} (the @command{fini}
2615 utility in particular) is properly built using the host compiler.
2618 Add new @option{-Wsurprising} option to warn about constructs that are
2619 interpreted by the Fortran standard (and @command{g77}) in ways that
2620 are surprising to many programmers.
2623 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
2624 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
2626 @emph{Note:} You should
2627 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
2628 these as generic intrinsics, to improve likelihood of diagnostics
2629 (instead of subtle run-time bugs) when using a compiler that
2630 doesn't support these as intrinsics (e.g. @command{f2c}).
2633 Remove from @option{-fno-pedantic} the diagnostic about @code{DO}
2634 with non-@code{INTEGER} index variable; issue that under
2635 @option{-Wsurprising} instead.
2638 Clarify some diagnostics that say things like ``ignored'' when that's
2642 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
2646 Minor improvements to code generation for various operations on
2647 @code{LOGICAL} operands.
2650 Minor improvement to code generation for some @code{DO} loops on some
2654 Support @command{gcc} version 2.7.1.
2657 Upgrade to @code{libf2c} as of 1995-11-15.
2660 @c 1995-08-30: 0.5.16 released.
2664 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
2665 not involving @code{COMMON}.
2668 Fix code-generation bugs involving invoking ``gratis'' library procedures
2669 in @code{libf2c} from code compiled with @option{-fno-f2c} by making these
2670 procedures known to @command{g77} as intrinsics (not affected by -fno-f2c).
2671 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
2672 @code{DERF()}, and @code{DERFC()}.
2675 Update @code{libf2c} to include netlib patches through 1995-08-16, and
2676 @code{#define} @code{WANT_LEAD_0} to 1 to make @command{g77}-compiled code more
2677 consistent with other Fortran implementations by outputting
2678 leading zeros in formatted and list-directed output.
2681 Fix a code-generation bug involving adjustable dummy arrays with high
2682 bounds whose primaries are changed during procedure execution, and
2683 which might well improve code-generation performance for such arrays
2684 compared to @command{f2c} plus @command{gcc} (but apparently only when using
2685 @file{gcc-2.7.0} or later).
2688 Fix a code-generation bug involving invocation of @code{COMPLEX} and
2689 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
2690 @code{DOUBLE COMPLEX} divides, when the result
2691 of the invocation or divide is assigned directly to a variable
2692 that overlaps one or more of the arguments to the invocation or divide.
2695 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
2696 nonconstant and the expression is used to dimension a dummy
2697 array, since the @command{gcc} back end does not support the necessary
2698 mechanics (and the @command{gcc} front end rejects the equivalent
2699 construct, as it turns out).
2702 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
2705 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
2706 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
2709 Fix crashes and such involving diagnosed code.
2712 Diagnose, instead of crashing on, statement function definitions
2713 having duplicate dummy argument names.
2716 Fix bug causing rejection of good code involving statement function
2720 Fix bug resulting in debugger not knowing size of local equivalence
2721 area when any member of area has initial value (via @code{DATA},
2725 Fix installation bug that prevented installation of @command{g77} driver.
2726 Provide for easy selection of whether to install copy of @command{g77}
2727 as @command{f77} to replace the broken code.
2730 Fix @command{gcc} driver (affects @command{g77} thereby) to not
2731 gratuitously invoke the
2732 @code{f771} program (e.g. when @option{-E} is specified).
2735 Fix diagnostic to point to correct source line when it immediately
2736 follows an @code{INCLUDE} statement.
2739 Support more compiler options in @command{gcc}/@command{g77} when
2740 compiling Fortran files.
2741 These options include @option{-p}, @option{-pg}, @option{-aux-info}, @option{-P},
2742 correct setting of version-number macros for preprocessing, full
2743 recognition of @option{-O0}, and
2744 automatic insertion of configuration-specific linker specs.
2747 Add new intrinsics that interface to existing routines in @code{libf2c}:
2748 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
2749 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
2750 @code{SIGNAL}, and @code{SYSTEM}.
2751 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
2752 @code{SYSTEM} are intrinsic subroutines, not functions (since they
2753 have side effects), so to get the return values from @code{SIGNAL}
2754 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
2755 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
2758 Add new intrinsic group named @code{unix} to contain the new intrinsics,
2759 and by default enable this new group.
2762 Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
2766 Improve @command{g77} so that @samp{g77 -v} by itself (or with
2767 certain other options, including @option{-B}, @option{-b}, @option{-i},
2768 @option{-nostdlib}, and @option{-V}) reports lots more useful
2769 version info, and so that long-form options @command{gcc} accepts are
2770 understood by @command{g77} as well (even in truncated, unambiguous forms).
2773 Add new @command{g77} option @option{--driver=name} to specify driver when
2774 default, @command{gcc}, isn't appropriate.
2777 Add support for @samp{#} directives (as output by the preprocessor) in the
2778 compiler, and enable generation of those directives by the
2779 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
2780 info are more useful to users of the preprocessor.
2783 Produce better diagnostics, more like @command{gcc}, with info such as
2784 @samp{In function `foo':} and @samp{In file included from...:}.
2787 Support @command{gcc}'s @option{-fident} and @option{-fno-ident} options.
2790 When @option{-Wunused} in effect, don't warn about local variables used as
2791 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
2792 variables, even though, strictly speaking, these are not uses
2793 of the variables themselves.
2796 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
2797 at all, since there's no way to turn this off for individual
2798 cases (@command{g77} might someday start warning about these)---applies
2799 to @command{gcc} versions 2.7.0 and later, since earlier versions didn't
2800 warn about unused dummy arguments.
2803 New option @option{-fno-underscoring} that inhibits transformation of names
2804 (by appending one or two underscores) so users may experiment
2805 with implications of such an environment.
2808 Minor improvement to @file{gcc/f/info} module to make it easier to build
2809 @command{g77} using the native (non-@command{gcc}) compiler on certain machines
2810 (but definitely not all machines nor all non-@command{gcc} compilers).
2812 do not report bugs showing problems compilers have with
2813 macros defined in @file{gcc/f/target.h} and used in places like
2814 @file{gcc/f/expr.c}.
2817 Add warning to be printed for each invocation of the compiler
2818 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
2820 since @command{g77} is known to not work well for such cases.
2823 Lots of new documentation (though work is still needed to put it into
2824 canonical GNU format).
2827 Build @code{libf2c} with @option{-g0}, not @option{-g2}, in effect
2828 (by default), to produce
2829 smaller library without lots of debugging clutter.
2832 @c 1995-05-19: 0.5.15 released.
2836 Fix bad code generation involving @samp{X**I} and temporary, internal variables
2837 generated by @command{g77} and the back end (such as for @code{DO} loops).
2840 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
2843 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
2846 Fix crash or other erratic behavior when null character constant
2847 (@samp{''}) is encountered.
2850 Fix crash or other erratic behavior involving diagnosed code.
2853 Fix code generation for external functions returning type @code{REAL} when
2854 the @option{-ff2c} option is in force (which it is by default) so that
2855 @command{f2c} compatibility is indeed provided.
2858 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
2859 with an array declarator.
2862 New @option{-ffixed-line-length-@var{n}} option, where @var{n} is the
2864 of a typical fixed-form line, defaulting to 72 columns, such
2865 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
2866 meaning no characters are ignored.
2867 does not affect lines
2868 with @samp{&} in column 1, which are always processed as if
2869 @option{-ffixed-line-length-none} was in effect.
2872 No longer generate better code for some kinds of array references,
2873 as @command{gcc} back end is to be fixed to do this even better, and it
2874 turned out to slow down some code in some cases after all.
2877 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
2878 values (e.g. via @code{DATA}), uninitialized members now always
2879 initialized to binary zeros (though this is not required by
2880 the standard, and might not be done in future versions
2882 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
2883 (essentially those with members of more than one type), the
2884 uninitialized members were initialized to spaces, to
2885 cater to @code{CHARACTER} types, but it seems no existing code expects
2886 that, while much existing code expects binary zeros.
2892 Don't emit bad code when low bound of adjustable array is nonconstant
2893 and thus might vary as an expression at run time.
2896 Emit correct code for calculation of number of trips in @code{DO} loops
2898 where the loop should not execute at all.
2899 (This bug affected cases
2900 where the difference between the begin and end values was less
2901 than the step count, though probably not for floating-point cases.)
2904 Fix crash when extra parentheses surround item in
2905 @code{DATA} implied-@code{DO} list.
2908 Fix crash over minor internal inconsistencies in handling diagnostics,
2909 just substitute dummy strings where necessary.
2912 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
2915 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
2916 is a string of one or more digits.
2919 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
2922 Fix various crashes involving code with diagnosed errors.
2925 Support @option{-I} option for @code{INCLUDE} statement, plus @command{gcc}'s
2926 @file{header.gcc} facility for handling systems like MS-DOS.
2929 Allow @code{INCLUDE} statement to be continued across multiple lines,
2930 even allow it to coexist with other statements on the same line.
2933 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
2934 fixes a bug involving infinite loops reading EOF with empty list-directed
2938 Remove all the @command{g77}-specific auto-configuration scripts, code,
2940 except for temporary substitutes for bsearch() and strtoul(), as
2941 too many configure/build problems were reported in these areas.
2942 People will have to fix their systems' problems themselves, or at
2943 least somewhere other than @command{g77}, which expects a working ANSI C
2944 environment (and, for now, a GNU C compiler to compile @command{g77} itself).
2947 Complain if initialized common redeclared as larger in subsequent program
2951 Warn if blank common initialized, since its size can vary and hence
2952 related warnings that might be helpful won't be seen.
2955 New @option{-fbackslash} option, on by default, that causes @samp{\}
2956 within @code{CHARACTER}
2957 and Hollerith constants to be interpreted a la GNU C.
2959 this behavior is somewhat different from @command{f2c}'s, which supports only
2960 a limited subset of backslash (escape) sequences.
2963 Make @option{-fugly-args} the default.
2966 New @option{-fugly-init} option, on by default, that allows typeless/Hollerith
2967 to be specified as initial values for variables or named constants
2968 (@code{PARAMETER}), and also allows character<->numeric conversion in
2969 those contexts---turn off via @option{-fno-ugly-init}.
2972 New @option{-finit-local-zero} option to initialize
2973 local variables to binary zeros.
2974 This does not affect whether they are @code{SAVE}d, i.e. made
2975 automatic or static.
2978 New @option{-Wimplicit} option to warn about implicitly typed variables, arrays,
2980 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
2983 @option{-Wall} now implies @option{-Wuninitialized} as with @command{gcc}
2984 (i.e. unless @option{-O} not specified, since @option{-Wuninitialized}
2985 requires @option{-O}), and implies @option{-Wunused} as well.
2988 @option{-Wunused} no longer gives spurious messages for unused
2989 @code{EXTERNAL} names (since they are assumed to refer to block data
2990 program units, to make use of libraries more reliable).
2993 Support @code{%LOC()} and @code{LOC()} of character arguments.
2996 Support null (zero-length) character constants and expressions.
2999 Support @command{f2c}'s @code{IMAG()} generic intrinsic.
3002 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
3003 character expressions that are valid in assignments but
3004 not normally as actual arguments.
3007 Support @command{f2c}-style @samp{&} in column 1 to mean continuation line.
3010 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
3011 in @code{BLOCK DATA}, even though these are not allowed by the standard.
3014 Allow @code{RETURN} in main program unit.
3017 Changes to Hollerith-constant support to obey Appendix C of the
3022 Now padded on the right with zeros, not spaces.
3025 Hollerith ``format specifications'' in the form of arrays of
3026 non-character allowed.
3029 Warnings issued when non-space truncation occurs when converting
3033 When specified as actual argument, now passed
3034 by reference to @code{INTEGER} (padded on right with spaces if constant
3035 too small, otherwise fully intact if constant wider the @code{INTEGER}
3036 type) instead of by value.
3039 @strong{Warning:} @command{f2c} differs on the
3040 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
3041 same as @samp{CALL FOO('X')}, but which the standard and @command{g77} treat
3042 as @samp{CALL FOO(%REF('X '))} (padded with as many spaces as necessary
3043 to widen to @code{INTEGER}), essentially.
3046 Changes and fixes to typeless-constant support:
3050 Now treated as a typeless double-length @code{INTEGER} value.
3053 Warnings issued when overflow occurs.
3056 Padded on the left with zeros when converting
3060 Should be properly aligned and ordered on
3061 the target machine for whatever type it is turned into.
3064 When specified as actual argument, now passed as reference to
3065 a default @code{INTEGER} constant.
3069 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
3070 the expression plus a length for the expression just as if
3071 it were a @code{CHARACTER} expression.
3072 For example, @samp{CALL FOO(%DESCR(D))}, where
3073 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
3076 Name of multi-entrypoint master function changed to incorporate
3077 the name of the primary entry point instead of a decimal
3078 value, so the name of the master function for @samp{SUBROUTINE X}
3079 with alternate entry points is now @samp{__g77_masterfun_x}.
3082 Remove redundant message about zero-step-count @code{DO} loops.
3085 Clean up diagnostic messages, shortening many of them.
3088 Fix typo in @command{g77} man page.
3091 Clarify implications of constant-handling bugs in @file{f/BUGS}.
3094 Generate better code for @samp{**} operator with a right-hand operand of
3095 type @code{INTEGER}.
3098 Generate better code for @code{SQRT()} and @code{DSQRT()},
3099 also when @option{-ffast-math}
3100 specified, enable better code generation for @code{SIN()} and @code{COS()}.
3103 Generate better code for some kinds of array references.
3106 Speed up lexing somewhat (this makes the compilation phase noticeably