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