OSDN Git Service

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