OSDN Git Service

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