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