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