OSDN Git Service

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