OSDN Git Service

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