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