OSDN Git Service

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