OSDN Git Service

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