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