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.
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.
12 @chapter News About GNU Fortran
14 @cindex versions, recent
15 @cindex recent versions
17 Changes made to recent versions of GNU Fortran are listed
18 below, with the most recent version first.
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.
30 Fix @code{SIGNAL} intrinsic so it offers portable
31 support for 64-bit systems (such as Digital Alphas
35 Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a
36 compile-time constant @code{INTEGER} expression.
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.
45 Fix a compiler crash involving optimization of
46 certain complicated expressions involving @code{COMPLEX}
47 arithmetic (especially multiplication).
50 Fix an internal error compiling the @code{Cpu_Time} intrinsic.
53 Rename the @code{gcc} keyword @code{restrict} to
54 @code{__restrict__}, to avoid rejecting valid, existing,
56 Support for @code{restrict} is now more like support
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.
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.
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.)
78 Upgrade to @code{libf2c} as of 1997-09-23.
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++,
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}
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++,
110 Fix a compiler crash that occurred in some cases
111 of procedure inlining.
112 (Such cases became more frequent in 0.5.20.)
115 Fix a compiler crash resulting from using @code{DATA}
116 or similar to initialize a @code{COMPLEX} variable or
120 Fix compiler crashes involving use of @code{AND}, @code{OR},
121 or @code{XOR} intrinsics.
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.
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
134 Such dual use of a name in a program is allowed by
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
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.
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.
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}.
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}.
163 Place automatic arrays on the stack, even if
164 @code{SAVE} or the @samp{-fno-automatic} option
166 This avoids a compiler crash in some cases.
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}).
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.
181 The default is to issue such warnings, which are
182 new as of this version of @code{g77}.
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.
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.
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.
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
206 This avoids a compiler crash.
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.
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.
222 Fix a couple of profiling-related bugs in @code{gcc}
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.
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}
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.
246 Fix @code{CHMOD} intrinsic to work with file names
247 that have embedded blanks, commas, and so on.
250 Fix @code{SIGNAL} intrinsic so it accepts an
251 optional third @samp{Status} argument.
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.
260 Make many changes to @code{libU77} intrinsics to
261 support existing code more directly.
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}.
272 Improve @code{libU77} so it is more portable.
275 Add options @samp{-fbadu77-intrinsics-delete},
276 @samp{-fbadu77-intrinsics-hide}, and so on.
279 Fix crashes involving diagnosed or invalid code.
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.
289 Make some fixes to alias analysis code.
292 Add support for @code{restrict} keyword in @code{gcc}
296 Support @code{gcc} version 2.7.2.3
297 (modified by @code{g77} into version 2.7.2.3.f.1),
299 support for prior versions of @code{gcc}.
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.
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.
316 Add @code{INT2} and @code{INT8} intrinsics.
319 Add @code{CPU_TIME} intrinsic.
322 Add @code{ALARM} intrinsic.
325 @code{CTIME} intrinsic now accepts any @code{INTEGER}
326 argument, not just @code{INTEGER(KIND=2)}.
329 Warn when explicit type declaration disagrees with
330 the type of an intrinsic invocation.
333 Support @samp{*f771} entry in @code{gcc} @file{specs} file.
336 Fix typo in @code{make} rule @samp{g77-cross}, used only for
340 Fix @code{libf2c} build procedure to re-archive library
341 if previous attempt to archive was interrupted.
344 Change @code{gcc} to unroll loops only during the last
345 invocation (of as many as two invocations) of loop
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.
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.
363 Upgrade to @code{libf2c} as of 1997-08-16.
366 Modify @code{libf2c} to consistently and clearly diagnose
367 recursive I/O (at run time).
370 @code{g77} driver now prints version information (such as produced
371 by @kbd{g77 -v}) to @code{stderr} instead of @code{stdout}.
374 The @samp{.r} suffix now designates a Ratfor source file,
375 to be preprocessed via the @code{ratfor} command, available
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
388 Improve documentation and indexing.
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}.
397 Reserve @code{INTEGER(KIND=0)} for future use.
403 The @samp{-fno-typeless-boz} option is now the default.
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.
411 (Version 0.5.19 introduced @samp{-fno-typeless-boz} and
415 Options @samp{-ff90-intrinsics-enable} and
416 @samp{-fvxt-intrinsics-enable} now are the
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.
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.
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}.
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
446 New option @samp{-fvxt} specifies that the
447 source file is written in VXT Fortran, instead of GNU Fortran.
450 The @samp{-fvxt-not-f90} option has been deleted,
451 along with its inverse, @samp{-ff90-not-vxt}.
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}.
459 The @samp{-fugly} option now issues a warning, as it
460 likely will be removed in a future version.
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.)
469 The @samp{-fugly-assumed} option, introduced in
470 version 0.5.19, has been changed to
471 better accommodate old and new code.
474 Make a number of fixes to the @code{g77} front end and
475 the @code{gcc} back end to better support Alpha (AXP)
477 This includes providing at least one bug-fix to the
478 @code{gcc} back end for Alphas.
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
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}.
492 Emulate @code{COMPLEX} arithmetic in the @code{g77} front
493 end, to avoid bugs in @code{complex} support in the
495 New option @samp{-fno-emulate-complex}
496 causes @code{g77} to revert the 0.5.19 behavior.
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}.
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
512 Enable inlining of subroutines and functions by the @code{gcc}
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.
520 Dummy arguments are no longer assumed to potentially alias
522 other dummy arguments or @code{COMMON} areas when any of
523 these are defined (assigned to) by Fortran code.
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}
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.
536 The @code{CONJG()} and @code{DCONJG()} intrinsics now
537 are compiled in-line.
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
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.
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}.)
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.)
573 @code{FORMAT} and @code{ENTRY} statements now are allowed to
574 precede @code{IMPLICIT NONE} statements.
577 Produce diagnostic for unsupported @code{SELECT CASE} on
578 @code{CHARACTER} type, instead of crashing, at compile time.
581 Fix crashes involving diagnosed or invalid code.
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
593 Support @code{gcc} version 2.7.2.2
594 (modified by @code{g77} into version 2.7.2.2.f.2),
596 support for prior versions of @code{gcc}.
599 Upgrade to @code{libf2c} as of 1997-02-08, and
600 fix up some of the build procedures.
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/}).
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}.
615 Improve @code{g77} driver and @code{libf2c} so that @samp{g77 -v}
616 yields version information on the library.
619 The @code{SNGL} and @code{FLOAT} intrinsics now are
620 specific intrinsics, instead of synonyms for the
621 generic intrinsic @code{REAL}.
624 New intrinsics have been added.
625 These are @code{REALPART}, @code{IMAGPART},
627 @code{LONG}, and @code{SHORT}.
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.
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.
645 Make improvements to diagnostics.
648 Speed up compiler a bit.
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.
656 (Hence the menu item @samp{M} for the node
657 @samp{Diagnostics} in the top-level menu of
658 the Info documentation.)
661 @heading In 0.5.19.1:
664 Code-generation bugs afflicting operations on complex
665 data have been fixed.
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.
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}
677 (The related generic and @samp{Z}-prefixed intrinsics,
678 such as @samp{ZSIN()}, also were affected.)
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.
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.
693 Fix @code{SIGNAL} intrinsic so it once again accepts a
694 procedure as its second argument.
697 A temporary kludge option provides bare-bones information on
698 @code{COMMON} and @code{EQUIVALENCE} members at debug time.
701 New @samp{-fonetrip} option specifies FORTRAN-66-style
702 one-trip @code{DO} loops.
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}.
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.
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.
720 New @samp{-ff66} option is a ``shorthand'' option that specifies
721 behaviors considered appropriate for FORTRAN 66 programs.
724 New @samp{-ff77} option is a ``shorthand'' option that specifies
725 behaviors considered appropriate for UNIX @code{f77} programs.
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.
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}.
741 Fix crashes involving diagnosed code.
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.
749 Support @code{gcc} version 2.7.2.1.
752 Upgrade to @code{libf2c} as of 1996-09-26, and
753 fix up some of the build procedures.
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
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
767 Add intrinsic support for new @code{FTELL} and @code{FSEEK}
768 procedures in @code{libf2c}.
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.
776 Some useless warnings from the @samp{-Wunused} option have
780 Fix a problem building the @file{f771} executable
781 on AIX systems by linking with the @samp{-bbigtoc} option.
784 Abort configuration if @code{gcc} has not been patched
785 using the patch file provided in the @samp{gcc/f/gbe/}
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.
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
801 Improvements to documentation and indexing.
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.)
812 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
813 for providing the patch for this!
815 Among the missing elements from the support for these
816 features are full intrinsic support and constants.
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}.
824 Thanks to Scott Snyder (@email{snyder@@d0sgif.fnal.gov})
825 for providing the patch for this!
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},
836 Support automatic arrays in procedures.
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.
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
853 A new option, @samp{-fzeros}, is introduced to
854 enable the traditional treatment of zeros as any
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}
862 (Here, @samp{Z} is @code{DOUBLE COMPLEX}.)
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
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))}.
874 An expression involving exponentiation, where both operands
875 were type @code{INTEGER} and the right-hand operand
876 was negative, was erroneously evaluated.
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).
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.
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.
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.
906 Patch the GBE to do a better job optimizing certain
907 kinds of references to array elements.
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
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
922 So, this introduces version 2.7.2.f.1 of @code{gcc}.
925 Make several improvements and fixes to diagnostics, including
926 the removal of two that were inappropriate or inadequate.
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).
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.
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.
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.
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}).
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.
963 Change the way iterative @code{DO} loops work to follow
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.
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.)
979 Support @code{gcc} version 2.7.2.
982 Upgrade to @code{libf2c} as of 1996-03-23, and
983 fix up some of the build procedures.
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}.
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}.
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).
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
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)!
1017 Fix crash on @samp{CHARACTER*(*) FOO} in a main or block data program unit.
1020 Fix crash that can occur when diagnostics given outside of any
1021 program unit (such as when input file contains @samp{@@foo}).
1024 Fix crashes, infinite loops (hangs), and such involving diagnosed code.
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
1033 Make @code{libf2c} build procedures work on more systems again by
1034 eliminating unnecessary invocations of @samp{ld -r -x} and @samp{mv}.
1037 Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
1038 options to compiler.
1041 Fix failure to always diagnose missing type declaration for
1042 @code{IMPLICIT NONE}.
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}).
1051 Fix build procedures so cross-compiling @code{g77} (the @code{fini}
1052 utility in particular) is properly built using the host compiler.
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.
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.
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}).
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.
1075 Clarify some diagnostics that say things like ``ignored'' when that's
1079 Clarify diagnostic on use of @code{.EQ.}/@code{.NE.} on @code{LOGICAL}
1083 Minor improvements to code generation for various operations on
1084 @code{LOGICAL} operands.
1087 Minor improvement to code generation for some @code{DO} loops on some
1091 Support @code{gcc} version 2.7.1.
1094 Upgrade to @code{libf2c} as of 1995-11-15.
1100 Fix a code-generation bug involving complicated @code{EQUIVALENCE} statements
1101 not involving @code{COMMON}.
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()}.
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.
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).
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.
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).
1138 Fix crash on expressions like @samp{COMPLEX**INTEGER}.
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.
1145 Fix crashes and such involving diagnosed code.
1148 Diagnose, instead of crashing on, statement function definitions
1149 having duplicate dummy argument names.
1152 Fix bug causing rejection of good code involving statement function
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},
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.
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).
1171 Fix diagnostic to point to correct source line when it immediately
1172 follows an @code{INCLUDE} statement.
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.
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)}).
1194 Add new intrinsic group named @samp{unix} to contain the new intrinsics,
1195 and by default enable this new group.
1198 Move @code{LOC()} intrinsic out of the @samp{vxt} group to the new
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).
1209 Add new @code{g77} option @samp{--driver=name} to specify driver when
1210 default, @code{gcc}, isn't appropriate.
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.
1219 Produce better diagnostics, more like @code{gcc}, with info such as
1220 @samp{In function `foo':} and @samp{In file included from...:}.
1223 Support @code{gcc}'s @samp{-fident} and @samp{-fno-ident} options.
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.
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.
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.
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).
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}.
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
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}).
1260 Lots of new documentation (though work is still needed to put it into
1261 canonical GNU format).
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.
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).
1276 Fix crash given @samp{CHARACTER A;DATA A/.TRUE./}.
1279 Replace crash with diagnostic given @samp{CHARACTER A;DATA A/1.0/}.
1282 Fix crash or other erratic behavior when null character constant
1283 (@samp{''}) is encountered.
1286 Fix crash or other erratic behavior involving diagnosed code.
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.
1294 Disallow @samp{COMMON I(10)} if @samp{I} has previously been specified
1295 with an array declarator.
1298 New @samp{-ffixed-line-length-@var{n}} option, where @var{n} is the
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.
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.
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
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.
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.
1332 Emit correct code for calculation of number of trips in @code{DO} loops
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.)
1340 Fix crash when extra parentheses surround item in
1341 @code{DATA} implied-@code{DO} list.
1344 Fix crash over minor internal inconsistencies in handling diagnostics,
1345 just substitute dummy strings where necessary.
1348 Fix crash on some systems when compiling call to @code{MVBITS()} intrinsic.
1351 Fix crash on array assignment @samp{TYPE@var{ddd}(@dots{})=@dots{}}, where @var{ddd}
1352 is a string of one or more digits.
1355 Fix crash on @code{DCMPLX()} with a single @code{INTEGER} argument.
1358 Fix various crashes involving code with diagnosed errors.
1361 Support @samp{-I} option for @code{INCLUDE} statement, plus @code{gcc}'s
1362 @file{header.gcc} facility for handling systems like MS-DOS.
1365 Allow @code{INCLUDE} statement to be continued across multiple lines,
1366 even allow it to coexist with other statements on the same line.
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
1374 Remove all the @code{g77}-specific auto-configuration scripts, code,
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).
1383 Complain if initialized common redeclared as larger in subsequent program
1387 Warn if blank common initialized, since its size can vary and hence
1388 related warnings that might be helpful won't be seen.
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.
1395 this behavior is somewhat different from @code{f2c}'s, which supports only
1396 a limited subset of backslash (escape) sequences.
1399 Make @samp{-fugly-args} the default.
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}.
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.
1414 New @samp{-Wimplicit} option to warn about implicitly typed variables, arrays,
1416 (Basically causes all program units to default to @code{IMPLICIT NONE}.)
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.
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).
1429 Support @code{%LOC()} and @code{LOC()} of character arguments.
1432 Support null (zero-length) character constants and expressions.
1435 Support @code{f2c}'s @code{IMAG()} generic intrinsic.
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.
1443 Support @code{f2c}-style @samp{&} in column 1 to mean continuation line.
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.
1450 Allow @code{RETURN} in main program unit.
1453 Changes to Hollerith-constant support to obey Appendix C of the
1458 Now padded on the right with zeros, not spaces.
1461 Hollerith ``format specifications'' in the form of arrays of
1462 non-character allowed.
1465 Warnings issued when non-space truncation occurs when converting
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.
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.
1482 Changes and fixes to typeless-constant support:
1486 Now treated as a typeless double-length @code{INTEGER} value.
1489 Warnings issued when overflow occurs.
1492 Padded on the left with zeros when converting
1496 Should be properly aligned and ordered on
1497 the target machine for whatever type it is turned into.
1500 When specified as actual argument, now passed as reference to
1501 a default @code{INTEGER} constant.
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)))}.
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}.
1518 Remove redundant message about zero-step-count @code{DO} loops.
1521 Clean up diagnostic messages, shortening many of them.
1524 Fix typo in @code{g77} man page.
1527 Clarify implications of constant-handling bugs in @file{f/BUGS}.
1530 Generate better code for @samp{**} operator with a right-hand operand of
1531 type @code{INTEGER}.
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()}.
1539 Generate better code for some kinds of array references.
1542 Speed up lexing somewhat (this makes the compilation phase noticeably