* decl.c (cplus_expand_expr_stmt): Don't call break_out_cleanups
[official-gcc.git] / gcc / f / news.texi
blob455989b6f2fbeab356e6dde0c76b6bd145a4ae25
1 @c Copyright (C) 1995-1999 Free Software Foundation, Inc.
2 @c This is part of the G77 manual.
3 @c For copying conditions, see the file g77.texi.
5 @c The text of this file appears in the file NEWS
6 @c in the G77 distribution, as well as in the G77 manual.
8 @c Keep this the same as the dates above, since it's used
9 @c in the standalone derivations of this file (e.g. NEWS).
10 @set copyrights-news 1995-1999
12 @set last-update-news 1999-07-08
14 @include root.texi
16 @ifset DOC-NEWS
17 @c The immediately following lines apply to the NEWS file
18 @c which is derived from this file.
19 @emph{Note:} This file is automatically generated from the files
20 @file{news0.texi} and @file{news.texi}.
21 @file{NEWS} is @emph{not} a source file,
22 although it is normally included within source distributions.
24 This file lists news about the @value{which-g77} version
25 (and some other versions) of the GNU Fortran compiler.
26 Copyright (C) @value{copyrights-news} Free Software Foundation, Inc.
27 You may copy, distribute, and modify it freely as long as you preserve
28 this copyright notice and permission notice.
30 @node Top,,, (dir)
31 @chapter News About GNU Fortran
32 @end ifset
34 @ifset DOC-G77
35 @ifset USERVISONLY
36 @node Changes
37 @chapter User-visible Changes
38 @cindex versions, recent
39 @cindex recent versions
40 @cindex changes, user-visible
41 @cindex user-visible changes
43 This chapter describes changes to @code{g77} that are visible
44 to the programmers who actually write and maintain Fortran
45 code they compile with @code{g77}.
46 Information on changes to installation procedures,
47 changes to the documentation, and bug fixes is
48 not provided here, unless it is likely to affect how
49 users use @code{g77}.
50 @xref{News,,News About GNU Fortran}, for information on
51 such changes to @code{g77}.
52 @end ifset
54 @ifclear USERVISONLY
55 @node News
56 @chapter News About GNU Fortran
57 @cindex versions, recent
58 @cindex recent versions
59 @end ifclear
60 @end ifset
62 @ifclear USERVISONLY
63 Changes made to recent versions of GNU Fortran are listed
64 below, with the most recent version first.
66 The changes are generally listed in order:
68 @enumerate
69 @item
70 Code-generation and run-time-library bug-fixes
72 @item
73 Compiler and run-time-library crashes involving valid code
74 that have been fixed
76 @item
77 New features
79 @item
80 Fixes and enhancements to existing features
82 @item
83 New diagnostics
85 @item
86 Internal improvements
88 @item
89 Miscellany
90 @end enumerate
92 This order is not strict---for example, some items
93 involve a combination of these elements.
94 @end ifclear
96 Note that two variants of @code{g77} are tracked below.
97 The @code{egcs} variant is described vis-a-vis
98 previous versions of @code{egcs} and/or
99 an official FSF version,
100 as appropriate.
102 Therefore, @code{egcs} versions sometimes have multiple listings
103 to help clarify how they differ from other versions,
104 though this can make getting a complete picture
105 of what a particular @code{egcs} version contains
106 somewhat more difficult.
108 @ifset DOC-G77
109 For information on bugs in the @value{which-g77} version of @code{g77},
110 see @ref{Known Bugs,,Known Bugs In GNU Fortran}.
111 @end ifset
113 @ifset DOC-BUGS
114 For information on bugs in the @value{which-g77} version of @code{g77},
115 see @file{@value{path-g77}/BUGS}.
116 @end ifset
118 @ifset DEVELOPMENT
119 @emph{Warning:} The information below is still under development,
120 and might not accurately reflect the @code{g77} code base
121 of which it is a part.
122 Efforts are made to keep it somewhat up-to-date,
123 but they are particularly concentrated
124 on any version of this information
125 that is distributed as part of a @emph{released} @code{g77}.
127 In particular, while this information is intended to apply to
128 the @value{which-g77} version of @code{g77},
129 only an official @emph{release} of that version
130 is expected to contain documentation that is
131 most consistent with the @code{g77} product in that version.
133 Nevertheless, information on @emph{previous} releases of @code{g77}, below,
134 is likely to be more up-to-date and accurate
135 than the equivalent information that accompanied
136 those releases,
137 assuming the last-updated date of the information below
138 is later than the dates of those releases.
140 That's due to attempts to keep this development version
141 of news about previous @code{g77} versions up-to-date.
142 @end ifset
144 @ifclear USERVISONLY
145 An online, ``live'' version of this document
146 (derived directly from the mainline, development version
147 of @code{g77} within @code{egcs})
148 is available at
149 @uref{http://www.gnu.org/software/gcc/onlinedocs/g77_news.html}.
150 @end ifclear
152 The following information was last updated on @value{last-update-news}:
154 @heading In development:
155 @itemize @bullet
156 @ifclear USERVISONLY
157 @item
158 The @code{TtyNam} intrinsics now set @var{Name} to all spaces (at run time)
159 if the system has no @code{ttyname} implementation available.
160 @end ifclear
162 @ifclear USERVISONLY
163 @item
164 Upgrade to @code{libf2c} as of 1999-06-28.
166 This fixes a bug whereby
167 input to a @code{NAMELIST} read involving a repeat count,
168 such as @samp{K(5)=10*3},
169 was not properly handled by @code{libf2c}.
170 The first item was written to @samp{K(5)},
171 but the remaining nine were written elsewhere (still within the array),
172 not necessarily starting at @samp{K(6)}.
173 @end ifclear
174 @end itemize
176 @heading In 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 1.1.2:
177 @itemize @bullet
178 @ifclear USERVISONLY
179 @item
180 @code{g77} no longer generates bad code for assignments,
181 or other conversions,
182 of @code{REAL} or @code{COMPLEX} constant expressions
183 to type @code{INTEGER(KIND=2)}
184 (often referred to as @code{INTEGER*8}).
186 For example, @samp{INTEGER*8 J; J = 4E10} now works as documented.
187 @end ifclear
189 @ifclear USERVISONLY
190 @item
191 @code{g77} no longer truncates @code{INTEGER(KIND=2)}
192 (usually @code{INTEGER*8})
193 subscript expressions when evaluating array references
194 on systems with pointers widers than @code{INTEGER(KIND=1)}
195 (such as Alphas).
196 @end ifclear
198 @ifclear USERVISONLY
199 @item
200 @code{g77} no longer generates bad code
201 for an assignment to a @code{COMPLEX} variable or array
202 that partially overlaps one or more of the sources
203 of the same assignment
204 (a very rare construction).
205 It now assigns through a temporary,
206 in cases where such partial overlap is deemed possible.
207 @end ifclear
209 @ifclear USERVISONLY
210 @item
211 @code{libg2c} (@code{libf2c}) no longer loses track
212 of the file being worked on
213 during a @code{BACKSPACE} operation.
214 @end ifclear
216 @ifclear USERVISONLY
217 @item
218 @code{libg2c} (@code{libf2c}) fixes a bug whereby
219 input to a @code{NAMELIST} read involving a repeat count,
220 such as @samp{K(5)=10*3},
221 was not properly handled by @code{libf2c}.
222 The first item was written to @samp{K(5)},
223 but the remaining nine were written elsewhere (still within the array),
224 not necessarily starting at @samp{K(6)}.
225 @end ifclear
227 @ifclear USERVISONLY
228 @item
229 @c Tim Prince reported this, regarding the TEST_FPU benchmark.
230 Automatic arrays now seem to be working on HP-UX systems.
231 @end ifclear
233 @ifclear USERVISONLY
234 @item
235 The @code{Date} intrinsic now returns the correct result
236 on big-endian systems.
237 @end ifclear
239 @ifclear USERVISONLY
240 @item
241 Fix @code{g77} so it no longer crashes when compiling
242 I/O statements using keywords that define @code{INTEGER} values,
243 such as @samp{IOSTAT=@var{j}},
244 where @var{j} is other than default @code{INTEGER}
245 (such as @code{INTEGER*2}).
246 Instead, it issues a diagnostic.
247 @end ifclear
249 @ifclear USERVISONLY
250 @item
251 Fix @code{g77} so it properly handles @samp{DATA A/@var{rpt}*@var{val}/},
252 where @var{rpt} is not default @code{INTEGER}, such as @code{INTEGER*2},
253 instead of producing a spurious diagnostic.
254 Also fix @samp{DATA (A(I),I=1,N)},
255 where @samp{N} is not default @code{INTEGER}
256 to work instead of crashing @code{g77}.
257 @end ifclear
259 @ifclear USERVISONLY
260 @item
261 The @samp{-ax} option is now obeyed when compiling Fortran programs.
262 (It is passed to the @file{f771} driver.)
263 @end ifclear
265 @item
266 The new @samp{-fbounds-check} option
267 causes @code{g77} to compile run-time bounds checks
268 of array subscripts, as well as of substring start and end points.
270 @item
271 @code{libg2c} now supports building as multilibbed library,
272 which provides better support for systems
273 that require options such as @samp{-mieee}
274 to work properly.
276 @item
277 Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
278 now are recognized by @code{g77}
279 as if they ended in @samp{.for} and @samp{.fpp}, respectively.
281 @item
282 The order of arguments to the @emph{subroutine} forms of the
283 @code{CTime}, @code{DTime}, @code{ETime}, and @code{TtyNam}
284 intrinsics has been swapped.
285 The argument serving as the returned value
286 for the corresponding function forms
287 now is the @emph{second} argument,
288 making these consistent with the other subroutine forms
289 of @code{libU77} intrinsics.
291 @item
292 @code{g77} now warns about a reference to an intrinsic
293 that has an interface that is not Year 2000 (Y2K) compliant.
294 Also, @code{libg2c} has been changed to increase the likelihood
295 of catching references to the implementations of these intrinsics
296 using the @code{EXTERNAL} mechanism
297 (which would avoid the new warnings).
299 @ifset DOC-G77
300 @xref{Year 2000 (Y2K) Problems}, for more information.
301 @end ifset
303 @ifclear USERVISONLY
304 @item
305 @code{g77} now warns about a reference to a function
306 when the corresponding @emph{subsequent} function program unit
307 disagrees with the reference concerning the type of the function.
308 @end ifclear
310 @item
311 @samp{-fno-emulate-complex} is now the default option.
312 This should result in improved performance
313 of code that uses the @code{COMPLEX} data type.
315 @cindex alignment
316 @cindex double-precision performance
317 @cindex -malign-double
318 @item
319 The @samp{-malign-double} option
320 now reliably aligns @emph{all} double-precision variables and arrays
321 on Intel x86 targets.
323 @ifclear USERVISONLY
324 @item
325 Even without the @samp{-malign-double} option,
326 @code{g77} reliably aligns local double-precision variables
327 that are not in @code{EQUIVALENCE} areas
328 and not @code{SAVE}'d.
329 @end ifclear
331 @ifclear USERVISONLY
332 @item
333 @code{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands
334 instead of generating a run-time call to
335 the @code{libf2c} routines @code{c_div} or @code{z_div},
336 unless the @samp{-Os} option is specified.
337 @end ifclear
339 @item
340 @code{g77} no longer generates code to maintain @code{errno},
341 a C-language concept,
342 when performing operations such as the @code{SqRt} intrinsic.
344 @ifclear USERVISONLY
345 @item
346 @code{g77} developers can temporarily use
347 the @samp{-fflatten-arrays} option
348 to compare how the compiler handles code generation
349 using C-like constructs as compared to the
350 Fortran-like method constructs normally used.
351 @end ifclear
353 @ifclear USERVISONLY
354 @item
355 A substantial portion of the @code{g77} front end's code-generation component
356 was rewritten.
357 It now generates code using facilities more robustly supported
358 by the @code{gcc} back end.
359 One effect of this rewrite is that some codes no longer produce
360 a spurious ``label @var{lab} used before containing binding contour''
361 message.
362 @end ifclear
364 @item
365 Support for the @samp{-fugly} option has been removed.
367 @ifclear USERVISONLY
368 @item
369 Improve documentation and indexing,
370 including information on Year 2000 (Y2K) compliance,
371 and providing more information on internals of the front end.
372 @end ifclear
374 @ifclear USERVISONLY
375 @item
376 Upgrade to @code{libf2c} as of 1999-05-10.
377 @end ifclear
378 @end itemize
380 @heading In 0.5.24 versus 0.5.23:
382 There is no @code{g77} version 0.5.24 at this time,
383 or planned.
384 0.5.24 is the version number designated for bug fixes and,
385 perhaps, some new features added,
386 to 0.5.23.
387 Version 0.5.23 requires @code{gcc} 2.8.1,
388 as 0.5.24 was planned to require.
390 Due to @code{EGCS} becoming @code{GCC}
391 (which is now an acronym for ``GNU Compiler Collection''),
392 and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95,
393 there seems to be no need for an actual 0.5.24 release.
395 To reduce the confusion already resulting from use of 0.5.24
396 to designate @code{g77} versions within @code{EGCS} versions 1.0 and 1.1,
397 as well as in versions of @code{g77} documentation and notices
398 during that period,
399 ``mainline'' @code{g77} version numbering resumes
400 at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2),
401 skipping over 0.5.24 as a placeholder version number.
403 To repeat, there is no @code{g77} 0.5.24, but there is now a 0.5.25.
404 Please remain calm and return to your keypunch units.
406 @c 1999-03-15: EGCS 1.1.2 released.
407 @heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1:
408 @ifclear USERVISONLY
409 @itemize @bullet
410 @item
411 Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
412 so the returned year is in the documented, non-Y2K-compliant range
413 of 0-99,
414 instead of being returned as 100 in the year 2000.
416 @ifset DOC-G77
417 @xref{IDate Intrinsic (VXT)},
418 for more information.
419 @end ifset
421 @item
422 Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
423 to return the milliseconds value properly
424 in @var{Values}(8).
426 @item
427 Fix the @code{LStat} intrinsic (in @code{libg2c})
428 to return device-ID information properly
429 in @var{SArray}(7).
431 @item
432 Improve documentation.
433 @end itemize
434 @end ifclear
436 @c 1998-12-04: EGCS 1.1.1 released.
437 @heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1:
438 @ifclear USERVISONLY
439 @itemize @bullet
440 @item
441 Fix @code{libg2c} so it performs an implicit @code{ENDFILE} operation
442 (as appropriate)
443 whenever a @code{REWIND} is done.
445 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
446 @code{g77}'s version of @code{libf2c}.)
448 @item
449 Fix @code{libg2c} so it no longer crashes with a spurious diagnostic
450 upon doing any I/O following a direct formatted write.
452 (This bug was introduced in 0.5.23 and @code{egcs} 1.1 in
453 @code{g77}'s version of @code{libf2c}.)
455 @item
456 Fix @code{g77} so it no longer crashes compiling references
457 to the @code{Rand} intrinsic on some systems.
459 @item
460 Fix @code{g77} portion of installation process so it works
461 better on some systems
462 (those with shells requiring @samp{else true} clauses
463 on @code{if} constructs
464 for the completion code to be set properly).
465 @end itemize
466 @end ifclear
468 @c 1998-09-03: EGCS 1.1 released.
469 @heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3:
470 @itemize @bullet
471 @ifclear USERVISONLY
472 @item
473 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
474 that wrote one byte beyond the end of its @code{CHARACTER}
475 argument,
476 and in the @code{libU77} intrinsics
477 @code{GMTime} and @code{LTime}
478 that overwrote their arguments.
479 @end ifclear
481 @ifclear USERVISONLY
482 @item
483 Assumed arrays with negative bounds
484 (such as @samp{REAL A(-1:*)})
485 no longer elicit spurious diagnostics from @code{g77},
486 even on systems with pointers having
487 different sizes than integers.
489 This bug is not known to have existed in any
490 recent version of @code{gcc}.
491 It was introduced in an early release of @code{egcs}.
492 @end ifclear
494 @ifclear USERVISONLY
495 @item
496 Valid combinations of @code{EXTERNAL},
497 passing that external as a dummy argument
498 without explicitly giving it a type,
499 and, in a subsequent program unit,
500 referencing that external as
501 an external function with a different type
502 no longer crash @code{g77}.
503 @end ifclear
505 @ifclear USERVISONLY
506 @item
507 @code{CASE DEFAULT} no longer crashes @code{g77}.
508 @end ifclear
510 @ifclear USERVISONLY
511 @item
512 The @samp{-Wunused} option no longer issues a spurious
513 warning about the ``master'' procedure generated by
514 @code{g77} for procedures containing @code{ENTRY} statements.
515 @end ifclear
517 @item
518 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
519 compile-time constant @code{INTEGER} expression.
521 @item
522 Fix @code{g77} @samp{-g} option so procedures that
523 use @code{ENTRY} can be stepped through, line by line,
524 in @code{gdb}.
526 @item
527 Allow any @code{REAL} argument to intrinsics
528 @code{Second} and @code{CPU_Time}.
530 @item
531 Use @code{tempnam}, if available, to open scratch files
532 (as in @samp{OPEN(STATUS='SCRATCH')})
533 so that the @code{TMPDIR} environment variable,
534 if present, is used.
536 @item
537 @code{g77}'s version of @code{libf2c} separates out
538 the setting of global state
539 (such as command-line arguments and signal handling)
540 from @file{main.o} into distinct, new library
541 archive members.
543 This should make it easier to write portable applications
544 that have their own (non-Fortran) @code{main()} routine
545 properly set up the @code{libf2c} environment, even
546 when @code{libf2c} (now @code{libg2c}) is a shared library.
548 @ifclear USERVISONLY
549 @item
550 @code{g77} no longer installs the @file{f77} command
551 and @file{f77.1} man page
552 in the @file{/usr} or @file{/usr/local} heirarchy,
553 even if the @file{f77-install-ok} file exists
554 in the source or build directory.
555 See the installation documentation for more information.
556 @end ifclear
558 @ifclear USERVISONLY
559 @item
560 @code{g77} no longer installs the @file{libf2c.a} library
561 and @file{f2c.h} include file
562 in the @file{/usr} or @file{/usr/local} heirarchy,
563 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
564 in the source or build directory.
565 See the installation documentation for more information.
566 @end ifclear
568 @ifclear USERVISONLY
569 @item
570 The @file{libf2c.a} library produced by @code{g77} has been
571 renamed to @file{libg2c.a}.
572 It is installed only in the @code{gcc} ``private''
573 directory heirarchy, @file{gcc-lib}.
574 This allows system administrators and users to choose which
575 version of the @code{libf2c} library from @code{netlib} they
576 wish to use on a case-by-case basis.
577 See the installation documentation for more information.
578 @end ifclear
580 @ifclear USERVISONLY
581 @item
582 The @file{f2c.h} include (header) file produced by @code{g77}
583 has been renamed to @file{g2c.h}.
584 It is installed only in the @code{gcc} ``private''
585 directory heirarchy, @file{gcc-lib}.
586 This allows system administrators and users to choose which
587 version of the include file from @code{netlib} they
588 wish to use on a case-by-case basis.
589 See the installation documentation for more information.
590 @end ifclear
592 @item
593 The @code{g77} command now expects the run-time library
594 to be named @code{libg2c.a} instead of @code{libf2c.a},
595 to ensure that a version other than the one built and
596 installed as part of the same @code{g77} version is picked up.
598 @ifclear USERVISONLY
599 @item
600 During the configuration and build process,
601 @code{g77} creates subdirectories it needs only as it
602 needs them.
603 Other cleaning up of the configuration and build process
604 has been performed as well.
605 @end ifclear
607 @ifclear USERVISONLY
608 @item
609 @code{install-info} now used to update the directory of
610 Info documentation to contain an entry for @code{g77}
611 (during installation).
612 @end ifclear
614 @item
615 Some diagnostics have been changed from warnings to errors,
616 to prevent inadvertent use of the resulting, probably buggy,
617 programs.
618 These mostly include diagnostics about use of unsupported features
619 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
620 @code{WRITE} statements,
621 and about truncations of various sorts of constants.
623 @ifclear USERVISONLY
624 @item
625 Improve compilation of @code{FORMAT} expressions so that
626 a null byte is appended to the last operand if it
627 is a constant.
628 This provides a cleaner run-time diagnostic as provided
629 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
630 @end ifclear
632 @ifclear USERVISONLY
633 @item
634 Improve documentation and indexing.
635 @end ifclear
637 @ifclear USERVISONLY
638 @item
639 The upgrade to @code{libf2c} as of 1998-06-18
640 should fix a variety of problems, including
641 those involving some uses of the @code{T} format
642 specifier, and perhaps some build (porting) problems
643 as well.
644 @end ifclear
645 @end itemize
647 @c 1998-09-03: EGCS 1.1 released.
648 @heading In @code{EGCS} 1.1 versus @code{g77} 0.5.23:
649 @itemize @bullet
650 @ifclear USERVISONLY
651 @cindex DNRM2
652 @cindex stack, 387 coprocessor
653 @cindex Intel x86
654 @cindex -O2
655 @item
656 Fix a code-generation bug that afflicted
657 Intel x86 targets when @samp{-O2} was specified
658 compiling, for example, an old version of
659 the @code{DNRM2} routine.
661 The x87 coprocessor stack was being
662 mismanaged in cases involving assigned @code{GOTO}
663 and @code{ASSIGN}.
664 @end ifclear
666 @ifclear USERVISONLY
667 @item
668 @code{g77} no longer produces incorrect code
669 and initial values
670 for @code{EQUIVALENCE} and @code{COMMON}
671 aggregates that, due to ``unnatural'' ordering of members
672 vis-a-vis their types, require initial padding.
673 @end ifclear
675 @ifclear USERVISONLY
676 @item
677 Fix @code{g77} crash compiling code
678 containing the construct @samp{CMPLX(0.)} or similar.
679 @end ifclear
681 @ifclear USERVISONLY
682 @item
683 @code{g77} no longer crashes when compiling code
684 containing specification statements such as
685 @samp{INTEGER(KIND=7) PTR}.
686 @end ifclear
688 @ifclear USERVISONLY
689 @item
690 @code{g77} no longer crashes when compiling code
691 such as @samp{J = SIGNAL(1, 2)}.
692 @end ifclear
694 @item
695 @code{g77} now treats @samp{%LOC(@var{expr})} and
696 @samp{LOC(@var{expr})} as ``ordinary'' expressions
697 when they are used as arguments in procedure calls.
698 This change applies only to global (filewide) analysis,
699 making it consistent with
700 how @code{g77} actually generates code
701 for these cases.
703 Previously, @code{g77} treated these expressions
704 as denoting special ``pointer'' arguments
705 for the purposes of filewide analysis.
707 @ifclear USERVISONLY
708 @item
709 Fix @code{g77} crash
710 (or apparently infinite run-time)
711 when compiling certain complicated expressions
712 involving @code{COMPLEX} arithmetic
713 (especially multiplication).
714 @end ifclear
716 @cindex alignment
717 @cindex double-precision performance
718 @cindex -malign-double
719 @item
720 Align static double-precision variables and arrays
721 on Intel x86 targets
722 regardless of whether @samp{-malign-double} is specified.
724 Generally, this affects only local variables and arrays
725 having the @code{SAVE} attribute
726 or given initial values via @code{DATA}.
728 @item
729 The @code{g77} driver now ensures that @samp{-lg2c}
730 is specified in the link phase prior to any
731 occurrence of @samp{-lm}.
732 This prevents accidentally linking to a routine
733 in the SunOS4 @samp{-lm} library
734 when the generated code wants to link to the one
735 in @code{libf2c} (@code{libg2c}).
737 @item
738 @code{g77} emits more debugging information when
739 @samp{-g} is used.
741 This new information allows, for example,
742 @kbd{which __g77_length_a} to be used in @code{gdb}
743 to determine the type of the phantom length argument
744 supplied with @code{CHARACTER} variables.
746 This information pertains to internally-generated
747 type, variable, and other information,
748 not to the longstanding deficiencies vis-a-vis
749 @code{COMMON} and @code{EQUIVALENCE}.
751 @item
752 The F90 @code{Date_and_Time} intrinsic now is
753 supported.
755 @item
756 The F90 @code{System_Clock} intrinsic allows
757 the optional arguments (except for the @code{Count}
758 argument) to be omitted.
760 @ifclear USERVISONLY
761 @item
762 Upgrade to @code{libf2c} as of 1998-06-18.
763 @end ifclear
765 @ifclear USERVISONLY
766 @item
767 Improve documentation and indexing.
768 @end ifclear
769 @end itemize
771 @ifset DOC-NEWS
772 @heading In previous versions:
774 Information on previous versions is not provided
775 in this @file{@value{path-g77}/NEWS} file,
776 to keep it short.
777 See @file{@value{path-g77}/news.texi},
778 or any of its other derivations
779 (Info, HTML, dvi forms)
780 for such information.
781 @end ifset
783 @ifclear DOC-NEWS
784 @c 1998-05-20: 0.5.23 released.
785 @heading In 0.5.23 versus 0.5.22:
786 @itemize @bullet
787 @item
788 This release contains several regressions against
789 version 0.5.22 of @code{g77}, due to using the
790 ``vanilla'' @code{gcc} back end instead of patching
791 it to fix a few bugs and improve performance in a
792 few cases.
794 Features that have been dropped from this version
795 of @code{g77} due to their being implemented
796 via @code{g77}-specific patches to the @code{gcc}
797 back end in previous releases include:
799 @itemize @minus
800 @item
801 Support for @code{__restrict__} keyword,
802 the options @samp{-fargument-alias}, @samp{-fargument-noalias},
803 and @samp{-fargument-noalias-global},
804 and the corresponding alias-analysis code.
806 (@code{egcs} has the alias-analysis
807 code, but not the @code{__restrict__} keyword.
808 @code{egcs} @code{g77} users benefit from the alias-analysis
809 code despite the lack of the @code{__restrict__} keyword,
810 which is a C-language construct.)
812 @item
813 Support for the GNU compiler options
814 @samp{-fmove-all-movables},
815 @samp{-freduce-all-givs},
816 and @samp{-frerun-loop-opt}.
818 (@code{egcs} supports these options.
819 @code{g77} users of @code{egcs} benefit from them even if
820 they are not explicitly specified,
821 because the defaults are optimized for @code{g77} users.)
823 @item
824 Support for the @samp{-W} option warning about
825 integer division by zero.
827 @item
828 The Intel x86-specific option @samp{-malign-double}
829 applying to stack-allocated data
830 as well as statically-allocate data.
831 @end itemize
833 @ifclear USERVISONLY
834 Note that the @file{gcc/f/gbe/} subdirectory has been removed
835 from this distribution as a result of @code{g77} no longer
836 including patches for the @code{gcc} back end.
837 @end ifclear
839 @ifclear USERVISONLY
840 @item
841 Fix bugs in the @code{libU77} intrinsic @code{HostNm}
842 that wrote one byte beyond the end of its @code{CHARACTER}
843 argument,
844 and in the @code{libU77} intrinsics
845 @code{GMTime} and @code{LTime}
846 that overwrote their arguments.
847 @end ifclear
849 @item
850 Support @code{gcc} version 2.8,
851 and remove support for prior versions of @code{gcc}.
853 @cindex -@w{}-driver option
854 @cindex @code{g77} options, -@w{}-driver
855 @cindex options, -@w{}-driver
856 @item
857 Remove support for the @samp{--driver} option,
858 as @code{g77} now does all the driving,
859 just like @code{gcc}.
861 @ifclear USERVISONLY
862 @item
863 @code{CASE DEFAULT} no longer crashes @code{g77}.
864 @end ifclear
866 @ifclear USERVISONLY
867 @item
868 Valid combinations of @code{EXTERNAL},
869 passing that external as a dummy argument
870 without explicitly giving it a type,
871 and, in a subsequent program unit,
872 referencing that external as
873 an external function with a different type
874 no longer crash @code{g77}.
875 @end ifclear
877 @ifclear USERVISONLY
878 @item
879 @code{g77} no longer installs the @file{f77} command
880 and @file{f77.1} man page
881 in the @file{/usr} or @file{/usr/local} heirarchy,
882 even if the @file{f77-install-ok} file exists
883 in the source or build directory.
884 See the installation documentation for more information.
885 @end ifclear
887 @ifclear USERVISONLY
888 @item
889 @code{g77} no longer installs the @file{libf2c.a} library
890 and @file{f2c.h} include file
891 in the @file{/usr} or @file{/usr/local} heirarchy,
892 even if the @file{f2c-install-ok} or @file{f2c-exists-ok} files exist
893 in the source or build directory.
894 See the installation documentation for more information.
895 @end ifclear
897 @ifclear USERVISONLY
898 @item
899 The @file{libf2c.a} library produced by @code{g77} has been
900 renamed to @file{libg2c.a}.
901 It is installed only in the @code{gcc} ``private''
902 directory heirarchy, @file{gcc-lib}.
903 This allows system administrators and users to choose which
904 version of the @code{libf2c} library from @code{netlib} they
905 wish to use on a case-by-case basis.
906 See the installation documentation for more information.
907 @end ifclear
909 @ifclear USERVISONLY
910 @item
911 The @file{f2c.h} include (header) file produced by @code{g77}
912 has been renamed to @file{g2c.h}.
913 It is installed only in the @code{gcc} ``private''
914 directory heirarchy, @file{gcc-lib}.
915 This allows system administrators and users to choose which
916 version of the include file from @code{netlib} they
917 wish to use on a case-by-case basis.
918 See the installation documentation for more information.
919 @end ifclear
921 @item
922 The @code{g77} command now expects the run-time library
923 to be named @code{libg2c.a} instead of @code{libf2c.a},
924 to ensure that a version other than the one built and
925 installed as part of the same @code{g77} version is picked up.
927 @ifclear USERVISONLY
928 @item
929 The @samp{-Wunused} option no longer issues a spurious
930 warning about the ``master'' procedure generated by
931 @code{g77} for procedures containing @code{ENTRY} statements.
932 @end ifclear
934 @item
935 @code{g77}'s version of @code{libf2c} separates out
936 the setting of global state
937 (such as command-line arguments and signal handling)
938 from @file{main.o} into distinct, new library
939 archive members.
941 This should make it easier to write portable applications
942 that have their own (non-Fortran) @code{main()} routine
943 properly set up the @code{libf2c} environment, even
944 when @code{libf2c} (now @code{libg2c}) is a shared library.
946 @ifclear USERVISONLY
947 @item
948 During the configuration and build process,
949 @code{g77} creates subdirectories it needs only as it
950 needs them, thus avoiding unnecessary creation of, for example,
951 @file{stage1/f/runtime} when doing a non-bootstrap build.
952 Other cleaning up of the configuration and build process
953 has been performed as well.
954 @end ifclear
956 @ifclear USERVISONLY
957 @item
958 @code{install-info} now used to update the directory of
959 Info documentation to contain an entry for @code{g77}
960 (during installation).
961 @end ifclear
963 @item
964 Some diagnostics have been changed from warnings to errors,
965 to prevent inadvertent use of the resulting, probably buggy,
966 programs.
967 These mostly include diagnostics about use of unsupported features
968 in the @code{OPEN}, @code{INQUIRE}, @code{READ}, and
969 @code{WRITE} statements,
970 and about truncations of various sorts of constants.
972 @ifclear USERVISONLY
973 @item
974 Improve documentation and indexing.
975 @end ifclear
977 @ifclear USERVISONLY
978 @item
979 Upgrade to @code{libf2c} as of 1998-04-20.
981 This should fix a variety of problems, including
982 those involving some uses of the @code{T} format
983 specifier, and perhaps some build (porting) problems
984 as well.
985 @end ifclear
986 @end itemize
988 @c 1998-03-16: 0.5.22 released.
989 @heading In 0.5.22 versus 0.5.21:
990 @itemize @bullet
991 @ifclear USERVISONLY
992 @item
993 Fix code generation for iterative @code{DO} loops that
994 have one or more references to the iteration variable,
995 or to aliases of it, in their control expressions.
996 For example, @samp{DO 10 J=2,J} now is compiled correctly.
997 @end ifclear
999 @ifclear USERVISONLY
1000 @cindex DNRM2
1001 @cindex stack, 387 coprocessor
1002 @cindex Intel x86
1003 @cindex -O2
1004 @item
1005 Fix a code-generation bug that afflicted
1006 Intel x86 targets when @samp{-O2} was specified
1007 compiling, for example, an old version of
1008 the @code{DNRM2} routine.
1010 The x87 coprocessor stack was being
1011 mismanaged in cases involving assigned @code{GOTO}
1012 and @code{ASSIGN}.
1013 @end ifclear
1015 @ifclear USERVISONLY
1016 @item
1017 Fix @code{DTime} intrinsic so as not to truncate
1018 results to integer values (on some systems).
1019 @end ifclear
1021 @item
1022 Fix @code{Signal} intrinsic so it offers portable
1023 support for 64-bit systems (such as Digital Alphas
1024 running GNU/Linux).
1026 @ifclear USERVISONLY
1027 @item
1028 Fix run-time crash involving @code{NAMELIST} on 64-bit
1029 machines such as Alphas.
1030 @end ifclear
1032 @ifclear USERVISONLY
1033 @item
1034 Fix @code{g77} version of @code{libf2c} so it no longer
1035 produces a spurious @samp{I/O recursion} diagnostic at run time
1036 when an I/O operation (such as @samp{READ *,I}) is interrupted
1037 in a manner that causes the program to be terminated
1038 via the @code{f_exit} routine (such as via @kbd{C-c}).
1039 @end ifclear
1041 @ifclear USERVISONLY
1042 @item
1043 Fix @code{g77} crash triggered by @code{CASE} statement with
1044 an omitted lower or upper bound.
1045 @end ifclear
1047 @ifclear USERVISONLY
1048 @item
1049 Fix @code{g77} crash compiling references to @code{CPU_Time}
1050 intrinsic.
1051 @end ifclear
1053 @ifclear USERVISONLY
1054 @item
1055 Fix @code{g77} crash
1056 (or apparently infinite run-time)
1057 when compiling certain complicated expressions
1058 involving @code{COMPLEX} arithmetic
1059 (especially multiplication).
1060 @end ifclear
1062 @ifclear USERVISONLY
1063 @item
1064 Fix @code{g77} crash on statements such as
1065 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1066 @samp{Z} is @code{DOUBLE COMPLEX}.
1067 @end ifclear
1069 @ifclear USERVISONLY
1070 @item
1071 Fix a @code{g++} crash.
1072 @end ifclear
1074 @item
1075 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
1076 compile-time constant @code{INTEGER} expression.
1078 @item
1079 Fix @code{g77} @samp{-g} option so procedures that
1080 use @code{ENTRY} can be stepped through, line by line,
1081 in @code{gdb}.
1083 @ifclear USERVISONLY
1084 @item
1085 Fix a profiling-related bug in @code{gcc} back end for
1086 Intel x86 architecture.
1087 @end ifclear
1089 @item
1090 Allow any @code{REAL} argument to intrinsics
1091 @code{Second} and @code{CPU_Time}.
1093 @item
1094 Allow any numeric argument to intrinsics
1095 @code{Int2} and @code{Int8}.
1097 @item
1098 Use @code{tempnam}, if available, to open scratch files
1099 (as in @samp{OPEN(STATUS='SCRATCH')})
1100 so that the @code{TMPDIR} environment variable,
1101 if present, is used.
1103 @item
1104 Rename the @code{gcc} keyword @code{restrict} to
1105 @code{__restrict__}, to avoid rejecting valid, existing,
1106 C programs.
1107 Support for @code{restrict} is now more like support
1108 for @code{complex}.
1110 @ifclear USERVISONLY
1111 @item
1112 Fix @samp{-fpedantic} to not reject procedure invocations
1113 such as @samp{I=J()} and @samp{CALL FOO()}.
1114 @end ifclear
1116 @item
1117 Fix @samp{-fugly-comma} to affect invocations of
1118 only external procedures.
1119 Restore rejection of gratuitous trailing omitted
1120 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1122 @item
1123 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1124 @samp{-fbadu77-intrinsics-*} options.
1126 @ifclear USERVISONLY
1127 @item
1128 Improve diagnostic messages from @code{libf2c}
1129 so it is more likely that the printing of the
1130 active format string is limited to the string,
1131 with no trailing garbage being printed.
1133 (Unlike @code{f2c}, @code{g77} did not append
1134 a null byte to its compiled form of every
1135 format string specified via a @code{FORMAT} statement.
1136 However, @code{f2c} would exhibit the problem
1137 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1138 by printing @samp{(I)garbage} as the format string.)
1139 @end ifclear
1141 @ifclear USERVISONLY
1142 @item
1143 Improve compilation of @code{FORMAT} expressions so that
1144 a null byte is appended to the last operand if it
1145 is a constant.
1146 This provides a cleaner run-time diagnostic as provided
1147 by @code{libf2c} for statements like @samp{PRINT '(I1', 42}.
1148 @end ifclear
1150 @ifclear USERVISONLY
1151 @item
1152 Fix various crashes involving code with diagnosed errors.
1153 @end ifclear
1155 @ifclear USERVISONLY
1156 @item
1157 Fix cross-compilation bug when configuring @code{libf2c}.
1158 @end ifclear
1160 @ifclear USERVISONLY
1161 @item
1162 Improve diagnostics.
1163 @end ifclear
1165 @ifclear USERVISONLY
1166 @item
1167 Improve documentation and indexing.
1168 @end ifclear
1170 @ifclear USERVISONLY
1171 @item
1172 Upgrade to @code{libf2c} as of 1997-09-23.
1173 This fixes a formatted-I/O bug that afflicted
1174 64-bit systems with 32-bit integers
1175 (such as Digital Alpha running GNU/Linux).
1176 @end ifclear
1177 @end itemize
1179 @c 1998-03-18: EGCS 1.0.2 released.
1180 @heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1:
1181 @itemize @bullet
1182 @ifclear USERVISONLY
1183 @item
1184 Fix @code{g77} crash triggered by @code{CASE} statement with
1185 an omitted lower or upper bound.
1186 @end ifclear
1188 @ifclear USERVISONLY
1189 @item
1190 Fix @code{g77} crash on statements such as
1191 @samp{PRINT *, (REAL(Z(I)),I=1,2)}, where
1192 @samp{Z} is @code{DOUBLE COMPLEX}.
1193 @end ifclear
1195 @ifclear USERVISONLY
1196 @cindex ELF support
1197 @cindex support, ELF
1198 @cindex -fPIC option
1199 @cindex options, -fPIC
1200 @item
1201 Fix @samp{-fPIC} (such as compiling for ELF targets)
1202 on the Intel x86 architecture target
1203 so invalid assembler code is no longer produced.
1204 @end ifclear
1206 @ifclear USERVISONLY
1207 @item
1208 Fix @samp{-fpedantic} to not reject procedure invocations
1209 such as @samp{I=J()} and @samp{CALL FOO()}.
1210 @end ifclear
1212 @ifclear USERVISONLY
1213 @item
1214 Fix @samp{-fugly-comma} to affect invocations of
1215 only external procedures.
1216 Restore rejection of gratuitous trailing omitted
1217 arguments to intrinsics, as in @samp{I=MAX(3,4,,)}.
1218 @end ifclear
1220 @item
1221 Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
1222 @samp{-fbadu77-intrinsics-*} options.
1223 @end itemize
1225 @c 1998-01-06: EGCS 1.0.1 released.
1226 @heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0:
1227 @ifclear USERVISONLY
1228 @itemize @bullet
1229 @item
1230 Fix run-time crash involving @code{NAMELIST} on 64-bit
1231 machines such as Alphas.
1232 @end itemize
1233 @end ifclear
1235 @c 1997-12-03: EGCS 1.0 released.
1236 @heading In @code{EGCS} 1.0 versus @code{g77} 0.5.21:
1237 @itemize @bullet
1238 @item
1239 Version 1.0 of @code{egcs}
1240 contains several regressions against
1241 version 0.5.21 of @code{g77},
1242 due to using the
1243 ``vanilla'' @code{gcc} back end instead of patching
1244 it to fix a few bugs and improve performance in a
1245 few cases.
1247 Features that have been dropped from this version
1248 of @code{g77} due to their being implemented
1249 via @code{g77}-specific patches to the @code{gcc}
1250 back end in previous releases include:
1252 @itemize @minus
1253 @item
1254 Support for the C-language @code{restrict} keyword.
1256 @item
1257 Support for the @samp{-W} option warning about
1258 integer division by zero.
1260 @item
1261 The Intel x86-specific option @samp{-malign-double}
1262 applying to stack-allocated data
1263 as well as statically-allocate data.
1264 @end itemize
1266 @ifclear USERVISONLY
1267 Note that the @file{gcc/f/gbe/} subdirectory has been removed
1268 from this distribution as a result of @code{g77}
1269 being fully integrated with
1270 the @code{egcs} variant of the @code{gcc} back end.
1271 @end ifclear
1273 @ifclear USERVISONLY
1274 @item
1275 Fix code generation for iterative @code{DO} loops that
1276 have one or more references to the iteration variable,
1277 or to aliases of it, in their control expressions.
1278 For example, @samp{DO 10 J=2,J} now is compiled correctly.
1279 @end ifclear
1281 @ifclear USERVISONLY
1282 @item
1283 Fix @code{DTime} intrinsic so as not to truncate
1284 results to integer values (on some systems).
1285 @end ifclear
1287 @ifclear USERVISONLY
1288 @item
1289 @c Toon Moene discovered these.
1290 Some Fortran code, miscompiled
1291 by @code{g77} built on @code{gcc} version 2.8.1
1292 on m68k-next-nextstep3 configurations
1293 when using the @samp{-O2} option,
1294 is now compiled correctly.
1295 It is believed that a C function known to miscompile
1296 on that configuration
1297 when using the @samp{-O2 -funroll-loops} options
1298 also is now compiled correctly.
1299 @end ifclear
1301 @ifclear USERVISONLY
1302 @item
1303 Remove support for non-@code{egcs} versions of @code{gcc}.
1304 @end ifclear
1306 @cindex -@w{}-driver option
1307 @cindex @code{g77} options, -@w{}-driver
1308 @cindex options, -@w{}-driver
1309 @item
1310 Remove support for the @samp{--driver} option,
1311 as @code{g77} now does all the driving,
1312 just like @code{gcc}.
1314 @item
1315 Allow any numeric argument to intrinsics
1316 @code{Int2} and @code{Int8}.
1318 @ifclear USERVISONLY
1319 @item
1320 Improve diagnostic messages from @code{libf2c}
1321 so it is more likely that the printing of the
1322 active format string is limited to the string,
1323 with no trailing garbage being printed.
1325 (Unlike @code{f2c}, @code{g77} did not append
1326 a null byte to its compiled form of every
1327 format string specified via a @code{FORMAT} statement.
1328 However, @code{f2c} would exhibit the problem
1329 anyway for a statement like @samp{PRINT '(I)garbage', 1}
1330 by printing @samp{(I)garbage} as the format string.)
1331 @end ifclear
1333 @ifclear USERVISONLY
1334 @item
1335 Upgrade to @code{libf2c} as of 1997-09-23.
1336 This fixes a formatted-I/O bug that afflicted
1337 64-bit systems with 32-bit integers
1338 (such as Digital Alpha running GNU/Linux).
1339 @end ifclear
1340 @end itemize
1342 @c 1997-09-09: 0.5.21 released.
1343 @heading In 0.5.21:
1344 @itemize @bullet
1345 @ifclear USERVISONLY
1346 @item
1347 Fix a code-generation bug introduced by 0.5.20
1348 caused by loop unrolling (by specifying
1349 @samp{-funroll-loops} or similar).
1350 This bug afflicted all code compiled by
1351 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1352 Fortran, and so on).
1353 @end ifclear
1355 @ifclear USERVISONLY
1356 @item
1357 Fix a code-generation bug manifested when
1358 combining local @code{EQUIVALENCE} with a
1359 @code{DATA} statement that follows
1360 the first executable statement (or is
1361 treated as an executable-context statement
1362 as a result of using the @samp{-fpedantic}
1363 option).
1364 @end ifclear
1366 @ifclear USERVISONLY
1367 @item
1368 Fix a compiler crash that occured when an
1369 integer division by a constant zero is detected.
1370 Instead, when the @samp{-W} option is specified,
1371 the @code{gcc} back end issues a warning about such a case.
1372 This bug afflicted all code compiled by
1373 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
1374 Fortran, and so on).
1375 @end ifclear
1376 @ifset USERVISONLY
1377 @item
1378 When the @samp{-W} option is specified, @code{gcc}, @code{g77},
1379 and other GNU compilers that incorporate the @code{gcc}
1380 back end as modified by @code{g77}, issue
1381 a warning about integer division by constant zero.
1382 @end ifset
1384 @ifclear USERVISONLY
1385 @item
1386 Fix a compiler crash that occurred in some cases
1387 of procedure inlining.
1388 (Such cases became more frequent in 0.5.20.)
1389 @end ifclear
1391 @ifclear USERVISONLY
1392 @item
1393 Fix a compiler crash resulting from using @code{DATA}
1394 or similar to initialize a @code{COMPLEX} variable or
1395 array to zero.
1396 @end ifclear
1398 @ifclear USERVISONLY
1399 @item
1400 Fix compiler crashes involving use of @code{AND}, @code{OR},
1401 or @code{XOR} intrinsics.
1402 @end ifclear
1404 @ifclear USERVISONLY
1405 @item
1406 Fix compiler bug triggered when using a @code{COMMON}
1407 or @code{EQUIVALENCE} variable
1408 as the target of an @code{ASSIGN}
1409 or assigned-@code{GOTO} statement.
1410 @end ifclear
1412 @ifclear USERVISONLY
1413 @item
1414 Fix compiler crashes due to using the name of a some
1415 non-standard intrinsics (such as @code{FTell} or
1416 @code{FPutC}) as such and as the name of a procedure
1417 or common block.
1418 Such dual use of a name in a program is allowed by
1419 the standard.
1420 @end ifclear
1422 @c @code{g77}'s version of @code{libf2c} has been modified
1423 @c so that the external names of library's procedures do not
1424 @c conflict with names used for Fortran procedures compiled
1425 @c by @code{g77}.
1426 @c An additional layer of jacket procedures has been added
1427 @c to @code{libf2c} to map the old names to the new names,
1428 @c for automatic use by programs that interface to the
1429 @c library procedures via the external-procedure mechanism.
1430 @c 
1431 @c For example, the intrinsic @code{FPUTC} previously was
1432 @c implemented by @code{g77} as a call to the @code{libf2c}
1433 @c routine @code{fputc_}.
1434 @c This would conflict with a Fortran procedure named @code{FPUTC}
1435 @c (using default compiler options), and this conflict
1436 @c would cause a crash under certain circumstances.
1437 @c 
1438 @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
1439 @c which does not conflict with the @code{fputc_} external
1440 @c that implements a Fortran procedure named @code{FPUTC}.
1441 @c 
1442 @c Programs that refer to @code{FPUTC} as an external procedure
1443 @c without supplying their own implementation will link to
1444 @c the new @code{libf2c} routine @code{fputc_}, which is
1445 @c simply a jacket routine that calls @code{G77_fputc_0}.
1447 @ifclear USERVISONLY
1448 @item
1449 Place automatic arrays on the stack, even if
1450 @code{SAVE} or the @samp{-fno-automatic} option
1451 is in effect.
1452 This avoids a compiler crash in some cases.
1453 @end ifclear
1455 @ifclear USERVISONLY
1456 @item
1457 The @samp{-malign-double} option now reliably aligns
1458 @code{DOUBLE PRECISION} optimally on Pentium and
1459 Pentium Pro architectures (586 and 686 in @code{gcc}).
1460 @end ifclear
1462 @item
1463 New option @samp{-Wno-globals} disables warnings
1464 about ``suspicious'' use of a name both as a global
1465 name and as the implicit name of an intrinsic, and
1466 warnings about disagreements over the number or natures of
1467 arguments passed to global procedures, or the
1468 natures of the procedures themselves.
1470 The default is to issue such warnings, which are
1471 new as of this version of @code{g77}.
1473 @item
1474 New option @samp{-fno-globals} disables diagnostics
1475 about potentially fatal disagreements
1476 analysis problems, such as disagreements over the
1477 number or natures of arguments passed to global
1478 procedures, or the natures of those procedures themselves.
1480 The default is to issue such diagnostics and flag
1481 the compilation as unsuccessful.
1482 With this option, the diagnostics are issued as
1483 warnings, or, if @samp{-Wno-globals} is specified,
1484 are not issued at all.
1486 This option also disables inlining of global procedures,
1487 to avoid compiler crashes resulting from coding errors
1488 that these diagnostics normally would identify.
1490 @ifclear USERVISONLY
1491 @item
1492 Diagnose cases where a reference to a procedure
1493 disagrees with the type of that procedure, or
1494 where disagreements about the number or nature
1495 of arguments exist.
1496 This avoids a compiler crash.
1497 @end ifclear
1499 @ifclear USERVISONLY
1500 @item
1501 Fix parsing bug whereby @code{g77} rejected a
1502 second initialization specification immediately
1503 following the first's closing @samp{/} without
1504 an intervening comma in a @code{DATA} statement,
1505 and the second specification was an implied-DO list.
1506 @end ifclear
1508 @ifclear USERVISONLY
1509 @item
1510 Improve performance of the @code{gcc} back end so
1511 certain complicated expressions involving @code{COMPLEX}
1512 arithmetic (especially multiplication) don't appear to
1513 take forever to compile.
1514 @end ifclear
1516 @ifclear USERVISONLY
1517 @item
1518 Fix a couple of profiling-related bugs in @code{gcc}
1519 back end.
1520 @end ifclear
1522 @ifclear USERVISONLY
1523 @item
1524 Integrate GNU Ada's (GNAT's) changes to the back end,
1525 which consist almost entirely of bug fixes.
1526 These fixes are circa version 3.10p of GNAT.
1527 @end ifclear
1529 @ifclear USERVISONLY
1530 @item
1531 Include some other @code{gcc} fixes that seem useful in
1532 @code{g77}'s version of @code{gcc}.
1533 (See @file{gcc/ChangeLog} for details---compare it
1534 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
1535 distribution.)
1536 @end ifclear
1538 @item
1539 Fix @code{libU77} routines that accept file and other names
1540 to strip trailing blanks from them, for consistency
1541 with other implementations.
1542 Blanks may be forcibly appended to such names by
1543 appending a single null character (@samp{CHAR(0)})
1544 to the significant trailing blanks.
1546 @item
1547 Fix @code{CHMOD} intrinsic to work with file names
1548 that have embedded blanks, commas, and so on.
1550 @item
1551 Fix @code{SIGNAL} intrinsic so it accepts an
1552 optional third @code{Status} argument.
1554 @ifclear USERVISONLY
1555 @item
1556 Fix @code{IDATE()} intrinsic subroutine (VXT form)
1557 so it accepts arguments in the correct order.
1558 Documentation fixed accordingly, and for
1559 @code{GMTIME()} and @code{LTIME()} as well.
1560 @end ifclear
1562 @item
1563 Make many changes to @code{libU77} intrinsics to
1564 support existing code more directly.
1566 Such changes include allowing both subroutine and
1567 function forms of many routines, changing @code{MCLOCK()}
1568 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
1569 introducing @code{MCLOCK8()} and @code{TIME8()} to
1570 return @code{INTEGER(KIND=2)} values,
1571 and placing functions that are intended to perform
1572 side effects in a new intrinsic group, @code{badu77}.
1574 @ifclear USERVISONLY
1575 @item
1576 Improve @code{libU77} so it is more portable.
1577 @end ifclear
1579 @item
1580 Add options @samp{-fbadu77-intrinsics-delete},
1581 @samp{-fbadu77-intrinsics-hide}, and so on.
1583 @ifclear USERVISONLY
1584 @item
1585 Fix crashes involving diagnosed or invalid code.
1586 @end ifclear
1588 @ifclear USERVISONLY
1589 @item
1590 @code{g77} and @code{gcc} now do a somewhat better
1591 job detecting and diagnosing arrays that are too
1592 large to handle before these cause diagnostics
1593 during the assembler or linker phase, a compiler
1594 crash, or generation of incorrect code.
1595 @end ifclear
1597 @ifclear USERVISONLY
1598 @item
1599 Make some fixes to alias analysis code.
1600 @end ifclear
1602 @ifclear USERVISONLY
1603 @item
1604 Add support for @code{restrict} keyword in @code{gcc}
1605 front end.
1606 @end ifclear
1608 @ifclear USERVISONLY
1609 @item
1610 Support @code{gcc} version 2.7.2.3
1611 (modified by @code{g77} into version 2.7.2.3.f.1),
1612 and remove
1613 support for prior versions of @code{gcc}.
1614 @end ifclear
1616 @ifclear USERVISONLY
1617 @item
1618 Incorporate GNAT's patches to the @code{gcc} back
1619 end into @code{g77}'s, so GNAT users do not need
1620 to apply GNAT's patches to build both GNAT and @code{g77}
1621 from the same source tree.
1622 @end ifclear
1624 @ifclear USERVISONLY
1625 @item
1626 Modify @code{make} rules and related code so that
1627 generation of Info documentation doesn't require
1628 compilation using @code{gcc}.
1629 Now, any ANSI C compiler should be adequate to
1630 produce the @code{g77} documentation (in particular,
1631 the tables of intrinsics) from scratch.
1632 @end ifclear
1634 @item
1635 Add @code{INT2} and @code{INT8} intrinsics.
1637 @item
1638 Add @code{CPU_TIME} intrinsic.
1640 @item
1641 Add @code{ALARM} intrinsic.
1643 @item
1644 @code{CTIME} intrinsic now accepts any @code{INTEGER}
1645 argument, not just @code{INTEGER(KIND=2)}.
1647 @ifclear USERVISONLY
1648 @item
1649 Warn when explicit type declaration disagrees with
1650 the type of an intrinsic invocation.
1651 @end ifclear
1653 @ifclear USERVISONLY
1654 @item
1655 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
1656 @end ifclear
1658 @ifclear USERVISONLY
1659 @item
1660 Fix typo in @code{make} rule @code{g77-cross}, used only for
1661 cross-compiling.
1662 @end ifclear
1664 @ifclear USERVISONLY
1665 @item
1666 Fix @code{libf2c} build procedure to re-archive library
1667 if previous attempt to archive was interrupted.
1668 @end ifclear
1670 @ifclear USERVISONLY
1671 @item
1672 Change @code{gcc} to unroll loops only during the last
1673 invocation (of as many as two invocations) of loop
1674 optimization.
1675 @end ifclear
1677 @ifclear USERVISONLY
1678 @item
1679 Improve handling of @samp{-fno-f2c} so that code that
1680 attempts to pass an intrinsic as an actual argument,
1681 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
1682 that the run-time-library routine is, effectively,
1683 compiled with @samp{-ff2c} in effect.
1684 @end ifclear
1686 @ifclear USERVISONLY
1687 @item
1688 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
1689 as an option that inhibits linking, just like @samp{-c} or
1690 @samp{-S}, and to recognize and properly handle the
1691 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
1692 and @samp{-Xlinker} options.
1693 @end ifclear
1695 @ifclear USERVISONLY
1696 @item
1697 Upgrade to @code{libf2c} as of 1997-08-16.
1698 @end ifclear
1700 @ifclear USERVISONLY
1701 @item
1702 Modify @code{libf2c} to consistently and clearly diagnose
1703 recursive I/O (at run time).
1704 @end ifclear
1706 @item
1707 @code{g77} driver now prints version information (such as produced
1708 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
1710 @item
1711 The @samp{.r} suffix now designates a Ratfor source file,
1712 to be preprocessed via the @code{ratfor} command, available
1713 separately.
1715 @ifclear USERVISONLY
1716 @item
1717 Fix some aspects of how @code{gcc} determines what kind of
1718 system is being configured and what kinds are supported.
1719 For example, GNU Linux/Alpha ELF systems now are directly
1720 supported.
1721 @end ifclear
1723 @ifclear USERVISONLY
1724 @item
1725 Improve diagnostics.
1726 @end ifclear
1728 @ifclear USERVISONLY
1729 @item
1730 Improve documentation and indexing.
1731 @end ifclear
1733 @ifclear USERVISONLY
1734 @item
1735 Include all pertinent files for @code{libf2c} that come
1736 from @code{netlib.bell-labs.com}; give any such files
1737 that aren't quite accurate in @code{g77}'s version of
1738 @code{libf2c} the suffix @samp{.netlib}.
1739 @end ifclear
1741 @ifclear USERVISONLY
1742 @item
1743 Reserve @code{INTEGER(KIND=0)} for future use.
1744 @end ifclear
1745 @end itemize
1747 @c 1997-02-28: 0.5.20 released.
1748 @heading In 0.5.20:
1749 @itemize @bullet
1750 @item
1751 The @samp{-fno-typeless-boz} option is now the default.
1753 This option specifies that non-decimal-radix
1754 constants using the prefixed-radix form (such as @samp{Z'1234'})
1755 are to be interpreted as @code{INTEGER(KIND=1)} constants.
1756 Specify @samp{-ftypeless-boz} to cause such
1757 constants to be interpreted as typeless.
1759 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
1760 its inverse.)
1762 @ifset DOC-G77
1763 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect},
1764 for information on the @samp{-ftypeless-boz} option.
1765 @end ifset
1767 @item
1768 Options @samp{-ff90-intrinsics-enable} and
1769 @samp{-fvxt-intrinsics-enable} now are the
1770 defaults.
1772 Some programs might use names that clash with
1773 intrinsic names defined (and now enabled) by these
1774 options or by the new @code{libU77} intrinsics.
1775 Users of such programs might need to compile them
1776 differently (using, for example, @samp{-ff90-intrinsics-disable})
1777 or, better yet, insert appropriate @code{EXTERNAL}
1778 statements specifying that these names are not intended
1779 to be names of intrinsics.
1781 @item
1782 The @code{ALWAYS_FLUSH} macro is no longer defined when
1783 building @code{libf2c}, which should result in improved
1784 I/O performance, especially over NFS.
1786 @emph{Note:} If you have code that depends on the behavior
1787 of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
1788 you will have to modify @code{libf2c} accordingly before
1789 building it from this and future versions of @code{g77}.
1791 @ifset DOC-G77
1792 @xref{Output Assumed To Flush}, for more information.
1793 @end ifset
1795 @item
1796 Dave Love's implementation of @code{libU77} has been
1797 added to the version of @code{libf2c} distributed with
1798 and built as part of @code{g77}.
1799 @code{g77} now knows about the routines in this library
1800 as intrinsics.
1802 @item
1803 New option @samp{-fvxt} specifies that the
1804 source file is written in VXT Fortran, instead of GNU Fortran.
1806 @ifset DOC-G77
1807 @xref{VXT Fortran}, for more information on the constructs
1808 recognized when the @samp{-fvxt} option is specified.
1809 @end ifset
1811 @item
1812 The @samp{-fvxt-not-f90} option has been deleted,
1813 along with its inverse, @samp{-ff90-not-vxt}.
1815 If you used one of these deleted options, you should
1816 re-read the pertinent documentation to determine which
1817 options, if any, are appropriate for compiling your
1818 code with this version of @code{g77}.
1820 @ifset DOC-G77
1821 @xref{Other Dialects}, for more information.
1822 @end ifset
1824 @item
1825 The @samp{-fugly} option now issues a warning, as it
1826 likely will be removed in a future version.
1828 (Enabling all the @samp{-fugly-*} options is unlikely
1829 to be feasible, or sensible, in the future,
1830 so users should learn to specify only those
1831 @samp{-fugly-*} options they really need for a
1832 particular source file.)
1834 @item
1835 The @samp{-fugly-assumed} option, introduced in
1836 version 0.5.19, has been changed to
1837 better accommodate old and new code.
1839 @ifset DOC-G77
1840 @xref{Ugly Assumed-Size Arrays}, for more information.
1841 @end ifset
1843 @ifclear USERVISONLY
1844 @item
1845 Make a number of fixes to the @code{g77} front end and
1846 the @code{gcc} back end to better support Alpha (AXP)
1847 machines.
1848 This includes providing at least one bug-fix to the
1849 @code{gcc} back end for Alphas.
1850 @end ifclear
1852 @item
1853 Related to supporting Alpha (AXP) machines, the @code{LOC()}
1854 intrinsic and @code{%LOC()} construct now return
1855 values of @code{INTEGER(KIND=0)} type,
1856 as defined by the GNU Fortran language.
1858 This type is wide enough
1859 (holds the same number of bits)
1860 as the character-pointer type on the machine.
1862 On most machines, this won't make a difference,
1863 whereas, on Alphas and other systems with 64-bit pointers,
1864 the @code{INTEGER(KIND=0)} type is equivalent to @code{INTEGER(KIND=2)}
1865 (often referred to as @code{INTEGER*8})
1866 instead of the more common @code{INTEGER(KIND=1)}
1867 (often referred to as @code{INTEGER*4}).
1869 @item
1870 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
1871 end, to avoid bugs in @code{complex} support in the
1872 @code{gcc} back end.
1873 New option @samp{-fno-emulate-complex}
1874 causes @code{g77} to revert the 0.5.19 behavior.
1876 @ifclear USERVISONLY
1877 @item
1878 Fix bug whereby @samp{REAL A(1)}, for example, caused
1879 a compiler crash if @samp{-fugly-assumed} was in effect
1880 and @var{A} was a local (automatic) array.
1881 That case is no longer affected by the new
1882 handling of @samp{-fugly-assumed}.
1883 @end ifclear
1885 @ifclear USERVISONLY
1886 @item
1887 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
1888 no longer deletes @file{foo.f} before issuing other
1889 diagnostics, and so the @samp{-x} option is properly
1890 handled.
1891 @end ifclear
1893 @ifclear USERVISONLY
1894 @item
1895 Enable inlining of subroutines and functions by the @code{gcc}
1896 back end.
1897 This works as it does for @code{gcc} itself---program units
1898 may be inlined for invocations that follow them in the same
1899 program unit, as long as the appropriate compile-time
1900 options are specified.
1901 @end ifclear
1903 @item
1904 Dummy arguments are no longer assumed to potentially alias
1905 (overlap)
1906 other dummy arguments or @code{COMMON} areas when any of
1907 these are defined (assigned to) by Fortran code.
1909 This can result in faster and/or smaller programs when
1910 compiling with optimization enabled, though on some
1911 systems this effect is observed only when @samp{-fforce-addr}
1912 also is specified.
1914 New options @samp{-falias-check}, @samp{-fargument-alias},
1915 @samp{-fargument-noalias},
1916 and @samp{-fno-argument-noalias-global} control the
1917 way @code{g77} handles potential aliasing.
1919 @ifset DOC-G77
1920 @xref{Aliasing Assumed To Work}, for detailed information on why the
1921 new defaults might result in some programs no longer working the way they
1922 did when compiled by previous versions of @code{g77}.
1923 @end ifset
1925 @ifclear USERVISONLY
1926 @item
1927 The @code{CONJG()} and @code{DCONJG()} intrinsics now
1928 are compiled in-line.
1929 @end ifclear
1931 @ifclear USERVISONLY
1932 @item
1933 The bug-fix for 0.5.19.1 has been re-done.
1934 The @code{g77} compiler has been changed back to
1935 assume @code{libf2c} has no aliasing problems in
1936 its implementations of the @code{COMPLEX} (and
1937 @code{DOUBLE COMPLEX}) intrinsics.
1938 The @code{libf2c} has been changed to have no such
1939 problems.
1941 As a result, 0.5.20 is expected to offer improved performance
1942 over 0.5.19.1, perhaps as good as 0.5.19 in most
1943 or all cases, due to this change alone.
1945 @emph{Note:} This change requires version 0.5.20 of
1946 @code{libf2c}, at least, when linking code produced
1947 by any versions of @code{g77} other than 0.5.19.1.
1948 Use @samp{g77 -v} to determine the version numbers
1949 of the @code{libF77}, @code{libI77}, and @code{libU77}
1950 components of the @code{libf2c} library.
1951 (If these version numbers are not printed---in
1952 particular, if the linker complains about unresolved
1953 references to names like @samp{g77__fvers__}---that
1954 strongly suggests your installation has an obsolete
1955 version of @code{libf2c}.)
1956 @end ifclear
1958 @item
1959 New option @samp{-fugly-assign} specifies that the
1960 same memory locations are to be used to hold the
1961 values assigned by both statements @samp{I = 3} and
1962 @samp{ASSIGN 10 TO I}, for example.
1963 (Normally, @code{g77} uses a separate memory location
1964 to hold assigned statement labels.)
1966 @ifset DOC-G77
1967 @xref{Ugly Assigned Labels}, for more information.
1968 @end ifset
1970 @item
1971 @code{FORMAT} and @code{ENTRY} statements now are allowed to
1972 precede @code{IMPLICIT NONE} statements.
1974 @ifclear USERVISONLY
1975 @item
1976 Produce diagnostic for unsupported @code{SELECT CASE} on
1977 @code{CHARACTER} type, instead of crashing, at compile time.
1978 @end ifclear
1980 @ifclear USERVISONLY
1981 @item
1982 Fix crashes involving diagnosed or invalid code.
1983 @end ifclear
1985 @ifclear USERVISONLY
1986 @item
1987 Change approach to building @code{libf2c} archive
1988 (@file{libf2c.a}) so that members are added to it
1989 only when truly necessary, so the user that installs
1990 an already-built @code{g77} doesn't need to have write
1991 access to the build tree (whereas the user doing the
1992 build might not have access to install new software
1993 on the system).
1994 @end ifclear
1996 @ifclear USERVISONLY
1997 @item
1998 Support @code{gcc} version 2.7.2.2
1999 (modified by @code{g77} into version 2.7.2.2.f.2),
2000 and remove
2001 support for prior versions of @code{gcc}.
2002 @end ifclear
2004 @ifclear USERVISONLY
2005 @item
2006 Upgrade to @code{libf2c} as of 1997-02-08, and
2007 fix up some of the build procedures.
2008 @end ifclear
2010 @ifclear USERVISONLY
2011 @item
2012 Improve general build procedures for @code{g77},
2013 fixing minor bugs (such as deletion of any file
2014 named @file{f771} in the parent directory of @code{gcc/}).
2015 @end ifclear
2017 @item
2018 Enable full support of @code{INTEGER(KIND=2)}
2019 (often referred to as @code{INTEGER*8})
2020 available in
2021 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
2022 may make full use of its features via the @code{g77}
2023 version of @file{f2c.h} and the @code{INTEGER(KIND=2)}
2024 support routines in the @code{g77} version of @code{libf2c}.
2026 @item
2027 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
2028 yields version information on the library.
2030 @item
2031 The @code{SNGL} and @code{FLOAT} intrinsics now are
2032 specific intrinsics, instead of synonyms for the
2033 generic intrinsic @code{REAL}.
2035 @item
2036 New intrinsics have been added.
2037 These are @code{REALPART}, @code{IMAGPART},
2038 @code{COMPLEX},
2039 @code{LONG}, and @code{SHORT}.
2041 @item
2042 A new group of intrinsics, @code{gnu}, has been added
2043 to contain the new @code{REALPART}, @code{IMAGPART},
2044 and @code{COMPLEX} intrinsics.
2045 An old group, @code{dcp}, has been removed.
2047 @item
2048 Complain about industry-wide ambiguous references
2049 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
2050 where @var{expr} is @code{DOUBLE COMPLEX} (or any
2051 complex type other than @code{COMPLEX}), unless
2052 @samp{-ff90} option specifies Fortran 90 interpretation
2053 or new @samp{-fugly-complex} option, in conjunction with
2054 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
2056 @ifclear USERVISONLY
2057 @item
2058 Make improvements to diagnostics.
2059 @end ifclear
2061 @ifclear USERVISONLY
2062 @item
2063 Speed up compiler a bit.
2064 @end ifclear
2066 @ifclear USERVISONLY
2067 @item
2068 Improvements to documentation and indexing, including
2069 a new chapter containing information on one, later
2070 more, diagnostics that users are directed to pull
2071 up automatically via a message in the diagnostic itself.
2073 (Hence the menu item @code{M} for the node
2074 @code{Diagnostics} in the top-level menu of
2075 the Info documentation.)
2076 @end ifclear
2077 @end itemize
2079 @ifclear DOC-OLDNEWS
2080 @heading In previous versions:
2082 Information on previous versions is archived
2083 in @file{@value{path-g77}/news.texi}
2084 following the test of the @code{DOC-OLDNEWS} macro.
2085 @end ifclear
2087 @ifset DOC-OLDNEWS
2088 @c 1997-02-01: 0.5.19.1 released.
2089 @heading In 0.5.19.1:
2090 @itemize @bullet
2091 @item
2092 Code-generation bugs afflicting operations on complex
2093 data have been fixed.
2095 These bugs occurred when assigning the result of an
2096 operation to a complex variable (or array element)
2097 that also served as an input to that operation.
2099 The operations affected by this bug were: @code{CONJG()},
2100 @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
2101 @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
2102 @code{CSQRT()}, @code{CDSQRT()}, complex division, and
2103 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
2104 power.
2105 (The related generic and @samp{Z}-prefixed intrinsics,
2106 such as @code{ZSIN()}, also were affected.)
2108 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
2109 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
2110 @code{DOUBLE COMPLEX}) have been fixed.
2111 @end itemize
2113 @c 1996-12-07: 0.5.19 released.
2114 @heading In 0.5.19:
2115 @itemize @bullet
2116 @item
2117 Fix @code{FORMAT} statement parsing so negative values for
2118 specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
2119 are correctly processed as negative.
2121 @item
2122 Fix @code{SIGNAL} intrinsic so it once again accepts a
2123 procedure as its second argument.
2125 @item
2126 A temporary kludge option provides bare-bones information on
2127 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
2129 @item
2130 New @samp{-fonetrip} option specifies FORTRAN-66-style
2131 one-trip @code{DO} loops.
2133 @item
2134 New @samp{-fno-silent} option causes names of program units
2135 to be printed as they are compiled, in a fashion similar to
2136 UNIX @code{f77} and @code{f2c}.
2138 @item
2139 New @samp{-fugly-assumed} option specifies that arrays
2140 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
2141 treated as assumed-size.
2143 @item
2144 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
2145 constants using the prefixed-radix form (such as @samp{Z'1234'})
2146 are to be interpreted as @code{INTEGER} constants.
2148 @item
2149 New @samp{-ff66} option is a ``shorthand'' option that specifies
2150 behaviors considered appropriate for FORTRAN 66 programs.
2152 @item
2153 New @samp{-ff77} option is a ``shorthand'' option that specifies
2154 behaviors considered appropriate for UNIX @code{f77} programs.
2156 @item
2157 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
2158 to perform some of what @samp{-fugly} used to do.
2159 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
2160 in that they do nothing more than enable (or disable) other
2161 @samp{-fugly-*} options.
2163 @item
2164 Fix parsing of assignment statements involving targets that
2165 are substrings of elements of @code{CHARACTER} arrays having
2166 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
2167 @samp{REALFUNCTIONFOO}.
2169 @item
2170 Fix crashes involving diagnosed code.
2172 @item
2173 Fix handling of local @code{EQUIVALENCE} areas so certain cases
2174 of valid Fortran programs are not misdiagnosed as improperly
2175 extending the area backwards.
2177 @item
2178 Support @code{gcc} version 2.7.2.1.
2180 @item
2181 Upgrade to @code{libf2c} as of 1996-09-26, and
2182 fix up some of the build procedures.
2184 @item
2185 Change code generation for list-directed I/O so it allows
2186 for new versions of @code{libf2c} that might return non-zero
2187 status codes for some operations previously assumed to always
2188 return zero.
2190 This change not only affects how @code{IOSTAT=} variables
2191 are set by list-directed I/O, it also affects whether
2192 @code{END=} and @code{ERR=} labels are reached by these
2193 operations.
2195 @item
2196 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
2197 procedures in @code{libf2c}.
2199 @item
2200 Modify @code{fseek_()} in @code{libf2c} to be more portable
2201 (though, in practice, there might be no systems where this
2202 matters) and to catch invalid @code{whence} arguments.
2204 @item
2205 Some useless warnings from the @samp{-Wunused} option have
2206 been eliminated.
2208 @item
2209 Fix a problem building the @file{f771} executable
2210 on AIX systems by linking with the @samp{-bbigtoc} option.
2212 @item
2213 Abort configuration if @code{gcc} has not been patched
2214 using the patch file provided in the @file{gcc/f/gbe/}
2215 subdirectory.
2217 @item
2218 Add options @samp{--help} and @samp{--version} to the
2219 @code{g77} command, to conform to GNU coding guidelines.
2220 Also add printing of @code{g77} version number when
2221 the @samp{--verbose} (@samp{-v}) option is used.
2223 @item
2224 Change internally generated name for local @code{EQUIVALENCE}
2225 areas to one based on the alphabetically sorted first name
2226 in the list of names for entities placed at the beginning
2227 of the areas.
2229 @item
2230 Improvements to documentation and indexing.
2231 @end itemize
2233 @c 1996-04-01: 0.5.18 released.
2234 @heading In 0.5.18:
2235 @itemize @bullet
2236 @item
2237 Add some rudimentary support for @code{INTEGER*1},
2238 @code{INTEGER*2}, @code{INTEGER*8},
2239 and their @code{LOGICAL} equivalents.
2240 (This support works on most, maybe all, @code{gcc} targets.)
2242 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2243 for providing the patch for this!
2245 Among the missing elements from the support for these
2246 features are full intrinsic support and constants.
2248 @item
2249 Add some rudimentary support for the @code{BYTE} and
2250 @code{WORD} type-declaration statements.
2251 @code{BYTE} corresponds to @code{INTEGER*1},
2252 while @code{WORD} corresponds to @code{INTEGER*2}.
2254 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
2255 for providing the patch for this!
2257 @item
2258 The compiler code handling intrinsics has been largely
2259 rewritten to accommodate the new types.
2260 No new intrinsics or arguments for existing
2261 intrinsics have been added, so there is, at this
2262 point, no intrinsic to convert to @code{INTEGER*8},
2263 for example.
2265 @item
2266 Support automatic arrays in procedures.
2268 @item
2269 Reduce space/time requirements for handling large
2270 @emph{sparsely} initialized aggregate arrays.
2271 This improvement applies to only a subset of
2272 the general problem to be addressed in 0.6.
2274 @item
2275 Treat initial values of zero as if they weren't
2276 specified (in DATA and type-declaration statements).
2277 The initial values will be set to zero anyway, but the amount
2278 of compile time processing them will be reduced,
2279 in some cases significantly (though, again, this
2280 is only a subset of the general problem to be
2281 addressed in 0.6).
2283 A new option, @samp{-fzeros}, is introduced to
2284 enable the traditional treatment of zeros as any
2285 other value.
2287 @item
2288 With @samp{-ff90} in force, @code{g77} incorrectly
2289 interpreted @samp{REAL(Z)} as returning a @code{REAL}
2290 result, instead of as a @code{DOUBLE PRECISION}
2291 result.
2292 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
2294 With @samp{-fno-f90} in force, the interpretation remains
2295 unchanged, since this appears to be how at least some
2296 F77 code using the @code{DOUBLE COMPLEX} extension expected
2297 it to work.
2299 Essentially, @samp{REAL(Z)} in F90 is the same as
2300 @samp{DBLE(Z)}, while in extended F77, it appears to
2301 be the same as @samp{REAL(REAL(Z))}.
2303 @item
2304 An expression involving exponentiation, where both operands
2305 were type @code{INTEGER} and the right-hand operand
2306 was negative, was erroneously evaluated.
2308 @item
2309 Fix bugs involving @code{DATA} implied-@code{DO} constructs
2310 (these involved an errant diagnostic and a crash, both on good
2311 code, one involving subsequent statement-function definition).
2313 @item
2314 Close @code{INCLUDE} files after processing them, so compiling source
2315 files with lots of @code{INCLUDE} statements does not result in
2316 being unable to open @code{INCLUDE} files after all the available
2317 file descriptors are used up.
2319 @item
2320 Speed up compiling, especially of larger programs, and perhaps
2321 slightly reduce memory utilization while compiling (this is
2322 @emph{not} the improvement planned for 0.6 involving large aggregate
2323 areas)---these improvements result from simply turning
2324 off some low-level code to do self-checking that hasn't been
2325 triggered in a long time.
2327 @item
2328 Introduce three new options that
2329 implement optimizations in the @code{gcc} back end (GBE).
2330 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
2331 and @samp{-frerun-loop-opt}, which are enabled, by default,
2332 for Fortran compilations.
2333 These optimizations are intended to help toon Fortran programs.
2335 @item
2336 Patch the GBE to do a better job optimizing certain
2337 kinds of references to array elements.
2339 @item
2340 Due to patches to the GBE, the version number of @code{gcc}
2341 also is patched to make it easier to manage installations,
2342 especially useful if it turns out a @code{g77} change to the
2343 GBE has a bug.
2345 The @code{g77}-modified version number is the @code{gcc}
2346 version number with the string @samp{.f.@var{n}} appended,
2347 where @samp{f} identifies the version as enhanced for
2348 Fortran, and @var{n} is @samp{1} for the first Fortran
2349 patch for that version of @code{gcc}, @samp{2} for the
2350 second, and so on.
2352 So, this introduces version 2.7.2.f.1 of @code{gcc}.
2354 @item
2355 Make several improvements and fixes to diagnostics, including
2356 the removal of two that were inappropriate or inadequate.
2358 @item
2359 Warning about two successive arithmetic operators, produced
2360 by @samp{-Wsurprising}, now produced @emph{only} when both
2361 operators are, indeed, arithmetic (not relational/boolean).
2363 @item
2364 @samp{-Wsurprising} now warns about the remaining cases
2365 of using non-integral variables for implied-@code{DO}
2366 loops, instead of these being rejected unless @samp{-fpedantic}
2367 or @samp{-fugly} specified.
2369 @item
2370 Allow @code{SAVE} of a local variable or array, even after
2371 it has been given an initial value via @code{DATA}, for example.
2373 @item
2374 Introduce an Info version of @code{g77} documentation, which
2375 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
2376 @file{gcc/f/PROJECTS}.
2377 These files will be removed in a future release.
2378 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
2379 @file{gcc/f/NEWS} now are automatically built from
2380 the texinfo source when distributions are made.
2382 This effort was inspired by a first pass at translating
2383 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
2384 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
2386 @item
2387 New @samp{-fno-second-underscore} option to specify
2388 that, when @samp{-funderscoring} is in effect, a second
2389 underscore is not to be appended to Fortran names already
2390 containing an underscore.
2392 @item
2393 Change the way iterative @code{DO} loops work to follow
2394 the F90 standard.
2395 In particular, calculation of the iteration count is
2396 still done by converting the start, end, and increment
2397 parameters to the type of the @code{DO} variable, but
2398 the result of the calculation is always converted to
2399 the default @code{INTEGER} type.
2401 (This should have no effect on existing code compiled
2402 by @code{g77}, but code written to assume that use
2403 of a @emph{wider} type for the @code{DO} variable
2404 will result in an iteration count being fully calculated
2405 using that wider type (wider
2406 than default @code{INTEGER}) must be rewritten.)
2408 @item
2409 Support @code{gcc} version 2.7.2.
2411 @item
2412 Upgrade to @code{libf2c} as of 1996-03-23, and
2413 fix up some of the build procedures.
2415 Note that the email addresses related to @code{f2c}
2416 have changed---the distribution site now is
2417 named @code{netlib.bell-labs.com}, and the
2418 maintainer's new address is @email{dmg@@bell-labs.com}.
2419 @end itemize
2421 @c 1995-11-18: 0.5.17 released.
2422 @heading In 0.5.17:
2423 @itemize @bullet
2424 @item
2425 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
2426 system's @file{/dev/null} special file if run by user @code{root}.
2428 @strong{All users} of version 0.5.16 should ensure that
2429 they have not removed @file{/dev/null} or replaced it with an ordinary
2430 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
2431 @samp{ls -l /dev/zero}.
2432 If the output isn't basically the
2433 same, contact your system
2434 administrator about restoring @file{/dev/null} to its proper status).
2436 This bug is particularly insidious because removing @file{/dev/null} as
2437 a special file can go undetected for quite a while, aside from
2438 various applications and programs exhibiting sudden, strange
2439 behaviors.
2441 I sincerely apologize for not realizing the
2442 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
2443 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
2444 it is supposed to build (especially if it reports unresolved
2445 references, which it should in this case)!
2447 @item
2448 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
2450 @item
2451 Fix crash that can occur when diagnostics given outside of any
2452 program unit (such as when input file contains @samp{@@foo}).
2454 @item
2455 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
2457 @item
2458 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
2459 and issue clearer error message in cases where target of @code{ASSIGN}
2460 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
2461 never happen).
2463 @item
2464 Make @code{libf2c} build procedures work on more systems again by
2465 eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}.
2467 @item
2468 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
2469 options to compiler.
2471 @item
2472 Fix failure to always diagnose missing type declaration for
2473 @code{IMPLICIT NONE}.
2475 @item
2476 Fix compile-time performance problem (which could sometimes
2477 crash the compiler, cause a hang, or whatever, due to a bug
2478 in the back end) involving exponentiation with a large @code{INTEGER}
2479 constant for the right-hand operator (e.g. @samp{I**32767}).
2481 @item
2482 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
2483 utility in particular) is properly built using the host compiler.
2485 @item
2486 Add new @samp{-Wsurprising} option to warn about constructs that are
2487 interpreted by the Fortran standard (and @code{g77}) in ways that
2488 are surprising to many programmers.
2490 @item
2491 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
2492 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
2494 @emph{Note:} You should
2495 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
2496 these as generic intrinsics, to improve likelihood of diagnostics
2497 (instead of subtle run-time bugs) when using a compiler that
2498 doesn't support these as intrinsics (e.g. @code{f2c}).
2500 @item
2501 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
2502 with non-@code{INTEGER} index variable; issue that under
2503 @samp{-Wsurprising} instead.
2505 @item
2506 Clarify some diagnostics that say things like ``ignored'' when that's
2507 misleading.
2509 @item
2510 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
2511 operands.
2513 @item
2514 Minor improvements to code generation for various operations on
2515 @code{LOGICAL} operands.
2517 @item
2518 Minor improvement to code generation for some @code{DO} loops on some
2519 machines.
2521 @item
2522 Support @code{gcc} version 2.7.1.
2524 @item
2525 Upgrade to @code{libf2c} as of 1995-11-15.
2526 @end itemize
2528 @c 1995-08-30: 0.5.16 released.
2529 @heading In 0.5.16:
2530 @itemize @bullet
2531 @item
2532 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
2533 not involving @code{COMMON}.
2535 @item
2536 Fix code-generation bugs involving invoking ``gratis'' library procedures
2537 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
2538 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
2539 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
2540 @code{DERF()}, and @code{DERFC()}.
2542 @item
2543 Update @code{libf2c} to include netlib patches through 1995-08-16, and
2544 @code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
2545 consistent with other Fortran implementations by outputting
2546 leading zeros in formatted and list-directed output.
2548 @item
2549 Fix a code-generation bug involving adjustable dummy arrays with high
2550 bounds whose primaries are changed during procedure execution, and
2551 which might well improve code-generation performance for such arrays
2552 compared to @code{f2c} plus @code{gcc} (but apparently only when using
2553 @file{gcc-2.7.0} or later).
2555 @item
2556 Fix a code-generation bug involving invocation of @code{COMPLEX} and
2557 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
2558 @code{DOUBLE COMPLEX} divides, when the result
2559 of the invocation or divide is assigned directly to a variable
2560 that overlaps one or more of the arguments to the invocation or divide.
2562 @item
2563 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
2564 nonconstant and the expression is used to dimension a dummy
2565 array, since the @code{gcc} back end does not support the necessary
2566 mechanics (and the @code{gcc} front end rejects the equivalent
2567 construct, as it turns out).
2569 @item
2570 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
2572 @item
2573 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
2574 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
2576 @item
2577 Fix crashes and such involving diagnosed code.
2579 @item
2580 Diagnose, instead of crashing on, statement function definitions
2581 having duplicate dummy argument names.
2583 @item
2584 Fix bug causing rejection of good code involving statement function
2585 definitions.
2587 @item
2588 Fix bug resulting in debugger not knowing size of local equivalence
2589 area when any member of area has initial value (via @code{DATA},
2590 for example).
2592 @item
2593 Fix installation bug that prevented installation of @code{g77} driver.
2594 Provide for easy selection of whether to install copy of @code{g77}
2595 as @code{f77} to replace the broken code.
2597 @item
2598 Fix @code{gcc} driver (affects @code{g77} thereby) to not
2599 gratuitously invoke the
2600 @code{f771} program (e.g. when @samp{-E} is specified).
2602 @item
2603 Fix diagnostic to point to correct source line when it immediately
2604 follows an @code{INCLUDE} statement.
2606 @item
2607 Support more compiler options in @code{gcc}/@code{g77} when
2608 compiling Fortran files.
2609 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
2610 correct setting of version-number macros for preprocessing, full
2611 recognition of @samp{-O0}, and
2612 automatic insertion of configuration-specific linker specs.
2614 @item
2615 Add new intrinsics that interface to existing routines in @code{libf2c}:
2616 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
2617 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
2618 @code{SIGNAL}, and @code{SYSTEM}.
2619 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
2620 @code{SYSTEM} are intrinsic subroutines, not functions (since they
2621 have side effects), so to get the return values from @code{SIGNAL}
2622 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
2623 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
2625 @item
2626 Add new intrinsic group named @code{unix} to contain the new intrinsics,
2627 and by default enable this new group.
2629 @item
2630 Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
2631 @code{unix} group.
2633 @item
2634 Improve @code{g77} so that @samp{g77 -v} by itself (or with
2635 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
2636 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
2637 version info, and so that long-form options @code{gcc} accepts are
2638 understood by @code{g77} as well (even in truncated, unambiguous forms).
2640 @item
2641 Add new @code{g77} option @samp{--driver=name} to specify driver when
2642 default, @code{gcc}, isn't appropriate.
2644 @item
2645 Add support for @samp{#} directives (as output by the preprocessor) in the
2646 compiler, and enable generation of those directives by the
2647 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
2648 info are more useful to users of the preprocessor.
2650 @item
2651 Produce better diagnostics, more like @code{gcc}, with info such as
2652 @samp{In function `foo':} and @samp{In file included from...:}.
2654 @item
2655 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
2657 @item
2658 When @samp{-Wunused} in effect, don't warn about local variables used as
2659 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
2660 variables, even though, strictly speaking, these are not uses
2661 of the variables themselves.
2663 @item
2664 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
2665 at all, since there's no way to turn this off for individual
2666 cases (@code{g77} might someday start warning about these)---applies
2667 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
2668 warn about unused dummy arguments.
2670 @item
2671 New option @samp{-fno-underscoring} that inhibits transformation of names
2672 (by appending one or two underscores) so users may experiment
2673 with implications of such an environment.
2675 @item
2676 Minor improvement to @file{gcc/f/info} module to make it easier to build
2677 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
2678 (but definitely not all machines nor all non-@code{gcc} compilers).
2679 Please
2680 do not report bugs showing problems compilers have with
2681 macros defined in @file{gcc/f/target.h} and used in places like
2682 @file{gcc/f/expr.c}.
2684 @item
2685 Add warning to be printed for each invocation of the compiler
2686 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
2687 is not 32 bits,
2688 since @code{g77} is known to not work well for such cases.
2690 @item
2691 Lots of new documentation (though work is still needed to put it into
2692 canonical GNU format).
2694 @item
2695 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
2696 (by default), to produce
2697 smaller library without lots of debugging clutter.
2698 @end itemize
2700 @c 1995-05-19: 0.5.15 released.
2701 @heading In 0.5.15:
2702 @itemize @bullet
2703 @item
2704 Fix bad code generation involving @samp{X**I} and temporary, internal variables
2705 generated by @code{g77} and the back end (such as for @code{DO} loops).
2707 @item
2708 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
2710 @item
2711 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
2713 @item
2714 Fix crash or other erratic behavior when null character constant
2715 (@samp{''}) is encountered.
2717 @item
2718 Fix crash or other erratic behavior involving diagnosed code.
2720 @item
2721 Fix code generation for external functions returning type @code{REAL} when
2722 the @samp{-ff2c} option is in force (which it is by default) so that
2723 @code{f2c} compatibility is indeed provided.
2725 @item
2726 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
2727 with an array declarator.
2729 @item
2730 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
2731 maximum length
2732 of a typical fixed-form line, defaulting to 72 columns, such
2733 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
2734 meaning no characters are ignored.
2735 does not affect lines
2736 with @samp{&} in column 1, which are always processed as if
2737 @samp{-ffixed-line-length-none} was in effect.
2739 @item
2740 No longer generate better code for some kinds of array references,
2741 as @code{gcc} back end is to be fixed to do this even better, and it
2742 turned out to slow down some code in some cases after all.
2744 @item
2745 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
2746 values (e.g. via @code{DATA}), uninitialized members now always
2747 initialized to binary zeros (though this is not required by
2748 the standard, and might not be done in future versions
2749 of @code{g77}).
2750 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
2751 (essentially those with members of more than one type), the
2752 uninitialized members were initialized to spaces, to
2753 cater to @code{CHARACTER} types, but it seems no existing code expects
2754 that, while much existing code expects binary zeros.
2755 @end itemize
2757 @heading In 0.5.14:
2758 @itemize @bullet
2759 @item
2760 Don't emit bad code when low bound of adjustable array is nonconstant
2761 and thus might vary as an expression at run time.
2763 @item
2764 Emit correct code for calculation of number of trips in @code{DO} loops
2765 for cases
2766 where the loop should not execute at all.
2767 (This bug affected cases
2768 where the difference between the begin and end values was less
2769 than the step count, though probably not for floating-point cases.)
2771 @item
2772 Fix crash when extra parentheses surround item in
2773 @code{DATA} implied-@code{DO} list.
2775 @item
2776 Fix crash over minor internal inconsistencies in handling diagnostics,
2777 just substitute dummy strings where necessary.
2779 @item
2780 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
2782 @item
2783 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
2784 is a string of one or more digits.
2786 @item
2787 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
2789 @item
2790 Fix various crashes involving code with diagnosed errors.
2792 @item
2793 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
2794 @file{header.gcc} facility for handling systems like MS-DOS.
2796 @item
2797 Allow @code{INCLUDE} statement to be continued across multiple lines,
2798 even allow it to coexist with other statements on the same line.
2800 @item
2801 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
2802 fixes a bug involving infinite loops reading EOF with empty list-directed
2803 I/O list.
2805 @item
2806 Remove all the @code{g77}-specific auto-configuration scripts, code,
2807 and so on,
2808 except for temporary substitutes for bsearch() and strtoul(), as
2809 too many configure/build problems were reported in these areas.
2810 People will have to fix their systems' problems themselves, or at
2811 least somewhere other than @code{g77}, which expects a working ANSI C
2812 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
2814 @item
2815 Complain if initialized common redeclared as larger in subsequent program
2816 unit.
2818 @item
2819 Warn if blank common initialized, since its size can vary and hence
2820 related warnings that might be helpful won't be seen.
2822 @item
2823 New @samp{-fbackslash} option, on by default, that causes @samp{\}
2824 within @code{CHARACTER}
2825 and Hollerith constants to be interpreted a la GNU C.
2826 Note that
2827 this behavior is somewhat different from @code{f2c}'s, which supports only
2828 a limited subset of backslash (escape) sequences.
2830 @item
2831 Make @samp{-fugly-args} the default.
2833 @item
2834 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
2835 to be specified as initial values for variables or named constants
2836 (@code{PARAMETER}), and also allows character<->numeric conversion in
2837 those contexts---turn off via @samp{-fno-ugly-init}.
2839 @item
2840 New @samp{-finit-local-zero} option to initialize
2841 local variables to binary zeros.
2842 This does not affect whether they are @code{SAVE}d, i.e. made
2843 automatic or static.
2845 @item
2846 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
2847 and functions.
2848 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
2850 @item
2851 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
2852 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
2853 requires @samp{-O}), and implies @samp{-Wunused} as well.
2855 @item
2856 @samp{-Wunused} no longer gives spurious messages for unused
2857 @code{EXTERNAL} names (since they are assumed to refer to block data
2858 program units, to make use of libraries more reliable).
2860 @item
2861 Support @code{%LOC()} and @code{LOC()} of character arguments.
2863 @item
2864 Support null (zero-length) character constants and expressions.
2866 @item
2867 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
2869 @item
2870 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
2871 character expressions that are valid in assignments but
2872 not normally as actual arguments.
2874 @item
2875 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
2877 @item
2878 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
2879 in @code{BLOCK DATA}, even though these are not allowed by the standard.
2881 @item
2882 Allow @code{RETURN} in main program unit.
2884 @item
2885 Changes to Hollerith-constant support to obey Appendix C of the
2886 standard:
2888 @itemize @minus
2889 @item
2890 Now padded on the right with zeros, not spaces.
2892 @item
2893 Hollerith ``format specifications'' in the form of arrays of
2894 non-character allowed.
2896 @item
2897 Warnings issued when non-space truncation occurs when converting
2898 to another type.
2900 @item
2901 When specified as actual argument, now passed
2902 by reference to @code{INTEGER} (padded on right with spaces if constant
2903 too small, otherwise fully intact if constant wider the @code{INTEGER}
2904 type) instead of by value.
2905 @end itemize
2907 @strong{Warning:} @code{f2c} differs on the
2908 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
2909 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
2910 as @samp{CALL FOO(%REF('X   '))} (padded with as many spaces as necessary
2911 to widen to @code{INTEGER}), essentially.
2913 @item
2914 Changes and fixes to typeless-constant support:
2916 @itemize @minus
2917 @item
2918 Now treated as a typeless double-length @code{INTEGER} value.
2920 @item
2921 Warnings issued when overflow occurs.
2923 @item
2924 Padded on the left with zeros when converting
2925 to a larger type.
2927 @item
2928 Should be properly aligned and ordered on
2929 the target machine for whatever type it is turned into.
2931 @item
2932 When specified as actual argument, now passed as reference to
2933 a default @code{INTEGER} constant.
2934 @end itemize
2936 @item
2937 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
2938 the expression plus a length for the expression just as if
2939 it were a @code{CHARACTER} expression.
2940 For example, @samp{CALL FOO(%DESCR(D))}, where
2941 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
2943 @item
2944 Name of multi-entrypoint master function changed to incorporate
2945 the name of the primary entry point instead of a decimal
2946 value, so the name of the master function for @samp{SUBROUTINE X}
2947 with alternate entry points is now @samp{__g77_masterfun_x}.
2949 @item
2950 Remove redundant message about zero-step-count @code{DO} loops.
2952 @item
2953 Clean up diagnostic messages, shortening many of them.
2955 @item
2956 Fix typo in @code{g77} man page.
2958 @item
2959 Clarify implications of constant-handling bugs in @file{f/BUGS}.
2961 @item
2962 Generate better code for @samp{**} operator with a right-hand operand of
2963 type @code{INTEGER}.
2965 @item
2966 Generate better code for @code{SQRT()} and @code{DSQRT()},
2967 also when @samp{-ffast-math}
2968 specified, enable better code generation for @code{SIN()} and @code{COS()}.
2970 @item
2971 Generate better code for some kinds of array references.
2973 @item
2974 Speed up lexing somewhat (this makes the compilation phase noticeably
2975 faster).
2976 @end itemize
2978 @end ifset
2979 @end ifclear