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