OSDN Git Service

31324ce41ff39dd9cf01c7dba2213391ad1c2c7e
[pf3gnuchains/gcc-fork.git] / gcc / f / news.texi
1 @c Copyright (C) 1995-1997 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 The text of this file appears in the file BUGS
6 @c in the G77 distribution, as well as in the G77 manual.
7
8 @c 1997-10-10
9
10 @ifclear NEWSONLY
11 @node News
12 @chapter News About GNU Fortran
13 @end ifclear
14 @cindex versions, recent
15 @cindex recent versions
16
17 Changes made to recent versions of GNU Fortran are listed
18 below, with the most recent version first.
19
20 The changes are generally listed with code-generation
21 bugs first, followed by compiler crashes involving valid
22 code, new features, fixes to existing features, new
23 diagnostics, internal improvements, and miscellany.
24 This order is not strict---for example, some items
25 involve a combination of these elements.
26
27 @heading In 0.5.22:
28 @itemize @bullet
29 @item
30 Fix @code{SIGNAL} intrinsic so it offers portable
31 support for 64-bit systems (such as Digital Alphas
32 running GNU/Linux).
33
34 @item
35 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
36 compile-time constant @code{INTEGER} expression.
37
38 @item
39 Fix code generation for iterative @code{DO} loops that
40 have one or more references to the iteration variable,
41 or to aliases of it, in their control expressions.
42 For example, @samp{DO 10 J=2,J} now is compiled correctly.
43
44 @item
45 Fix a compiler crash involving optimization of
46 certain complicated expressions involving @code{COMPLEX}
47 arithmetic (especially multiplication).
48
49 @item
50 Fix an internal error compiling the @code{Cpu_Time} intrinsic.
51
52 @item
53 Rename the @code{gcc} keyword @code{restrict} to
54 @code{__restrict__}, to avoid rejecting valid, existing,
55 C programs.
56 Support for @code{restrict} is now more like support
57 for @code{complex}.
58
59 @item
60 Fix @code{DTime} intrinsic so as not to truncate
61 results to integer values (on some systems) and allow general numeric
62 args for the  @code{Int2} and @code{Int8} intrinsics.
63
64 @item
65 Improve diagnostic messages from @code{libf2c}
66 so it is more likely that the printing of the
67 active format string is limited to the string,
68 with no trailing garbage being printed.
69
70 (Unlike @code{f2c}, @code{g77} does not append
71 a null byte to its compiled form of every
72 format string specified via a @code{FORMAT} statement.
73 However, @code{f2c} would exhibit the problem
74 anyway for a statement like @samp{PRINT '(I)garbage', 1}
75 by printing @samp{(I)garbage} as the format string.)
76
77 @item
78 Upgrade to @code{libf2c} as of 1997-09-23.
79 @end itemize
80
81 @heading In 0.5.21:
82 @itemize @bullet
83 @item
84 Fix a code-generation bug introduced by 0.5.20
85 caused by loop unrolling (by specifying
86 @samp{-funroll-loops} or similar).
87 This bug afflicted all code compiled by
88 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
89 Fortran, and so on).
90
91 @item
92 Fix a code-generation bug manifested when
93 combining local @code{EQUIVALENCE} with a
94 @code{DATA} statement that follows
95 the first executable statement (or is
96 treated as an executable-context statement
97 as a result of using the @samp{-fpedantic}
98 option).
99
100 @item
101 Fix a compiler crash that occured when an
102 integer division by a constant zero is detected.
103 Instead, when the @samp{-W} option is specified,
104 the @code{gcc} back end issues a warning about such a case.
105 This bug afflicted all code compiled by
106 version 2.7.2.2.f.2 of @code{gcc} (C, C++,
107 Fortran, and so on).
108
109 @item
110 Fix a compiler crash that occurred in some cases
111 of procedure inlining.
112 (Such cases became more frequent in 0.5.20.)
113
114 @item
115 Fix a compiler crash resulting from using @code{DATA}
116 or similar to initialize a @code{COMPLEX} variable or
117 array to zero.
118
119 @item
120 Fix compiler crashes involving use of @code{AND}, @code{OR},
121 or @code{XOR} intrinsics.
122
123 @item
124 Fix compiler bug triggered when using a @code{COMMON}
125 or @code{EQUIVALENCE} variable
126 as the target of an @code{ASSIGN}
127 or assigned-@code{GOTO} statement.
128
129 @item
130 Fix compiler crashes due to using the name of a some
131 non-standard intrinsics (such as @samp{FTELL} or
132 @samp{FPUTC}) as such and as the name of a procedure
133 or common block.
134 Such dual use of a name in a program is allowed by
135 the standard.
136
137 @c @code{g77}'s version of @code{libf2c} has been modified
138 @c so that the external names of library's procedures do not
139 @c conflict with names used for Fortran procedures compiled
140 @c by @code{g77}.
141 @c An additional layer of jacket procedures has been added
142 @c to @code{libf2c} to map the old names to the new names,
143 @c for automatic use by programs that interface to the
144 @c library procedures via the external-procedure mechanism.
145 @c 
146 @c For example, the intrinsic @code{FPUTC} previously was
147 @c implemented by @code{g77} as a call to the @code{libf2c}
148 @c routine @samp{fputc_}.
149 @c This would conflict with a Fortran procedure named @code{FPUTC}
150 @c (using default compiler options), and this conflict
151 @c would cause a crash under certain circumstances.
152 @c 
153 @c Now, the intrinsic @code{FPUTC} calls @samp{G77_fputc_0},
154 @c which does not conflict with the @samp{fputc_} external
155 @c that implements a Fortran procedure named @code{FPUTC}.
156 @c 
157 @c Programs that refer to @code{FPUTC} as an external procedure
158 @c without supplying their own implementation will link to
159 @c the new @code{libf2c} routine @samp{fputc_}, which is
160 @c simply a jacket routine that calls @samp{G77_fputc_0}.
161
162 @item
163 Place automatic arrays on the stack, even if
164 @code{SAVE} or the @samp{-fno-automatic} option
165 is in effect.
166 This avoids a compiler crash in some cases.
167
168 @item
169 The @samp{-malign-double} option now reliably aligns
170 @code{DOUBLE PRECISION} optimally on Pentium and
171 Pentium Pro architectures (586 and 686 in @code{gcc}).
172
173 @item
174 New option @samp{-Wno-globals} disables warnings
175 about ``suspicious'' use of a name both as a global
176 name and as the implicit name of an intrinsic, and
177 warnings about disagreements over the number or natures of
178 arguments passed to global procedures, or the
179 natures of the procedures themselves.
180
181 The default is to issue such warnings, which are
182 new as of this version of @code{g77}.
183
184 @item
185 New option @samp{-fno-globals} disables diagnostics
186 about potentially fatal disagreements
187 analysis problems, such as disagreements over the
188 number or natures of arguments passed to global
189 procedures, or the natures of those procedures themselves.
190
191 The default is to issue such diagnostics and flag
192 the compilation as unsuccessful.
193 With this option, the diagnostics are issued as
194 warnings, or, if @samp{-Wno-globals} is specified,
195 are not issued at all.
196
197 This option also disables inlining of global procedures,
198 to avoid compiler crashes resulting from coding errors
199 that these diagnostics normally would identify.
200
201 @item
202 Diagnose cases where a reference to a procedure
203 disagrees with the type of that procedure, or
204 where disagreements about the number or nature
205 of arguments exist.
206 This avoids a compiler crash.
207
208 @item
209 Fix parsing bug whereby @code{g77} rejected a
210 second initialization specification immediately
211 following the first's closing @samp{/} without
212 an intervening comma in a @code{DATA} statement,
213 and the second specification was an implied-DO list.
214
215 @item
216 Improve performance of the @code{gcc} back end so
217 certain complicated expressions involving @code{COMPLEX}
218 arithmetic (especially multiplication) don't appear to
219 take forever to compile.
220
221 @item
222 Fix a couple of profiling-related bugs in @code{gcc}
223 back end.
224
225 @item
226 Integrate GNU Ada's (GNAT's) changes to the back end,
227 which consist almost entirely of bug fixes.
228 These fixes are circa version 3.10p of GNAT.
229
230 @item
231 Include some other @code{gcc} fixes that seem useful in
232 @code{g77}'s version of @code{gcc}.
233 (See @file{gcc/ChangeLog} for details---compare it
234 to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
235 distribution.)
236
237 @item
238 Fix @code{libU77} routines that accept file and other names
239 to strip trailing blanks from them, for consistency
240 with other implementations.
241 Blanks may be forcibly appended to such names by
242 appending a single null character (@samp{CHAR(0)})
243 to the significant trailing blanks.
244
245 @item
246 Fix @code{CHMOD} intrinsic to work with file names
247 that have embedded blanks, commas, and so on.
248
249 @item
250 Fix @code{SIGNAL} intrinsic so it accepts an
251 optional third @samp{Status} argument.
252
253 @item
254 Fix @code{IDATE()} intrinsic subroutine (VXT form)
255 so it accepts arguments in the correct order.
256 Documentation fixed accordingly, and for
257 @code{GMTIME()} and @code{LTIME()} as well.
258
259 @item
260 Make many changes to @code{libU77} intrinsics to
261 support existing code more directly.
262
263 Such changes include allowing both subroutine and
264 function forms of many routines, changing @code{MCLOCK()}
265 and @code{TIME()} to return @code{INTEGER(KIND=1)} values,
266 introducing @code{MCLOCK8()} and @code{TIME8()} to
267 return @code{INTEGER(KIND=2)} values,
268 and placing functions that are intended to perform
269 side effects in a new intrinsic group, @code{badu77}.
270
271 @item
272 Improve @code{libU77} so it is more portable.
273
274 @item
275 Add options @samp{-fbadu77-intrinsics-delete},
276 @samp{-fbadu77-intrinsics-hide}, and so on.
277
278 @item
279 Fix crashes involving diagnosed or invalid code.
280
281 @item
282 @code{g77} and @code{gcc} now do a somewhat better
283 job detecting and diagnosing arrays that are too
284 large to handle before these cause diagnostics
285 during the assembler or linker phase, a compiler
286 crash, or generation of incorrect code.
287
288 @item
289 Make some fixes to alias analysis code.
290
291 @item
292 Add support for @code{restrict} keyword in @code{gcc}
293 front end.
294
295 @item
296 Support @code{gcc} version 2.7.2.3
297 (modified by @code{g77} into version 2.7.2.3.f.1),
298 and remove
299 support for prior versions of @code{gcc}.
300
301 @item
302 Incorporate GNAT's patches to the @code{gcc} back
303 end into @code{g77}'s, so GNAT users do not need
304 to apply GNAT's patches to build both GNAT and @code{g77}
305 from the same source tree.
306
307 @item
308 Modify @code{make} rules and related code so that
309 generation of Info documentation doesn't require
310 compilation using @code{gcc}.
311 Now, any ANSI C compiler should be adequate to
312 produce the @code{g77} documentation (in particular,
313 the tables of intrinsics) from scratch.
314
315 @item
316 Add @code{INT2} and @code{INT8} intrinsics.
317
318 @item
319 Add @code{CPU_TIME} intrinsic.
320
321 @item
322 Add @code{ALARM} intrinsic.
323
324 @item
325 @code{CTIME} intrinsic now accepts any @code{INTEGER}
326 argument, not just @code{INTEGER(KIND=2)}.
327
328 @item
329 Warn when explicit type declaration disagrees with
330 the type of an intrinsic invocation.
331
332 @item
333 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
334
335 @item
336 Fix typo in @code{make} rule @samp{g77-cross}, used only for
337 cross-compiling.
338
339 @item
340 Fix @code{libf2c} build procedure to re-archive library
341 if previous attempt to archive was interrupted.
342
343 @item
344 Change @code{gcc} to unroll loops only during the last
345 invocation (of as many as two invocations) of loop
346 optimization.
347
348 @item
349 Improve handling of @samp{-fno-f2c} so that code that
350 attempts to pass an intrinsic as an actual argument,
351 such as @samp{CALL FOO(ABS)}, is rejected due to the fact
352 that the run-time-library routine is, effectively,
353 compiled with @samp{-ff2c} in effect.
354
355 @item
356 Fix @code{g77} driver to recognize @samp{-fsyntax-only}
357 as an option that inhibits linking, just like @samp{-c} or
358 @samp{-S}, and to recognize and properly handle the
359 @samp{-nostdlib}, @samp{-M}, @samp{-MM}, @samp{-nodefaultlibs},
360 and @samp{-Xlinker} options.
361
362 @item
363 Upgrade to @code{libf2c} as of 1997-08-16.
364
365 @item
366 Modify @code{libf2c} to consistently and clearly diagnose
367 recursive I/O (at run time).
368
369 @item
370 @code{g77} driver now prints version information (such as produced
371 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
372
373 @item
374 The @samp{.r} suffix now designates a Ratfor source file,
375 to be preprocessed via the @code{ratfor} command, available
376 separately.
377
378 @item
379 Fix some aspects of how @code{gcc} determines what kind of
380 system is being configured and what kinds are supported.
381 For example, GNU Linux/Alpha ELF systems now are directly
382 supported.
383
384 @item
385 Improve diagnostics.
386
387 @item
388 Improve documentation and indexing.
389
390 @item
391 Include all pertinent files for @code{libf2c} that come
392 from @code{netlib.bell-labs.com}; give any such files
393 that aren't quite accurate in @code{g77}'s version of
394 @code{libf2c} the suffix @samp{.netlib}.
395
396 @item
397 Reserve @code{INTEGER(KIND=0)} for future use.
398 @end itemize
399
400 @heading In 0.5.20:
401 @itemize @bullet
402 @item
403 The @samp{-fno-typeless-boz} option is now the default.
404
405 This option specifies that non-decimal-radix
406 constants using the prefixed-radix form (such as @samp{Z'1234'})
407 are to be interpreted as @code{INTEGER} constants.
408 Specify @samp{-ftypeless-boz} to cause such
409 constants to be interpreted as typeless.
410
411 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
412 its inverse.)
413
414 @item
415 Options @samp{-ff90-intrinsics-enable} and
416 @samp{-fvxt-intrinsics-enable} now are the
417 defaults.
418
419 Some programs might use names that clash with
420 intrinsic names defined (and now enabled) by these
421 options or by the new @code{libU77} intrinsics.
422 Users of such programs might need to compile them
423 differently (using, for example, @samp{-ff90-intrinsics-disable})
424 or, better yet, insert appropriate @code{EXTERNAL}
425 statements specifying that these names are not intended
426 to be names of intrinsics.
427
428 @item
429 The @samp{ALWAYS_FLUSH} macro is no longer defined when
430 building @code{libf2c}, which should result in improved
431 I/O performance, especially over NFS.
432
433 @emph{Note:} If you have code that depends on the behavior
434 of @code{libf2c} when built with @samp{ALWAYS_FLUSH} defined,
435 you will have to modify @code{libf2c} accordingly before
436 building it from this and future versions of @code{g77}.
437
438 @item
439 Dave Love's implementation of @code{libU77} has been
440 added to the version of @code{libf2c} distributed with
441 and built as part of @code{g77}.
442 @code{g77} now knows about the routines in this library
443 as intrinsics.
444
445 @item
446 New option @samp{-fvxt} specifies that the
447 source file is written in VXT Fortran, instead of GNU Fortran.
448
449 @item
450 The @samp{-fvxt-not-f90} option has been deleted,
451 along with its inverse, @samp{-ff90-not-vxt}.
452
453 If you used one of these deleted options, you should
454 re-read the pertinent documentation to determine which
455 options, if any, are appropriate for compiling your
456 code with this version of @code{g77}.
457
458 @item
459 The @samp{-fugly} option now issues a warning, as it
460 likely will be removed in a future version.
461
462 (Enabling all the @samp{-fugly-*} options is unlikely
463 to be feasible, or sensible, in the future,
464 so users should learn to specify only those
465 @samp{-fugly-*} options they really need for a
466 particular source file.)
467
468 @item
469 The @samp{-fugly-assumed} option, introduced in
470 version 0.5.19, has been changed to
471 better accommodate old and new code.
472
473 @item
474 Make a number of fixes to the @code{g77} front end and
475 the @code{gcc} back end to better support Alpha (AXP)
476 machines.
477 This includes providing at least one bug-fix to the
478 @code{gcc} back end for Alphas.
479
480 @item
481 Related to supporting Alpha (AXP) machines, the @code{LOC()}
482 intrinsic and @code{%LOC()} construct now return
483 values of integer type that is the same width (holds
484 the same number of bits) as the pointer type on the
485 machine.
486
487 On most machines, this won't make a difference, whereas
488 on Alphas, the type these constructs return is
489 @code{INTEGER*8} instead of the more common @code{INTEGER*4}.
490
491 @item
492 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
493 end, to avoid bugs in @code{complex} support in the
494 @code{gcc} back end.
495 New option @samp{-fno-emulate-complex}
496 causes @code{g77} to revert the 0.5.19 behavior.
497
498 @item
499 Fix bug whereby @samp{REAL A(1)}, for example, caused
500 a compiler crash if @samp{-fugly-assumed} was in effect
501 and @var{A} was a local (automatic) array.
502 That case is no longer affected by the new
503 handling of @samp{-fugly-assumed}.
504
505 @item
506 Fix @code{g77} command driver so that @samp{g77 -o foo.f}
507 no longer deletes @file{foo.f} before issuing other
508 diagnostics, and so the @samp{-x} option is properly
509 handled.
510
511 @item
512 Enable inlining of subroutines and functions by the @code{gcc}
513 back end.
514 This works as it does for @code{gcc} itself---program units
515 may be inlined for invocations that follow them in the same
516 program unit, as long as the appropriate compile-time
517 options are specified.
518
519 @item
520 Dummy arguments are no longer assumed to potentially alias
521 (overlap)
522 other dummy arguments or @code{COMMON} areas when any of
523 these are defined (assigned to) by Fortran code.
524
525 This can result in faster and/or smaller programs when
526 compiling with optimization enabled, though on some
527 systems this effect is observed only when @samp{-fforce-addr}
528 also is specified.
529
530 New options @samp{-falias-check}, @samp{-fargument-alias},
531 @samp{-fargument-noalias},
532 and @samp{-fno-argument-noalias-global} control the
533 way @code{g77} handles potential aliasing.
534
535 @item
536 The @code{CONJG()} and @code{DCONJG()} intrinsics now
537 are compiled in-line.
538
539 @item
540 The bug-fix for 0.5.19.1 has been re-done.
541 The @code{g77} compiler has been changed back to
542 assume @code{libf2c} has no aliasing problems in
543 its implementations of the @code{COMPLEX} (and
544 @code{DOUBLE COMPLEX}) intrinsics.
545 The @code{libf2c} has been changed to have no such
546 problems.
547
548 As a result, 0.5.20 is expected to offer improved performance
549 over 0.5.19.1, perhaps as good as 0.5.19 in most
550 or all cases, due to this change alone.
551
552 @emph{Note:} This change requires version 0.5.20 of
553 @code{libf2c}, at least, when linking code produced
554 by any versions of @code{g77} other than 0.5.19.1.
555 Use @samp{g77 -v} to determine the version numbers
556 of the @code{libF77}, @code{libI77}, and @code{libU77}
557 components of the @code{libf2c} library.
558 (If these version numbers are not printed---in
559 particular, if the linker complains about unresolved
560 references to names like @samp{g77__fvers__}---that
561 strongly suggests your installation has an obsolete
562 version of @code{libf2c}.)
563
564 @item
565 New option @samp{-fugly-assign} specifies that the
566 same memory locations are to be used to hold the
567 values assigned by both statements @samp{I = 3} and
568 @samp{ASSIGN 10 TO I}, for example.
569 (Normally, @code{g77} uses a separate memory location
570 to hold assigned statement labels.)
571
572 @item
573 @code{FORMAT} and @code{ENTRY} statements now are allowed to
574 precede @code{IMPLICIT NONE} statements.
575
576 @item
577 Produce diagnostic for unsupported @code{SELECT CASE} on
578 @code{CHARACTER} type, instead of crashing, at compile time.
579
580 @item
581 Fix crashes involving diagnosed or invalid code.
582
583 @item
584 Change approach to building @code{libf2c} archive
585 (@file{libf2c.a}) so that members are added to it
586 only when truly necessary, so the user that installs
587 an already-built @code{g77} doesn't need to have write
588 access to the build tree (whereas the user doing the
589 build might not have access to install new software
590 on the system).
591
592 @item
593 Support @code{gcc} version 2.7.2.2
594 (modified by @code{g77} into version 2.7.2.2.f.2),
595 and remove
596 support for prior versions of @code{gcc}.
597
598 @item
599 Upgrade to @code{libf2c} as of 1997-02-08, and
600 fix up some of the build procedures.
601
602 @item
603 Improve general build procedures for @code{g77},
604 fixing minor bugs (such as deletion of any file
605 named @file{f771} in the parent directory of @code{gcc/}).
606
607 @item
608 Enable full support of @code{INTEGER*8} available in
609 @code{libf2c} and @file{f2c.h} so that @code{f2c} users
610 may make full use of its features via the @code{g77}
611 version of @file{f2c.h} and the @code{INTEGER*8}
612 support routines in the @code{g77} version of @code{libf2c}.
613
614 @item
615 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
616 yields version information on the library.
617
618 @item
619 The @code{SNGL} and @code{FLOAT} intrinsics now are
620 specific intrinsics, instead of synonyms for the
621 generic intrinsic @code{REAL}.
622
623 @item
624 New intrinsics have been added.
625 These are @code{REALPART}, @code{IMAGPART},
626 @code{COMPLEX},
627 @code{LONG}, and @code{SHORT}.
628
629 @item
630 A new group of intrinsics, @samp{gnu}, has been added
631 to contain the new @code{REALPART}, @code{IMAGPART},
632 and @code{COMPLEX} intrinsics.
633 An old group, @samp{dcp}, has been removed.
634
635 @item
636 Complain about industry-wide ambiguous references
637 @samp{REAL(@var{expr})} and @samp{AIMAG(@var{expr})},
638 where @var{expr} is @code{DOUBLE COMPLEX} (or any
639 complex type other than @code{COMPLEX}), unless
640 @samp{-ff90} option specifies Fortran 90 interpretation
641 or new @samp{-fugly-complex} option, in conjunction with
642 @samp{-fnot-f90}, specifies @code{f2c} interpretation.
643
644 @item
645 Make improvements to diagnostics.
646
647 @item
648 Speed up compiler a bit.
649
650 @item
651 Improvements to documentation and indexing, including
652 a new chapter containing information on one, later
653 more, diagnostics that users are directed to pull
654 up automatically via a message in the diagnostic itself.
655
656 (Hence the menu item @samp{M} for the node
657 @samp{Diagnostics} in the top-level menu of
658 the Info documentation.)
659 @end itemize
660
661 @heading In 0.5.19.1:
662 @itemize @bullet
663 @item
664 Code-generation bugs afflicting operations on complex
665 data have been fixed.
666
667 These bugs occurred when assigning the result of an
668 operation to a complex variable (or array element)
669 that also served as an input to that operation.
670
671 The operations affected by this bug were: @samp{CONJG()},
672 @samp{DCONJG()}, @samp{CCOS()}, @samp{CDCOS()},
673 @samp{CLOG()}, @samp{CDLOG()}, @samp{CSIN()}, @samp{CDSIN()},
674 @samp{CSQRT()}, @samp{CDSQRT()}, complex division, and
675 raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
676 power.
677 (The related generic and @samp{Z}-prefixed intrinsics,
678 such as @samp{ZSIN()}, also were affected.)
679
680 For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
681 (where @samp{C} is @code{COMPLEX} and @samp{Z} is
682 @code{DOUBLE COMPLEX}) have been fixed.
683 @end itemize
684
685 @heading In 0.5.19:
686 @itemize @bullet
687 @item
688 Fix @code{FORMAT} statement parsing so negative values for
689 specifiers such as @samp{P} (e.g. @samp{FORMAT(-1PF8.1)})
690 are correctly processed as negative.
691
692 @item
693 Fix @code{SIGNAL} intrinsic so it once again accepts a
694 procedure as its second argument.
695
696 @item
697 A temporary kludge option provides bare-bones information on
698 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
699
700 @item
701 New @samp{-fonetrip} option specifies FORTRAN-66-style
702 one-trip @code{DO} loops.
703
704 @item
705 New @samp{-fno-silent} option causes names of program units
706 to be printed as they are compiled, in a fashion similar to
707 UNIX @code{f77} and @code{f2c}.
708
709 @item
710 New @samp{-fugly-assumed} option specifies that arrays
711 dimensioned via @samp{DIMENSION X(1)}, for example, are to be
712 treated as assumed-size.
713
714 @item
715 New @samp{-fno-typeless-boz} option specifies that non-decimal-radix
716 constants using the prefixed-radix form (such as @samp{Z'1234'})
717 are to be interpreted as @code{INTEGER} constants.
718
719 @item
720 New @samp{-ff66} option is a ``shorthand'' option that specifies
721 behaviors considered appropriate for FORTRAN 66 programs.
722
723 @item
724 New @samp{-ff77} option is a ``shorthand'' option that specifies
725 behaviors considered appropriate for UNIX @code{f77} programs.
726
727 @item
728 New @samp{-fugly-comma} and @samp{-fugly-logint} options provided
729 to perform some of what @samp{-fugly} used to do.
730 @samp{-fugly} and @samp{-fno-ugly} are now ``shorthand'' options,
731 in that they do nothing more than enable (or disable) other
732 @samp{-fugly-*} options.
733
734 @item
735 Fix parsing of assignment statements involving targets that
736 are substrings of elements of @code{CHARACTER} arrays having
737 names such as @samp{READ}, @samp{WRITE}, @samp{GOTO}, and
738 @samp{REALFUNCTIONFOO}.
739
740 @item
741 Fix crashes involving diagnosed code.
742
743 @item
744 Fix handling of local @code{EQUIVALENCE} areas so certain cases
745 of valid Fortran programs are not misdiagnosed as improperly
746 extending the area backwards.
747
748 @item
749 Support @code{gcc} version 2.7.2.1.
750
751 @item
752 Upgrade to @code{libf2c} as of 1996-09-26, and
753 fix up some of the build procedures.
754
755 @item
756 Change code generation for list-directed I/O so it allows
757 for new versions of @code{libf2c} that might return non-zero
758 status codes for some operations previously assumed to always
759 return zero.
760
761 This change not only affects how @code{IOSTAT=} variables
762 are set by list-directed I/O, it also affects whether
763 @code{END=} and @code{ERR=} labels are reached by these
764 operations.
765
766 @item
767 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
768 procedures in @code{libf2c}.
769
770 @item
771 Modify @code{fseek_()} in @code{libf2c} to be more portable
772 (though, in practice, there might be no systems where this
773 matters) and to catch invalid @samp{whence} arguments.
774
775 @item
776 Some useless warnings from the @samp{-Wunused} option have
777 been eliminated.
778
779 @item
780 Fix a problem building the @file{f771} executable
781 on AIX systems by linking with the @samp{-bbigtoc} option.
782
783 @item
784 Abort configuration if @code{gcc} has not been patched
785 using the patch file provided in the @samp{gcc/f/gbe/}
786 subdirectory.
787
788 @item
789 Add options @samp{--help} and @samp{--version} to the
790 @code{g77} command, to conform to GNU coding guidelines.
791 Also add printing of @code{g77} version number when
792 the @samp{--verbose} (@samp{-v}) option is used.
793
794 @item
795 Change internally generated name for local @code{EQUIVALENCE}
796 areas to one based on the alphabetically sorted first name
797 in the list of names for entities placed at the beginning
798 of the areas.
799
800 @item
801 Improvements to documentation and indexing.
802 @end itemize
803
804 @heading In 0.5.18:
805 @itemize @bullet
806 @item
807 Add some rudimentary support for @code{INTEGER*1},
808 @code{INTEGER*2}, @code{INTEGER*8},
809 and their @code{LOGICAL} equivalents.
810 (This support works on most, maybe all, @code{gcc} targets.)
811
812 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
813 for providing the patch for this!
814
815 Among the missing elements from the support for these
816 features are full intrinsic support and constants.
817
818 @item
819 Add some rudimentary support for the @code{BYTE} and
820 @code{WORD} type-declaration statements.
821 @code{BYTE} corresponds to @code{INTEGER*1},
822 while @code{WORD} corresponds to @code{INTEGER*2}.
823
824 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
825 for providing the patch for this!
826
827 @item
828 The compiler code handling intrinsics has been largely
829 rewritten to accommodate the new types.
830 No new intrinsics or arguments for existing
831 intrinsics have been added, so there is, at this
832 point, no intrinsic to convert to @code{INTEGER*8},
833 for example.
834
835 @item
836 Support automatic arrays in procedures.
837
838 @item
839 Reduce space/time requirements for handling large
840 @emph{sparsely} initialized aggregate arrays.
841 This improvement applies to only a subset of
842 the general problem to be addressed in 0.6.
843
844 @item
845 Treat initial values of zero as if they weren't
846 specified (in DATA and type-declaration statements).
847 The initial values will be set to zero anyway, but the amount
848 of compile time processing them will be reduced,
849 in some cases significantly (though, again, this
850 is only a subset of the general problem to be
851 addressed in 0.6).
852
853 A new option, @samp{-fzeros}, is introduced to
854 enable the traditional treatment of zeros as any
855 other value.
856
857 @item
858 With @samp{-ff90} in force, @code{g77} incorrectly
859 interpreted @samp{REAL(Z)} as returning a @code{REAL}
860 result, instead of as a @code{DOUBLE PRECISION}
861 result.
862 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
863
864 With @samp{-fno-f90} in force, the interpretation remains
865 unchanged, since this appears to be how at least some
866 F77 code using the @code{DOUBLE COMPLEX} extension expected
867 it to work.
868
869 Essentially, @samp{REAL(Z)} in F90 is the same as
870 @samp{DBLE(Z)}, while in extended F77, it appears to
871 be the same as @samp{REAL(REAL(Z))}.
872
873 @item
874 An expression involving exponentiation, where both operands
875 were type @code{INTEGER} and the right-hand operand
876 was negative, was erroneously evaluated.
877
878 @item
879 Fix bugs involving @code{DATA} implied-@code{DO} constructs
880 (these involved an errant diagnostic and a crash, both on good
881 code, one involving subsequent statement-function definition).
882
883 @item
884 Close @code{INCLUDE} files after processing them, so compiling source
885 files with lots of @code{INCLUDE} statements does not result in
886 being unable to open @code{INCLUDE} files after all the available
887 file descriptors are used up.
888
889 @item
890 Speed up compiling, especially of larger programs, and perhaps
891 slightly reduce memory utilization while compiling (this is
892 @emph{not} the improvement planned for 0.6 involving large aggregate
893 areas)---these improvements result from simply turning
894 off some low-level code to do self-checking that hasn't been
895 triggered in a long time.
896
897 @item
898 Introduce three new options that
899 implement optimizations in the @code{gcc} back end (GBE).
900 These options are @samp{-fmove-all-movables}, @samp{-freduce-all-givs},
901 and @samp{-frerun-loop-opt}, which are enabled, by default,
902 for Fortran compilations.
903 These optimizations are intended to help toon Fortran programs.
904
905 @item
906 Patch the GBE to do a better job optimizing certain
907 kinds of references to array elements.
908
909 @item
910 Due to patches to the GBE, the version number of @code{gcc}
911 also is patched to make it easier to manage installations,
912 especially useful if it turns out a @code{g77} change to the
913 GBE has a bug.
914
915 The @code{g77}-modified version number is the @code{gcc}
916 version number with the string @samp{.f.@var{n}} appended,
917 where @samp{f} identifies the version as enhanced for
918 Fortran, and @var{n} is @samp{1} for the first Fortran
919 patch for that version of @code{gcc}, @samp{2} for the
920 second, and so on.
921
922 So, this introduces version 2.7.2.f.1 of @code{gcc}.
923
924 @item
925 Make several improvements and fixes to diagnostics, including
926 the removal of two that were inappropriate or inadequate.
927
928 @item
929 Warning about two successive arithmetic operators, produced
930 by @samp{-Wsurprising}, now produced @emph{only} when both
931 operators are, indeed, arithmetic (not relational/boolean).
932
933 @item
934 @samp{-Wsurprising} now warns about the remaining cases
935 of using non-integral variables for implied-@code{DO}
936 loops, instead of these being rejected unless @samp{-fpedantic}
937 or @samp{-fugly} specified.
938
939 @item
940 Allow @code{SAVE} of a local variable or array, even after
941 it has been given an initial value via @code{DATA}, for example.
942
943 @item
944 Introduce an Info version of @code{g77} documentation, which
945 supercedes @file{gcc/f/CREDITS}, @file{gcc/f/DOC}, and
946 @file{gcc/f/PROJECTS}.
947 These files will be removed in a future release.
948 The files @file{gcc/f/BUGS}, @file{gcc/f/INSTALL}, and
949 @file{gcc/f/NEWS} now are automatically built from
950 the texinfo source when distributions are made.
951
952 This effort was inspired by a first pass at translating
953 @file{g77-0.5.16/f/DOC} that was contributed to Craig by
954 David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
955
956 @item
957 New @samp{-fno-second-underscore} option to specify
958 that, when @samp{-funderscoring} is in effect, a second
959 underscore is not to be appended to Fortran names already
960 containing an underscore.
961
962 @item
963 Change the way iterative @code{DO} loops work to follow
964 the F90 standard.
965 In particular, calculation of the iteration count is
966 still done by converting the start, end, and increment
967 parameters to the type of the @code{DO} variable, but
968 the result of the calculation is always converted to
969 the default @code{INTEGER} type.
970
971 (This should have no effect on existing code compiled
972 by @code{g77}, but code written to assume that use
973 of a @emph{wider} type for the @code{DO} variable
974 will result in an iteration count being fully calculated
975 using that wider type (wider
976 than default @code{INTEGER}) must be rewritten.)
977
978 @item
979 Support @code{gcc} version 2.7.2.
980
981 @item
982 Upgrade to @code{libf2c} as of 1996-03-23, and
983 fix up some of the build procedures.
984
985 Note that the email addresses related to @code{f2c}
986 have changed---the distribution site now is
987 named @code{netlib.bell-labs.com}, and the
988 maintainer's new address is @email{dmg@@bell-labs.com}.
989 @end itemize
990
991 @heading In 0.5.17:
992 @itemize @bullet
993 @item
994 @strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
995 system's @file{/dev/null} special file if run by user @samp{root}.
996
997 @strong{All users} of version 0.5.16 should ensure that
998 they have not removed @file{/dev/null} or replaced it with an ordinary
999 file (e.g. by comparing the output of @samp{ls -l /dev/null} with
1000 @samp{ls -l /dev/zero}.
1001 If the output isn't basically the
1002 same, contact your system
1003 administrator about restoring @file{/dev/null} to its proper status).
1004
1005 This bug is particularly insidious because removing @file{/dev/null} as
1006 a special file can go undetected for quite a while, aside from
1007 various applications and programs exhibiting sudden, strange
1008 behaviors.
1009
1010 I sincerely apologize for not realizing the
1011 implications of the fact that when @samp{g77 -v} runs the @code{ld} command
1012 with @samp{-o /dev/null} that @code{ld} tries to @emph{remove} the executable
1013 it is supposed to build (especially if it reports unresolved
1014 references, which it should in this case)!
1015
1016 @item
1017 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
1018
1019 @item
1020 Fix crash that can occur when diagnostics given outside of any
1021 program unit (such as when input file contains @samp{@@foo}).
1022
1023 @item
1024 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
1025
1026 @item
1027 Fix @code{ASSIGN}'ed variables so they can be @code{SAVE}'d or dummy arguments,
1028 and issue clearer error message in cases where target of @code{ASSIGN}
1029 or @code{ASSIGN}ed @code{GOTO}/@code{FORMAT} is too small (which should
1030 never happen).
1031
1032 @item
1033 Make @code{libf2c} build procedures work on more systems again by
1034 eliminating unnecessary invocations of @samp{ld -r -x} and @samp{mv}.
1035
1036 @item
1037 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
1038 options to compiler.
1039
1040 @item
1041 Fix failure to always diagnose missing type declaration for
1042 @code{IMPLICIT NONE}.
1043
1044 @item
1045 Fix compile-time performance problem (which could sometimes
1046 crash the compiler, cause a hang, or whatever, due to a bug
1047 in the back end) involving exponentiation with a large @code{INTEGER}
1048 constant for the right-hand operator (e.g. @samp{I**32767}).
1049
1050 @item
1051 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
1052 utility in particular) is properly built using the host compiler.
1053
1054 @item
1055 Add new @samp{-Wsurprising} option to warn about constructs that are
1056 interpreted by the Fortran standard (and @code{g77}) in ways that
1057 are surprising to many programmers.
1058
1059 @item
1060 Add @code{ERF()} and @code{ERFC()} as generic intrinsics mapping to existing
1061 @code{ERF}/@code{DERF} and @code{ERFC}/@code{DERFC} specific intrinsics.
1062
1063 @emph{Note:} You should
1064 specify @samp{INTRINSIC ERF,ERFC} in any code where you might use
1065 these as generic intrinsics, to improve likelihood of diagnostics
1066 (instead of subtle run-time bugs) when using a compiler that
1067 doesn't support these as intrinsics (e.g. @code{f2c}).
1068
1069 @item
1070 Remove from @samp{-fno-pedantic} the diagnostic about @code{DO}
1071 with non-@code{INTEGER} index variable; issue that under
1072 @samp{-Wsurprising} instead.
1073
1074 @item
1075 Clarify some diagnostics that say things like ``ignored'' when that's
1076 misleading.
1077
1078 @item
1079 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
1080 operands.
1081
1082 @item
1083 Minor improvements to code generation for various operations on
1084 @code{LOGICAL} operands.
1085
1086 @item
1087 Minor improvement to code generation for some @code{DO} loops on some
1088 machines.
1089
1090 @item
1091 Support @code{gcc} version 2.7.1.
1092
1093 @item
1094 Upgrade to @code{libf2c} as of 1995-11-15.
1095 @end itemize
1096
1097 @heading In 0.5.16:
1098 @itemize @bullet
1099 @item
1100 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
1101 not involving @code{COMMON}.
1102
1103 @item
1104 Fix code-generation bugs involving invoking ``gratis'' library procedures
1105 in @code{libf2c} from code compiled with @samp{-fno-f2c} by making these
1106 procedures known to @code{g77} as intrinsics (not affected by -fno-f2c).
1107 This is known to fix code invoking @code{ERF()}, @code{ERFC()},
1108 @code{DERF()}, and @code{DERFC()}.
1109
1110 @item
1111 Update @code{libf2c} to include netlib patches through 1995-08-16, and
1112 @code{#define} @samp{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
1113 consistent with other Fortran implementations by outputting
1114 leading zeros in formatted and list-directed output.
1115
1116 @item
1117 Fix a code-generation bug involving adjustable dummy arrays with high
1118 bounds whose primaries are changed during procedure execution, and
1119 which might well improve code-generation performance for such arrays
1120 compared to @code{f2c} plus @code{gcc} (but apparently only when using
1121 @file{gcc-2.7.0} or later).
1122
1123 @item
1124 Fix a code-generation bug involving invocation of @code{COMPLEX} and
1125 @code{DOUBLE COMPLEX} @code{FUNCTION}s and doing @code{COMPLEX} and
1126 @code{DOUBLE COMPLEX} divides, when the result
1127 of the invocation or divide is assigned directly to a variable
1128 that overlaps one or more of the arguments to the invocation or divide.
1129
1130 @item
1131 Fix crash by not generating new optimal code for @samp{X**I} if @samp{I} is
1132 nonconstant and the expression is used to dimension a dummy
1133 array, since the @code{gcc} back end does not support the necessary
1134 mechanics (and the @code{gcc} front end rejects the equivalent
1135 construct, as it turns out).
1136
1137 @item
1138 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
1139
1140 @item
1141 Fix crash on expressions like @samp{(1D0,2D0)**2}, i.e. raising a
1142 @code{DOUBLE COMPLEX} constant to an @code{INTEGER} constant power.
1143
1144 @item
1145 Fix crashes and such involving diagnosed code.
1146
1147 @item
1148 Diagnose, instead of crashing on, statement function definitions
1149 having duplicate dummy argument names.
1150
1151 @item
1152 Fix bug causing rejection of good code involving statement function
1153 definitions.
1154
1155 @item
1156 Fix bug resulting in debugger not knowing size of local equivalence
1157 area when any member of area has initial value (via @code{DATA},
1158 for example).
1159
1160 @item
1161 Fix installation bug that prevented installation of @code{g77} driver.
1162 Provide for easy selection of whether to install copy of @code{g77}
1163 as @code{f77} to replace the broken code.
1164
1165 @item
1166 Fix @code{gcc} driver (affects @code{g77} thereby) to not
1167 gratuitously invoke the
1168 @code{f771} program (e.g. when @samp{-E} is specified).
1169
1170 @item
1171 Fix diagnostic to point to correct source line when it immediately
1172 follows an @code{INCLUDE} statement.
1173
1174 @item
1175 Support more compiler options in @code{gcc}/@code{g77} when
1176 compiling Fortran files.
1177 These options include @samp{-p}, @samp{-pg}, @samp{-aux-info}, @samp{-P},
1178 correct setting of version-number macros for preprocessing, full
1179 recognition of @samp{-O0}, and
1180 automatic insertion of configuration-specific linker specs.
1181
1182 @item
1183 Add new intrinsics that interface to existing routines in @code{libf2c}:
1184 @code{ABORT}, @code{DERF}, @code{DERFC}, @code{ERF}, @code{ERFC}, @code{EXIT},
1185 @code{FLUSH}, @code{GETARG}, @code{GETENV}, @code{IARGC},
1186 @code{SIGNAL}, and @code{SYSTEM}.
1187 Note that @code{ABORT}, @code{EXIT}, @code{FLUSH}, @code{SIGNAL}, and
1188 @code{SYSTEM} are intrinsic subroutines, not functions (since they
1189 have side effects), so to get the return values from @code{SIGNAL}
1190 and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
1191 variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
1192
1193 @item
1194 Add new intrinsic group named @samp{unix} to contain the new intrinsics,
1195 and by default enable this new group.
1196
1197 @item
1198 Move @code{LOC()} intrinsic out of the @samp{vxt} group to the new
1199 @samp{unix} group.
1200
1201 @item
1202 Improve @code{g77} so that @samp{g77 -v} by itself (or with
1203 certain other options, including @samp{-B}, @samp{-b}, @samp{-i},
1204 @samp{-nostdlib}, and @samp{-V}) reports lots more useful
1205 version info, and so that long-form options @code{gcc} accepts are
1206 understood by @code{g77} as well (even in truncated, unambiguous forms).
1207
1208 @item
1209 Add new @code{g77} option @samp{--driver=name} to specify driver when
1210 default, @code{gcc}, isn't appropriate.
1211
1212 @item
1213 Add support for @samp{#} directives (as output by the preprocessor) in the
1214 compiler, and enable generation of those directives by the
1215 preprocessor (when compiling @samp{.F} files) so diagnostics and debugging
1216 info are more useful to users of the preprocessor.
1217
1218 @item
1219 Produce better diagnostics, more like @code{gcc}, with info such as
1220 @samp{In function `foo':} and @samp{In file included from...:}.
1221
1222 @item
1223 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
1224
1225 @item
1226 When @samp{-Wunused} in effect, don't warn about local variables used as
1227 statement-function dummy arguments or @code{DATA} implied-@code{DO} iteration
1228 variables, even though, strictly speaking, these are not uses
1229 of the variables themselves.
1230
1231 @item
1232 When @samp{-W -Wunused} in effect, don't warn about unused dummy arguments
1233 at all, since there's no way to turn this off for individual
1234 cases (@code{g77} might someday start warning about these)---applies
1235 to @code{gcc} versions 2.7.0 and later, since earlier versions didn't
1236 warn about unused dummy arguments.
1237
1238 @item
1239 New option @samp{-fno-underscoring} that inhibits transformation of names
1240 (by appending one or two underscores) so users may experiment
1241 with implications of such an environment.
1242
1243 @item
1244 Minor improvement to @file{gcc/f/info} module to make it easier to build
1245 @code{g77} using the native (non-@code{gcc}) compiler on certain machines
1246 (but definitely not all machines nor all non-@code{gcc} compilers).
1247 Please
1248 do not report bugs showing problems compilers have with
1249 macros defined in @file{gcc/f/target.h} and used in places like
1250 @file{gcc/f/expr.c}.
1251
1252 @item
1253 Add warning to be printed for each invocation of the compiler
1254 if the target machine @code{INTEGER}, @code{REAL}, or @code{LOGICAL} size
1255 is not 32 bits,
1256 since @code{g77} is known to not work well for such cases (to be
1257 fixed in Version 0.6---@pxref{Actual Bugs,,Actual Bugs We Haven't Fixed Yet}).
1258
1259 @item
1260 Lots of new documentation (though work is still needed to put it into
1261 canonical GNU format).
1262
1263 @item
1264 Build @code{libf2c} with @samp{-g0}, not @samp{-g2}, in effect
1265 (by default), to produce
1266 smaller library without lots of debugging clutter.
1267 @end itemize
1268
1269 @heading In 0.5.15:
1270 @itemize @bullet
1271 @item
1272 Fix bad code generation involving @samp{X**I} and temporary, internal variables
1273 generated by @code{g77} and the back end (such as for @code{DO} loops).
1274
1275 @item
1276 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
1277
1278 @item
1279 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
1280
1281 @item
1282 Fix crash or other erratic behavior when null character constant
1283 (@samp{''}) is encountered.
1284
1285 @item
1286 Fix crash or other erratic behavior involving diagnosed code.
1287
1288 @item
1289 Fix code generation for external functions returning type @code{REAL} when
1290 the @samp{-ff2c} option is in force (which it is by default) so that
1291 @code{f2c} compatibility is indeed provided.
1292
1293 @item
1294 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
1295 with an array declarator.
1296
1297 @item
1298 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
1299 maximum length
1300 of a typical fixed-form line, defaulting to 72 columns, such
1301 that characters beyond column @var{n} are ignored, or @var{n} is @samp{none},
1302 meaning no characters are ignored.
1303 does not affect lines
1304 with @samp{&} in column 1, which are always processed as if
1305 @samp{-ffixed-line-length-none} was in effect.
1306
1307 @item
1308 No longer generate better code for some kinds of array references,
1309 as @code{gcc} back end is to be fixed to do this even better, and it
1310 turned out to slow down some code in some cases after all.
1311
1312 @item
1313 In @code{COMMON} and @code{EQUIVALENCE} areas with any members given initial
1314 values (e.g. via @code{DATA}), uninitialized members now always
1315 initialized to binary zeros (though this is not required by
1316 the standard, and might not be done in future versions
1317 of @code{g77}).
1318 Previously, in some @code{COMMON}/@code{EQUIVALENCE} areas
1319 (essentially those with members of more than one type), the
1320 uninitialized members were initialized to spaces, to
1321 cater to @code{CHARACTER} types, but it seems no existing code expects
1322 that, while much existing code expects binary zeros.
1323 @end itemize
1324
1325 @heading In 0.5.14:
1326 @itemize @bullet
1327 @item
1328 Don't emit bad code when low bound of adjustable array is nonconstant
1329 and thus might vary as an expression at run time.
1330
1331 @item
1332 Emit correct code for calculation of number of trips in @code{DO} loops
1333 for cases
1334 where the loop should not execute at all.
1335 (This bug affected cases
1336 where the difference between the begin and end values was less
1337 than the step count, though probably not for floating-point cases.)
1338
1339 @item
1340 Fix crash when extra parentheses surround item in
1341 @code{DATA} implied-@code{DO} list.
1342
1343 @item
1344 Fix crash over minor internal inconsistencies in handling diagnostics,
1345 just substitute dummy strings where necessary.
1346
1347 @item
1348 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
1349
1350 @item
1351 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
1352 is a string of one or more digits.
1353
1354 @item
1355 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
1356
1357 @item
1358 Fix various crashes involving code with diagnosed errors.
1359
1360 @item
1361 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
1362 @file{header.gcc} facility for handling systems like MS-DOS.
1363
1364 @item
1365 Allow @code{INCLUDE} statement to be continued across multiple lines,
1366 even allow it to coexist with other statements on the same line.
1367
1368 @item
1369 Incorporate Bellcore fixes to @code{libf2c} through 1995-03-15---this
1370 fixes a bug involving infinite loops reading EOF with empty list-directed
1371 I/O list.
1372
1373 @item
1374 Remove all the @code{g77}-specific auto-configuration scripts, code,
1375 and so on,
1376 except for temporary substitutes for bsearch() and strtoul(), as
1377 too many configure/build problems were reported in these areas.
1378 People will have to fix their systems' problems themselves, or at
1379 least somewhere other than @code{g77}, which expects a working ANSI C
1380 environment (and, for now, a GNU C compiler to compile @code{g77} itself).
1381
1382 @item
1383 Complain if initialized common redeclared as larger in subsequent program
1384 unit.
1385
1386 @item
1387 Warn if blank common initialized, since its size can vary and hence
1388 related warnings that might be helpful won't be seen.
1389
1390 @item
1391 New @samp{-fbackslash} option, on by default, that causes @samp{\}
1392 within @code{CHARACTER}
1393 and Hollerith constants to be interpreted a la GNU C.
1394 Note that
1395 this behavior is somewhat different from @code{f2c}'s, which supports only
1396 a limited subset of backslash (escape) sequences.
1397
1398 @item
1399 Make @samp{-fugly-args} the default.
1400
1401 @item
1402 New @samp{-fugly-init} option, on by default, that allows typeless/Hollerith
1403 to be specified as initial values for variables or named constants
1404 (@code{PARAMETER}), and also allows character<->numeric conversion in
1405 those contexts---turn off via @samp{-fno-ugly-init}.
1406
1407 @item
1408 New @samp{-finit-local-zero} option to initialize
1409 local variables to binary zeros.
1410 This does not affect whether they are @code{SAVE}d, i.e. made
1411 automatic or static.
1412
1413 @item
1414 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
1415 and functions.
1416 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
1417
1418 @item
1419 @samp{-Wall} now implies @samp{-Wuninitialized} as with @code{gcc}
1420 (i.e. unless @samp{-O} not specified, since @samp{-Wuninitialized}
1421 requires @samp{-O}), and implies @samp{-Wunused} as well.
1422
1423 @item
1424 @samp{-Wunused} no longer gives spurious messages for unused
1425 @code{EXTERNAL} names (since they are assumed to refer to block data
1426 program units, to make use of libraries more reliable).
1427
1428 @item
1429 Support @code{%LOC()} and @code{LOC()} of character arguments.
1430
1431 @item
1432 Support null (zero-length) character constants and expressions.
1433
1434 @item
1435 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
1436
1437 @item
1438 Support @code{ICHAR()}, @code{IACHAR()}, and @code{LEN()} of
1439 character expressions that are valid in assignments but
1440 not normally as actual arguments.
1441
1442 @item
1443 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
1444
1445 @item
1446 Allow @code{NAMELIST}, @code{EXTERNAL}, @code{INTRINSIC}, and @code{VOLATILE}
1447 in @code{BLOCK DATA}, even though these are not allowed by the standard.
1448
1449 @item
1450 Allow @code{RETURN} in main program unit.
1451
1452 @item
1453 Changes to Hollerith-constant support to obey Appendix C of the
1454 standard:
1455
1456 @itemize --
1457 @item
1458 Now padded on the right with zeros, not spaces.
1459
1460 @item
1461 Hollerith ``format specifications'' in the form of arrays of
1462 non-character allowed.
1463
1464 @item
1465 Warnings issued when non-space truncation occurs when converting
1466 to another type.
1467
1468 @item
1469 When specified as actual argument, now passed
1470 by reference to @code{INTEGER} (padded on right with spaces if constant
1471 too small, otherwise fully intact if constant wider the @code{INTEGER}
1472 type) instead of by value.
1473 @end itemize
1474
1475 @strong{Warning:} @code{f2c} differs on the
1476 interpretation of @samp{CALL FOO(1HX)}, which it treats exactly the
1477 same as @samp{CALL FOO('X')}, but which the standard and @code{g77} treat
1478 as @samp{CALL FOO(%REF('X   '))} (padded with as many spaces as necessary
1479 to widen to @code{INTEGER}), essentially.
1480
1481 @item
1482 Changes and fixes to typeless-constant support:
1483
1484 @itemize --
1485 @item
1486 Now treated as a typeless double-length @code{INTEGER} value.
1487
1488 @item
1489 Warnings issued when overflow occurs.
1490
1491 @item
1492 Padded on the left with zeros when converting
1493 to a larger type.
1494
1495 @item
1496 Should be properly aligned and ordered on
1497 the target machine for whatever type it is turned into.
1498
1499 @item
1500 When specified as actual argument, now passed as reference to
1501 a default @code{INTEGER} constant.
1502 @end itemize
1503
1504 @item
1505 @code{%DESCR()} of a non-@code{CHARACTER} expression now passes a pointer to
1506 the expression plus a length for the expression just as if
1507 it were a @code{CHARACTER} expression.
1508 For example, @samp{CALL FOO(%DESCR(D))}, where
1509 @samp{D} is @code{REAL*8}, is the same as @samp{CALL FOO(D,%VAL(8)))}.
1510
1511 @item
1512 Name of multi-entrypoint master function changed to incorporate
1513 the name of the primary entry point instead of a decimal
1514 value, so the name of the master function for @samp{SUBROUTINE X}
1515 with alternate entry points is now @samp{__g77_masterfun_x}.
1516
1517 @item
1518 Remove redundant message about zero-step-count @code{DO} loops.
1519
1520 @item
1521 Clean up diagnostic messages, shortening many of them.
1522
1523 @item
1524 Fix typo in @code{g77} man page.
1525
1526 @item
1527 Clarify implications of constant-handling bugs in @file{f/BUGS}.
1528
1529 @item
1530 Generate better code for @samp{**} operator with a right-hand operand of
1531 type @code{INTEGER}.
1532
1533 @item
1534 Generate better code for @code{SQRT()} and @code{DSQRT()},
1535 also when @samp{-ffast-math}
1536 specified, enable better code generation for @code{SIN()} and @code{COS()}.
1537
1538 @item
1539 Generate better code for some kinds of array references.
1540
1541 @item
1542 Speed up lexing somewhat (this makes the compilation phase noticeably
1543 faster).
1544 @end itemize