OSDN Git Service

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