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