OSDN Git Service

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