OSDN Git Service

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