OSDN Git Service

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