OSDN Git Service

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