OSDN Git Service

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