OSDN Git Service

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