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