OSDN Git Service

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