OSDN Git Service

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