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