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