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