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