X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=gcc%2Ff%2Fg77.1;fp=gcc%2Ff%2Fg77.1;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=3a5d6d95e1af2df7f7d0602308365c850129b42a;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/gcc/f/g77.1 b/gcc/f/g77.1 deleted file mode 100644 index 3a5d6d95..00000000 --- a/gcc/f/g77.1 +++ /dev/null @@ -1,1719 +0,0 @@ -.\" Automatically generated by Pod::Man version 1.15 -.\" Tue Apr 22 07:07:35 2003 -.\" -.\" Standard preamble: -.\" ====================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Ip \" List item -.br -.ie \\n(.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R - -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used -.\" to do unbreakable dashes and therefore won't be available. \*(C` and -.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<> -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr -.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and -.\" index entries marked with X<> in POD. Of course, you'll have to process -.\" the output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it -.\" makes way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -.bd B 3 -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ====================================================================== -.\" -.IX Title "G77 1" -.TH G77 1 "gcc-3.2.3" "2003-04-22" "GNU" -.UC -.SH "NAME" -g77 \- \s-1GNU\s0 project Fortran 77 compiler -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -g77 [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] - [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR] - [\fB\-W\fR\fIwarn\fR...] [\fB\-pedantic\fR] - [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...] - [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR] - [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...] - [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR... -.PP -Only the most useful options are listed here; see below for the -remainder. -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -The \fBg77\fR command supports all the options supported by the -\&\fBgcc\fR command. -.PP -All \fBgcc\fR and \fBg77\fR options -are accepted both by \fBg77\fR and by \fBgcc\fR -(as well as any other drivers built at the same time, -such as \fBg++\fR), -since adding \fBg77\fR to the \fBgcc\fR distribution -enables acceptance of \fBg77\fR options -by all of the relevant drivers. -.PP -In some cases, options have positive and negative forms; -the negative form of \fB\-ffoo\fR would be \fB\-fno-foo\fR. -This manual documents only one of these two forms, whichever -one is not the default. -.SH "OPTIONS" -.IX Header "OPTIONS" -Here is a summary of all the options specific to \s-1GNU\s0 Fortran, grouped -by type. Explanations are in the following sections. -.Ip "\fIOverall Options\fR" 4 -.IX Item "Overall Options" -\&\fB\-fversion \-fset-g77\-defaults \-fno-silent\fR -.Ip "\fIShorthand Options\fR" 4 -.IX Item "Shorthand Options" -\&\fB\-ff66 \-fno-f66 \-ff77 \-fno-f77 \-fno-ugly\fR -.Ip "\fIFortran Language Options\fR" 4 -.IX Item "Fortran Language Options" -\&\fB\-ffree-form \-fno-fixed-form \-ff90 -\&\-fvxt \-fdollar-ok \-fno-backslash -\&\-fno-ugly-args \-fno-ugly-assign \-fno-ugly-assumed -\&\-fugly-comma \-fugly-complex \-fugly-init \-fugly-logint -\&\-fonetrip \-ftypeless-boz -\&\-fintrin-case-initcap \-fintrin-case-upper -\&\-fintrin-case-lower \-fintrin-case-any -\&\-fmatch-case-initcap \-fmatch-case-upper -\&\-fmatch-case-lower \-fmatch-case-any -\&\-fsource-case-upper \-fsource-case-lower -\&\-fsource-case-preserve -\&\-fsymbol-case-initcap \-fsymbol-case-upper -\&\-fsymbol-case-lower \-fsymbol-case-any -\&\-fcase-strict-upper \-fcase-strict-lower -\&\-fcase-initcap \-fcase-upper \-fcase-lower \-fcase-preserve -\&\-ff2c-intrinsics-delete \-ff2c-intrinsics-hide -\&\-ff2c-intrinsics-disable \-ff2c-intrinsics-enable -\&\-fbadu77\-intrinsics-delete \-fbadu77\-intrinsics-hide -\&\-fbadu77\-intrinsics-disable \-fbadu77\-intrinsics-enable -\&\-ff90\-intrinsics-delete \-ff90\-intrinsics-hide -\&\-ff90\-intrinsics-disable \-ff90\-intrinsics-enable -\&\-fgnu-intrinsics-delete \-fgnu-intrinsics-hide -\&\-fgnu-intrinsics-disable \-fgnu-intrinsics-enable -\&\-fmil-intrinsics-delete \-fmil-intrinsics-hide -\&\-fmil-intrinsics-disable \-fmil-intrinsics-enable -\&\-funix-intrinsics-delete \-funix-intrinsics-hide -\&\-funix-intrinsics-disable \-funix-intrinsics-enable -\&\-fvxt-intrinsics-delete \-fvxt-intrinsics-hide -\&\-fvxt-intrinsics-disable \-fvxt-intrinsics-enable -\&\-ffixed-line-length-\fR\fIn\fR \fB\-ffixed-line-length-none\fR -.Ip "\fIWarning Options\fR" 4 -.IX Item "Warning Options" -\&\fB\-fsyntax-only \-pedantic \-pedantic-errors \-fpedantic -\&\-w \-Wno-globals \-Wimplicit \-Wunused \-Wuninitialized -\&\-Wall \-Wsurprising -\&\-Werror \-W\fR -.Ip "\fIDebugging Options\fR" 4 -.IX Item "Debugging Options" -\&\fB\-g\fR -.Ip "\fIOptimization Options\fR" 4 -.IX Item "Optimization Options" -\&\fB\-malign-double -\&\-ffloat-store \-fforce-mem \-fforce-addr \-fno-inline -\&\-ffast-math \-fstrength-reduce \-frerun-cse-after-loop -\&\-funsafe-math-optimizations \-fno-trapping-math -\&\-fexpensive-optimizations \-fdelayed-branch -\&\-fschedule-insns \-fschedule-insn2 \-fcaller-saves -\&\-funroll-loops \-funroll-all-loops -\&\-fno-move-all-movables \-fno-reduce-all-givs -\&\-fno-rerun-loop-opt\fR -.Ip "\fIDirectory Options\fR" 4 -.IX Item "Directory Options" -\&\fB\-I\fR\fIdir\fR \fB\-I-\fR -.Ip "\fICode Generation Options\fR" 4 -.IX Item "Code Generation Options" -\&\fB\-fno-automatic \-finit-local-zero \-fno-f2c -\&\-ff2c-library \-fno-underscoring \-fno-ident -\&\-fpcc-struct-return \-freg-struct-return -\&\-fshort-double \-fno-common \-fpack-struct -\&\-fzeros \-fno-second-underscore -\&\-femulate-complex -\&\-falias-check \-fargument-alias -\&\-fargument-noalias \-fno-argument-noalias-global -\&\-fno-globals \-fflatten-arrays -\&\-fbounds-check \-ffortran-bounds-check\fR -.PP -Compilation can involve as many as four stages: preprocessing, code -generation (often what is really meant by the term ``compilation''), -assembly, and linking, always in that order. The first three -stages apply to an individual source file, and end by producing an -object file; linking combines all the object files (those newly -compiled, and those specified as input) into an executable file. -.PP -For any given input file, the file name suffix determines what kind of -program is contained in the file\-\-\-that is, the language in which the -program is written is generally indicated by the suffix. -Suffixes specific to \s-1GNU\s0 Fortran are listed below. -.Ip "\fIfile\fR\fB.f\fR" 4 -.IX Item "file.f" -.PD 0 -.Ip "\fIfile\fR\fB.for\fR" 4 -.IX Item "file.for" -.Ip "\fIfile\fR\fB.FOR\fR" 4 -.IX Item "file.FOR" -.PD -Fortran source code that should not be preprocessed. -.Sp -Such source code cannot contain any preprocessor directives, such -as \f(CW\*(C`#include\*(C'\fR, \f(CW\*(C`#define\*(C'\fR, \f(CW\*(C`#if\*(C'\fR, and so on. -.Sp -You can force \fB.f\fR files to be preprocessed by \fBcpp\fR by using -\&\fB\-x f77\-cpp-input\fR. -.Ip "\fIfile\fR\fB.F\fR" 4 -.IX Item "file.F" -.PD 0 -.Ip "\fIfile\fR\fB.fpp\fR" 4 -.IX Item "file.fpp" -.Ip "\fIfile\fR\fB.FPP\fR" 4 -.IX Item "file.FPP" -.PD -Fortran source code that must be preprocessed (by the C preprocessor -\&\fBcpp\fR, which is part of \s-1GNU\s0 \s-1CC\s0). -.Sp -Note that preprocessing is not extended to the contents of -files included by the \f(CW\*(C`INCLUDE\*(C'\fR directive\-\-\-the \f(CW\*(C`#include\*(C'\fR -preprocessor directive must be used instead. -.Ip "\fIfile\fR\fB.r\fR" 4 -.IX Item "file.r" -Ratfor source code, which must be preprocessed by the \fBratfor\fR -command, which is available separately (as it is not yet part of the \s-1GNU\s0 -Fortran distribution). -One version in Fortran, adapted for use with \fBg77\fR is at -<\fBftp://members.aol.com/n8tm/rat7.uue\fR> (of uncertain copyright -status). Another, public domain version in C is at -<\fBhttp://sepwww.stanford.edu/sep/prof/ratfor.shar.2\fR>. -.PP -\&\s-1UNIX\s0 users typically use the \fI\fIfile\fI.f\fR and \fI\fIfile\fI.F\fR -nomenclature. -Users of other operating systems, especially those that cannot -distinguish upper-case -letters from lower-case letters in their file names, typically use -the \fI\fIfile\fI.for\fR and \fI\fIfile\fI.fpp\fR nomenclature. -.PP -Use of the preprocessor \fBcpp\fR allows use of C-like -constructs such as \f(CW\*(C`#define\*(C'\fR and \f(CW\*(C`#include\*(C'\fR, but can -lead to unexpected, even mistaken, results due to Fortran's source file -format. -It is recommended that use of the C preprocessor -be limited to \f(CW\*(C`#include\*(C'\fR and, in -conjunction with \f(CW\*(C`#define\*(C'\fR, only \f(CW\*(C`#if\*(C'\fR and related directives, -thus avoiding in-line macro expansion entirely. -This recommendation applies especially -when using the traditional fixed source form. -With free source form, -fewer unexpected transformations are likely to happen, but use of -constructs such as Hollerith and character constants can nevertheless -present problems, especially when these are continued across multiple -source lines. -These problems result, primarily, from differences between the way -such constants are interpreted by the C preprocessor and by a Fortran -compiler. -.PP -Another example of a problem that results from using the C preprocessor -is that a Fortran comment line that happens to contain any -characters ``interesting'' to the C preprocessor, -such as a backslash at the end of the line, -is not recognized by the preprocessor as a comment line, -so instead of being passed through ``raw'', -the line is edited according to the rules for the preprocessor. -For example, the backslash at the end of the line is removed, -along with the subsequent newline, resulting in the next -line being effectively commented out\-\-\-unfortunate if that -line is a non-comment line of important code! -.PP -\&\fINote:\fR The \fB\-traditional\fR and \fB\-undef\fR flags are supplied -to \fBcpp\fR by default, to help avoid unpleasant surprises. -.PP -This means that \s-1ANSI\s0 C preprocessor features (such as the \fB#\fR -operator) aren't available, and only variables in the C reserved -namespace (generally, names with a leading underscore) are liable to -substitution by C predefines. -Thus, if you want to do system-specific -tests, use, for example, \fB#ifdef _\|_linux_\|_\fR rather than \fB#ifdef linux\fR. -Use the \fB\-v\fR option to see exactly how the preprocessor is invoked. -.PP -Unfortunately, the \fB\-traditional\fR flag will not avoid an error from -anything that \fBcpp\fR sees as an unterminated C comment, such as: -.PP -.Vb 2 -\& C Some Fortran compilers accept /* as starting -\& C an inline comment. -.Ve -The following options that affect overall processing are recognized -by the \fBg77\fR and \fBgcc\fR commands in a \s-1GNU\s0 Fortran installation: -.Ip "\fB\-fversion\fR" 4 -.IX Item "-fversion" -Ensure that the \fBg77\fR version of the compiler phase is reported, -if run, -and, starting in \f(CW\*(C`egcs\*(C'\fR version 1.1, -that internal consistency checks in the \fIf771\fR program are run. -.Sp -This option is supplied automatically when \fB\-v\fR or \fB\*(--verbose\fR -is specified as a command-line option for \fBg77\fR or \fBgcc\fR -and when the resulting commands compile Fortran source files. -.Sp -In \s-1GCC\s0 3.1, this is changed back to the behaviour \fBgcc\fR displays -for \fB.c\fR files. -.Ip "\fB\-fset-g77\-defaults\fR" 4 -.IX Item "-fset-g77-defaults" -\&\fIVersion info:\fR -This option was obsolete as of \f(CW\*(C`egcs\*(C'\fR -version 1.1. -The effect is instead achieved -by the \f(CW\*(C`lang_init_options\*(C'\fR routine -in \fIgcc/gcc/f/com.c\fR. -.Sp -Set up whatever \fBgcc\fR options are to apply to Fortran -compilations, and avoid running internal consistency checks -that might take some time. -.Sp -This option is supplied automatically when compiling Fortran code -via the \fBg77\fR or \fBgcc\fR command. -The description of this option is provided so that users seeing -it in the output of, say, \fBg77 \-v\fR understand why it is -there. -.Sp -Also, developers who run \f(CW\*(C`f771\*(C'\fR directly might want to specify it -by hand to get the same defaults as they would running \f(CW\*(C`f771\*(C'\fR -via \fBg77\fR or \fBgcc\fR -However, such developers should, after linking a new \f(CW\*(C`f771\*(C'\fR -executable, invoke it without this option once, -e.g. via \f(CW\*(C`./f771 \-quiet < /dev/null\*(C'\fR, -to ensure that they have not introduced any -internal inconsistencies (such as in the table of -intrinsics) before proceeding\-\--\fBg77\fR will crash -with a diagnostic if it detects an inconsistency. -.Ip "\fB\-fno-silent\fR" 4 -.IX Item "-fno-silent" -Print (to \f(CW\*(C`stderr\*(C'\fR) the names of the program units as -they are compiled, in a form similar to that used by popular -\&\s-1UNIX\s0 \fBf77\fR implementations and \fBf2c\fR -.Sh "Shorthand Options" -.IX Subsection "Shorthand Options" -The following options serve as ``shorthand'' -for other options accepted by the compiler: -.Ip "\fB\-fugly\fR" 4 -.IX Item "-fugly" -\&\fINote:\fR This option is no longer supported. -The information, below, is provided to aid -in the conversion of old scripts. -.Sp -Specify that certain ``ugly'' constructs are to be quietly accepted. -Same as: -.Sp -.Vb 3 -\& -fugly-args -fugly-assign -fugly-assumed -\& -fugly-comma -fugly-complex -fugly-init -\& -fugly-logint -.Ve -These constructs are considered inappropriate to use in new -or well-maintained portable Fortran code, but widely used -in old code. -.Ip "\fB\-fno-ugly\fR" 4 -.IX Item "-fno-ugly" -Specify that all ``ugly'' constructs are to be noisily rejected. -Same as: -.Sp -.Vb 3 -\& -fno-ugly-args -fno-ugly-assign -fno-ugly-assumed -\& -fno-ugly-comma -fno-ugly-complex -fno-ugly-init -\& -fno-ugly-logint -.Ve -.Ip "\fB\-ff66\fR" 4 -.IX Item "-ff66" -Specify that the program is written in idiomatic \s-1FORTRAN\s0 66. -Same as \fB\-fonetrip \-fugly-assumed\fR. -.Sp -The \fB\-fno-f66\fR option is the inverse of \fB\-ff66\fR. -As such, it is the same as \fB\-fno-onetrip \-fno-ugly-assumed\fR. -.Sp -The meaning of this option is likely to be refined as future -versions of \fBg77\fR provide more compatibility with other -existing and obsolete Fortran implementations. -.Ip "\fB\-ff77\fR" 4 -.IX Item "-ff77" -Specify that the program is written in idiomatic \s-1UNIX\s0 \s-1FORTRAN\s0 77 -and/or the dialect accepted by the \fBf2c\fR product. -Same as \fB\-fbackslash \-fno-typeless-boz\fR. -.Sp -The meaning of this option is likely to be refined as future -versions of \fBg77\fR provide more compatibility with other -existing and obsolete Fortran implementations. -.Ip "\fB\-fno-f77\fR" 4 -.IX Item "-fno-f77" -The \fB\-fno-f77\fR option is \fInot\fR the inverse -of \fB\-ff77\fR. -It specifies that the program is not written in idiomatic \s-1UNIX\s0 -\&\s-1FORTRAN\s0 77 or \fBf2c\fR but in a more widely portable dialect. -\&\fB\-fno-f77\fR is the same as \fB\-fno-backslash\fR. -.Sp -The meaning of this option is likely to be refined as future -versions of \fBg77\fR provide more compatibility with other -existing and obsolete Fortran implementations. -.Sh "Options Controlling Fortran Dialect" -.IX Subsection "Options Controlling Fortran Dialect" -The following options control the dialect of Fortran -that the compiler accepts: -.Ip "\fB\-ffree-form\fR" 4 -.IX Item "-ffree-form" -.PD 0 -.Ip "\fB\-fno-fixed-form\fR" 4 -.IX Item "-fno-fixed-form" -.PD -Specify that the source file is written in free form -(introduced in Fortran 90) instead of the more-traditional fixed form. -.Ip "\fB\-ff90\fR" 4 -.IX Item "-ff90" -Allow certain Fortran-90 constructs. -.Sp -This option controls whether certain -Fortran 90 constructs are recognized. -(Other Fortran 90 constructs -might or might not be recognized depending on other options such as -\&\fB\-fvxt\fR, \fB\-ff90\-intrinsics-enable\fR, and the -current level of support for Fortran 90.) -.Ip "\fB\-fvxt\fR" 4 -.IX Item "-fvxt" -Specify the treatment of certain constructs that have different -meanings depending on whether the code is written in -\&\s-1GNU\s0 Fortran (based on \s-1FORTRAN\s0 77 and akin to Fortran 90) -or \s-1VXT\s0 Fortran (more like \s-1VAX\s0 \s-1FORTRAN\s0). -.Sp -The default is \fB\-fno-vxt\fR. -\&\fB\-fvxt\fR specifies that the \s-1VXT\s0 Fortran interpretations -for those constructs are to be chosen. -.Ip "\fB\-fdollar-ok\fR" 4 -.IX Item "-fdollar-ok" -Allow \fB$\fR as a valid character in a symbol name. -.Ip "\fB\-fno-backslash\fR" 4 -.IX Item "-fno-backslash" -Specify that \fB\e\fR is not to be specially interpreted in character -and Hollerith constants a la C and many \s-1UNIX\s0 Fortran compilers. -.Sp -For example, with \fB\-fbackslash\fR in effect, \fBA\enB\fR specifies -three characters, with the second one being newline. -With \fB\-fno-backslash\fR, it specifies four characters, -\&\fBA\fR, \fB\e\fR, \fBn\fR, and \fBB\fR. -.Sp -Note that \fBg77\fR implements a fairly general form of backslash -processing that is incompatible with the narrower forms supported -by some other compilers. -For example, \fB'A\e003B'\fR is a three-character string in \fBg77\fR -whereas other compilers that support backslash might not support -the three-octal-digit form, and thus treat that string as longer -than three characters. -.Ip "\fB\-fno-ugly-args\fR" 4 -.IX Item "-fno-ugly-args" -Disallow passing Hollerith and typeless constants as actual -arguments (for example, \fB\s-1CALL\s0 FOO(4HABCD)\fR). -.Ip "\fB\-fugly-assign\fR" 4 -.IX Item "-fugly-assign" -Use the same storage for a given variable regardless of -whether it is used to hold an assigned-statement label -(as in \fB\s-1ASSIGN\s0 10 \s-1TO\s0 I\fR) or used to hold numeric data -(as in \fBI = 3\fR). -.Ip "\fB\-fugly-assumed\fR" 4 -.IX Item "-fugly-assumed" -Assume any dummy array with a final dimension specified as \fB1\fR -is really an assumed-size array, as if \fB*\fR had been specified -for the final dimension instead of \fB1\fR. -.Sp -For example, \fB\s-1DIMENSION\s0 X(1)\fR is treated as if it -had read \fB\s-1DIMENSION\s0 X(*)\fR. -.Ip "\fB\-fugly-comma\fR" 4 -.IX Item "-fugly-comma" -In an external-procedure invocation, -treat a trailing comma in the argument list -as specification of a trailing null argument, -and treat an empty argument list -as specification of a single null argument. -.Sp -For example, \fB\s-1CALL\s0 \f(BIFOO\fB\|(,)\fR is treated as -\&\fB\s-1CALL\s0 FOO(%\f(BIVAL\fB\|(0), %\f(BIVAL\fB\|(0))\fR. -That is, \fItwo\fR null arguments are specified -by the procedure call when \fB\-fugly-comma\fR is in force. -And \fBF = \f(BIFUNC()\fB\fR is treated as \fBF = FUNC(%\f(BIVAL\fB\|(0))\fR. -.Sp -The default behavior, \fB\-fno-ugly-comma\fR, is to ignore -a single trailing comma in an argument list. -So, by default, \fB\s-1CALL\s0 FOO(X,)\fR is treated -exactly the same as \fB\s-1CALL\s0 \f(BIFOO\fB\|(X)\fR. -.Ip "\fB\-fugly-complex\fR" 4 -.IX Item "-fugly-complex" -Do not complain about \fBREAL(\fR\fIexpr\fR\fB)\fR or -\&\fBAIMAG(\fR\fIexpr\fR\fB)\fR when \fIexpr\fR is a \f(CW\*(C`COMPLEX\*(C'\fR -type other than \f(CW\*(C`COMPLEX(KIND=1)\*(C'\fR\-\-\-usually -this is used to permit \f(CW\*(C`COMPLEX(KIND=2)\*(C'\fR -(\f(CW\*(C`DOUBLE COMPLEX\*(C'\fR) operands. -.Sp -The \fB\-ff90\fR option controls the interpretation -of this construct. -.Ip "\fB\-fno-ugly-init\fR" 4 -.IX Item "-fno-ugly-init" -Disallow use of Hollerith and typeless constants as initial -values (in \f(CW\*(C`PARAMETER\*(C'\fR and \f(CW\*(C`DATA\*(C'\fR statements), and -use of character constants to -initialize numeric types and vice versa. -.Sp -For example, \fB\s-1DATA\s0 I/'F'/, \s-1CHRVAR/65/\s0, J/4HABCD/\fR is disallowed by -\&\fB\-fno-ugly-init\fR. -.Ip "\fB\-fugly-logint\fR" 4 -.IX Item "-fugly-logint" -Treat \f(CW\*(C`INTEGER\*(C'\fR and \f(CW\*(C`LOGICAL\*(C'\fR variables and -expressions as potential stand-ins for each other. -.Sp -For example, automatic conversion between \f(CW\*(C`INTEGER\*(C'\fR and -\&\f(CW\*(C`LOGICAL\*(C'\fR is enabled, for many contexts, via this option. -.Ip "\fB\-fonetrip\fR" 4 -.IX Item "-fonetrip" -Executable iterative \f(CW\*(C`DO\*(C'\fR loops are to be executed at -least once each time they are reached. -.Sp -\&\s-1ANSI\s0 \s-1FORTRAN\s0 77 and more recent versions of the Fortran standard -specify that the body of an iterative \f(CW\*(C`DO\*(C'\fR loop is not executed -if the number of iterations calculated from the parameters of the -loop is less than 1. -(For example, \fB\s-1DO\s0 10 I = 1, 0\fR.) -Such a loop is called a \fIzero-trip loop\fR. -.Sp -Prior to \s-1ANSI\s0 \s-1FORTRAN\s0 77, many compilers implemented \f(CW\*(C`DO\*(C'\fR loops -such that the body of a loop would be executed at least once, even -if the iteration count was zero. -Fortran code written assuming this behavior is said to require -\&\fIone-trip loops\fR. -For example, some code written to the \s-1FORTRAN\s0 66 standard -expects this behavior from its \f(CW\*(C`DO\*(C'\fR loops, although that -standard did not specify this behavior. -.Sp -The \fB\-fonetrip\fR option specifies that the source \fIfile\fR\|(s) being -compiled require one-trip loops. -.Sp -This option affects only those loops specified by the (iterative) \f(CW\*(C`DO\*(C'\fR -statement and by implied-\f(CW\*(C`DO\*(C'\fR lists in I/O statements. -Loops specified by implied-\f(CW\*(C`DO\*(C'\fR lists in \f(CW\*(C`DATA\*(C'\fR and -specification (non-executable) statements are not affected. -.Ip "\fB\-ftypeless-boz\fR" 4 -.IX Item "-ftypeless-boz" -Specifies that prefix-radix non-decimal constants, such as -\&\fBZ'\s-1ABCD\s0'\fR, are typeless instead of \f(CW\*(C`INTEGER(KIND=1)\*(C'\fR. -.Sp -You can test for yourself whether a particular compiler treats -the prefix form as \f(CW\*(C`INTEGER(KIND=1)\*(C'\fR or typeless by running the -following program: -.Sp -.Vb 6 -\& EQUIVALENCE (I, R) -\& R = Z'ABCD1234' -\& J = Z'ABCD1234' -\& IF (J .EQ. I) PRINT *, 'Prefix form is TYPELESS' -\& IF (J .NE. I) PRINT *, 'Prefix form is INTEGER' -\& END -.Ve -Reports indicate that many compilers process this form as -\&\f(CW\*(C`INTEGER(KIND=1)\*(C'\fR, though a few as typeless, and at least one -based on a command-line option specifying some kind of -compatibility. -.Ip "\fB\-fintrin-case-initcap\fR" 4 -.IX Item "-fintrin-case-initcap" -.PD 0 -.Ip "\fB\-fintrin-case-upper\fR" 4 -.IX Item "-fintrin-case-upper" -.Ip "\fB\-fintrin-case-lower\fR" 4 -.IX Item "-fintrin-case-lower" -.Ip "\fB\-fintrin-case-any\fR" 4 -.IX Item "-fintrin-case-any" -.PD -Specify expected case for intrinsic names. -\&\fB\-fintrin-case-lower\fR is the default. -.Ip "\fB\-fmatch-case-initcap\fR" 4 -.IX Item "-fmatch-case-initcap" -.PD 0 -.Ip "\fB\-fmatch-case-upper\fR" 4 -.IX Item "-fmatch-case-upper" -.Ip "\fB\-fmatch-case-lower\fR" 4 -.IX Item "-fmatch-case-lower" -.Ip "\fB\-fmatch-case-any\fR" 4 -.IX Item "-fmatch-case-any" -.PD -Specify expected case for keywords. -\&\fB\-fmatch-case-lower\fR is the default. -.Ip "\fB\-fsource-case-upper\fR" 4 -.IX Item "-fsource-case-upper" -.PD 0 -.Ip "\fB\-fsource-case-lower\fR" 4 -.IX Item "-fsource-case-lower" -.Ip "\fB\-fsource-case-preserve\fR" 4 -.IX Item "-fsource-case-preserve" -.PD -Specify whether source text other than character and Hollerith constants -is to be translated to uppercase, to lowercase, or preserved as is. -\&\fB\-fsource-case-lower\fR is the default. -.Ip "\fB\-fsymbol-case-initcap\fR" 4 -.IX Item "-fsymbol-case-initcap" -.PD 0 -.Ip "\fB\-fsymbol-case-upper\fR" 4 -.IX Item "-fsymbol-case-upper" -.Ip "\fB\-fsymbol-case-lower\fR" 4 -.IX Item "-fsymbol-case-lower" -.Ip "\fB\-fsymbol-case-any\fR" 4 -.IX Item "-fsymbol-case-any" -.PD -Specify valid cases for user-defined symbol names. -\&\fB\-fsymbol-case-any\fR is the default. -.Ip "\fB\-fcase-strict-upper\fR" 4 -.IX Item "-fcase-strict-upper" -Same as \fB\-fintrin-case-upper \-fmatch-case-upper \-fsource-case-preserve -\&\-fsymbol-case-upper\fR. -(Requires all pertinent source to be in uppercase.) -.Ip "\fB\-fcase-strict-lower\fR" 4 -.IX Item "-fcase-strict-lower" -Same as \fB\-fintrin-case-lower \-fmatch-case-lower \-fsource-case-preserve -\&\-fsymbol-case-lower\fR. -(Requires all pertinent source to be in lowercase.) -.Ip "\fB\-fcase-initcap\fR" 4 -.IX Item "-fcase-initcap" -Same as \fB\-fintrin-case-initcap \-fmatch-case-initcap \-fsource-case-preserve -\&\-fsymbol-case-initcap\fR. -(Requires all pertinent source to be in initial capitals, -as in \fBPrint *,SqRt(Value)\fR.) -.Ip "\fB\-fcase-upper\fR" 4 -.IX Item "-fcase-upper" -Same as \fB\-fintrin-case-any \-fmatch-case-any \-fsource-case-upper -\&\-fsymbol-case-any\fR. -(Maps all pertinent source to uppercase.) -.Ip "\fB\-fcase-lower\fR" 4 -.IX Item "-fcase-lower" -Same as \fB\-fintrin-case-any \-fmatch-case-any \-fsource-case-lower -\&\-fsymbol-case-any\fR. -(Maps all pertinent source to lowercase.) -.Ip "\fB\-fcase-preserve\fR" 4 -.IX Item "-fcase-preserve" -Same as \fB\-fintrin-case-any \-fmatch-case-any \-fsource-case-preserve -\&\-fsymbol-case-any\fR. -(Preserves all case in user-defined symbols, -while allowing any-case matching of intrinsics and keywords. -For example, \fBcall Foo(i,I)\fR would pass two \fIdifferent\fR -variables named \fBi\fR and \fBI\fR to a procedure named \fBFoo\fR.) -.Ip "\fB\-fbadu77\-intrinsics-delete\fR" 4 -.IX Item "-fbadu77-intrinsics-delete" -.PD 0 -.Ip "\fB\-fbadu77\-intrinsics-hide\fR" 4 -.IX Item "-fbadu77-intrinsics-hide" -.Ip "\fB\-fbadu77\-intrinsics-disable\fR" 4 -.IX Item "-fbadu77-intrinsics-disable" -.Ip "\fB\-fbadu77\-intrinsics-enable\fR" 4 -.IX Item "-fbadu77-intrinsics-enable" -.PD -Specify status of \s-1UNIX\s0 intrinsics having inappropriate forms. -\&\fB\-fbadu77\-intrinsics-enable\fR is the default. -.Ip "\fB\-ff2c-intrinsics-delete\fR" 4 -.IX Item "-ff2c-intrinsics-delete" -.PD 0 -.Ip "\fB\-ff2c-intrinsics-hide\fR" 4 -.IX Item "-ff2c-intrinsics-hide" -.Ip "\fB\-ff2c-intrinsics-disable\fR" 4 -.IX Item "-ff2c-intrinsics-disable" -.Ip "\fB\-ff2c-intrinsics-enable\fR" 4 -.IX Item "-ff2c-intrinsics-enable" -.PD -Specify status of f2c-specific intrinsics. -\&\fB\-ff2c-intrinsics-enable\fR is the default. -.Ip "\fB\-ff90\-intrinsics-delete\fR" 4 -.IX Item "-ff90-intrinsics-delete" -.PD 0 -.Ip "\fB\-ff90\-intrinsics-hide\fR" 4 -.IX Item "-ff90-intrinsics-hide" -.Ip "\fB\-ff90\-intrinsics-disable\fR" 4 -.IX Item "-ff90-intrinsics-disable" -.Ip "\fB\-ff90\-intrinsics-enable\fR" 4 -.IX Item "-ff90-intrinsics-enable" -.PD -Specify status of F90\-specific intrinsics. -\&\fB\-ff90\-intrinsics-enable\fR is the default. -.Ip "\fB\-fgnu-intrinsics-delete\fR" 4 -.IX Item "-fgnu-intrinsics-delete" -.PD 0 -.Ip "\fB\-fgnu-intrinsics-hide\fR" 4 -.IX Item "-fgnu-intrinsics-hide" -.Ip "\fB\-fgnu-intrinsics-disable\fR" 4 -.IX Item "-fgnu-intrinsics-disable" -.Ip "\fB\-fgnu-intrinsics-enable\fR" 4 -.IX Item "-fgnu-intrinsics-enable" -.PD -Specify status of Digital's COMPLEX-related intrinsics. -\&\fB\-fgnu-intrinsics-enable\fR is the default. -.Ip "\fB\-fmil-intrinsics-delete\fR" 4 -.IX Item "-fmil-intrinsics-delete" -.PD 0 -.Ip "\fB\-fmil-intrinsics-hide\fR" 4 -.IX Item "-fmil-intrinsics-hide" -.Ip "\fB\-fmil-intrinsics-disable\fR" 4 -.IX Item "-fmil-intrinsics-disable" -.Ip "\fB\-fmil-intrinsics-enable\fR" 4 -.IX Item "-fmil-intrinsics-enable" -.PD -Specify status of MIL-STD-1753\-specific intrinsics. -\&\fB\-fmil-intrinsics-enable\fR is the default. -.Ip "\fB\-funix-intrinsics-delete\fR" 4 -.IX Item "-funix-intrinsics-delete" -.PD 0 -.Ip "\fB\-funix-intrinsics-hide\fR" 4 -.IX Item "-funix-intrinsics-hide" -.Ip "\fB\-funix-intrinsics-disable\fR" 4 -.IX Item "-funix-intrinsics-disable" -.Ip "\fB\-funix-intrinsics-enable\fR" 4 -.IX Item "-funix-intrinsics-enable" -.PD -Specify status of \s-1UNIX\s0 intrinsics. -\&\fB\-funix-intrinsics-enable\fR is the default. -.Ip "\fB\-fvxt-intrinsics-delete\fR" 4 -.IX Item "-fvxt-intrinsics-delete" -.PD 0 -.Ip "\fB\-fvxt-intrinsics-hide\fR" 4 -.IX Item "-fvxt-intrinsics-hide" -.Ip "\fB\-fvxt-intrinsics-disable\fR" 4 -.IX Item "-fvxt-intrinsics-disable" -.Ip "\fB\-fvxt-intrinsics-enable\fR" 4 -.IX Item "-fvxt-intrinsics-enable" -.PD -Specify status of \s-1VXT\s0 intrinsics. -\&\fB\-fvxt-intrinsics-enable\fR is the default. -.Ip "\fB\-ffixed-line-length-\fR\fIn\fR" 4 -.IX Item "-ffixed-line-length-n" -Set column after which characters are ignored in typical fixed-form -lines in the source file, and through which spaces are assumed (as -if padded to that length) after the ends of short fixed-form lines. -.Sp -Popular values for \fIn\fR include 72 (the -standard and the default), 80 (card image), and 132 (corresponds -to ``extended-source'' options in some popular compilers). -\&\fIn\fR may be \fBnone\fR, meaning that the entire line is meaningful -and that continued character constants never have implicit spaces appended -to them to fill out the line. -\&\fB\-ffixed-line-length-0\fR means the same thing as -\&\fB\-ffixed-line-length-none\fR. -.Sh "Options to Request or Suppress Warnings" -.IX Subsection "Options to Request or Suppress Warnings" -Warnings are diagnostic messages that report constructions which -are not inherently erroneous but which are risky or suggest there -might have been an error. -.PP -You can request many specific warnings with options beginning \fB\-W\fR, -for example \fB\-Wimplicit\fR to request warnings on implicit -declarations. Each of these specific warning options also has a -negative form beginning \fB\-Wno-\fR to turn off warnings; -for example, \fB\-Wno-implicit\fR. This manual lists only one of the -two forms, whichever is not the default. -.PP -These options control the amount and kinds of warnings produced by \s-1GNU\s0 -Fortran: -.Ip "\fB\-fsyntax-only\fR" 4 -.IX Item "-fsyntax-only" -Check the code for syntax errors, but don't do anything beyond that. -.Ip "\fB\-pedantic\fR" 4 -.IX Item "-pedantic" -Issue warnings for uses of extensions to \s-1ANSI\s0 \s-1FORTRAN\s0 77. -\&\fB\-pedantic\fR also applies to C-language constructs where they -occur in \s-1GNU\s0 Fortran source files, such as use of \fB\ee\fR in a -character constant within a directive like \fB#include\fR. -.Sp -Valid \s-1ANSI\s0 \s-1FORTRAN\s0 77 programs should compile properly with or without -this option. -However, without this option, certain \s-1GNU\s0 extensions and traditional -Fortran features are supported as well. -With this option, many of them are rejected. -.Sp -Some users try to use \fB\-pedantic\fR to check programs for strict \s-1ANSI\s0 -conformance. -They soon find that it does not do quite what they want\-\-\-it finds some -non-ANSI practices, but not all. -However, improvements to \fBg77\fR in this area are welcome. -.Ip "\fB\-pedantic-errors\fR" 4 -.IX Item "-pedantic-errors" -Like \fB\-pedantic\fR, except that errors are produced rather than -warnings. -.Ip "\fB\-fpedantic\fR" 4 -.IX Item "-fpedantic" -Like \fB\-pedantic\fR, but applies only to Fortran constructs. -.Ip "\fB\-w\fR" 4 -.IX Item "-w" -Inhibit all warning messages. -.Ip "\fB\-Wno-globals\fR" 4 -.IX Item "-Wno-globals" -Inhibit warnings about use of a name as both a global name -(a subroutine, function, or block data program unit, or a -common block) and implicitly as the name of an intrinsic -in a source file. -.Sp -Also inhibit warnings about inconsistent invocations and/or -definitions of global procedures (function and subroutines). -Such inconsistencies include different numbers of arguments -and different types of arguments. -.Ip "\fB\-Wimplicit\fR" 4 -.IX Item "-Wimplicit" -Warn whenever a variable, array, or function is implicitly -declared. -Has an effect similar to using the \f(CW\*(C`IMPLICIT NONE\*(C'\fR statement -in every program unit. -(Some Fortran compilers provide this feature by an option -named \fB\-u\fR or \fB/WARNINGS=DECLARATIONS\fR.) -.Ip "\fB\-Wunused\fR" 4 -.IX Item "-Wunused" -Warn whenever a variable is unused aside from its declaration. -.Ip "\fB\-Wuninitialized\fR" 4 -.IX Item "-Wuninitialized" -Warn whenever an automatic variable is used without first being initialized. -.Sp -These warnings are possible only in optimizing compilation, -because they require data-flow information that is computed only -when optimizing. If you don't specify \fB\-O\fR, you simply won't -get these warnings. -.Sp -These warnings occur only for variables that are candidates for -register allocation. Therefore, they do not occur for a variable -whose address is taken, or whose size -is other than 1, 2, 4 or 8 bytes. Also, they do not occur for -arrays, even when they are in registers. -.Sp -Note that there might be no warning about a variable that is used only -to compute a value that itself is never used, because such -computations may be deleted by data-flow analysis before the warnings -are printed. -.Sp -These warnings are made optional because \s-1GNU\s0 Fortran is not smart -enough to see all the reasons why the code might be correct -despite appearing to have an error. Here is one example of how -this can happen: -.Sp -.Vb 6 -\& SUBROUTINE DISPAT(J) -\& IF (J.EQ.1) I=1 -\& IF (J.EQ.2) I=4 -\& IF (J.EQ.3) I=5 -\& CALL FOO(I) -\& END -.Ve -If the value of \f(CW\*(C`J\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`I\*(C'\fR is -always initialized, but \s-1GNU\s0 Fortran doesn't know this. Here is -another common case: -.Sp -.Vb 6 -\& SUBROUTINE MAYBE(FLAG) -\& LOGICAL FLAG -\& IF (FLAG) VALUE = 9.4 -\& ... -\& IF (FLAG) PRINT *, VALUE -\& END -.Ve -This has no bug because \f(CW\*(C`VALUE\*(C'\fR is used only if it is set. -.Ip "\fB\-Wall\fR" 4 -.IX Item "-Wall" -The \fB\-Wunused\fR and \fB\-Wuninitialized\fR options combined. -These are all the -options which pertain to usage that we recommend avoiding and that we -believe is easy to avoid. -(As more warnings are added to \fBg77\fR some might -be added to the list enabled by \fB\-Wall\fR.) -.PP -The remaining \fB\-W...\fR options are not implied by \fB\-Wall\fR -because they warn about constructions that we consider reasonable to -use, on occasion, in clean programs. -.Ip "\fB\-Wsurprising\fR" 4 -.IX Item "-Wsurprising" -Warn about ``suspicious'' constructs that are interpreted -by the compiler in a way that might well be surprising to -someone reading the code. -These differences can result in subtle, compiler-dependent -(even machine-dependent) behavioral differences. -The constructs warned about include: -.RS 4 -.Ip "\(bu" 4 -Expressions having two arithmetic operators in a row, such -as \fBX*\-Y\fR. -Such a construct is nonstandard, and can produce -unexpected results in more complicated situations such -as \fBX**\-Y*Z\fR. -\&\fBg77\fR along with many other compilers, interprets -this example differently than many programmers, and a few -other compilers. -Specifically, \fBg77\fR interprets \fBX**\-Y*Z\fR as -\&\fB(X**(\-Y))*Z\fR, while others might think it should -be interpreted as \fBX**(\-(Y*Z))\fR. -.Sp -A revealing example is the constant expression \fB2**\-2*1.\fR, -which \fBg77\fR evaluates to .25, while others might evaluate -it to 0., the difference resulting from the way precedence affects -type promotion. -.Sp -(The \fB\-fpedantic\fR option also warns about expressions -having two arithmetic operators in a row.) -.Ip "\(bu" 4 -Expressions with a unary minus followed by an operand and then -a binary operator other than plus or minus. -For example, \fB\-2**2\fR produces a warning, because -the precedence is \fB\-(2**2)\fR, yielding \-4, not -\&\fB(\-2)**2\fR, which yields 4, and which might represent -what a programmer expects. -.Sp -An example of an expression producing different results -in a surprising way is \fB\-I*S\fR, where \fII\fR holds -the value \fB\-2147483648\fR and \fIS\fR holds \fB0.5\fR. -On many systems, negating \fII\fR results in the same -value, not a positive number, because it is already the -lower bound of what an \f(CW\*(C`INTEGER(KIND=1)\*(C'\fR variable can hold. -So, the expression evaluates to a positive number, while -the ``expected'' interpretation, \fB(\-I)*S\fR, would -evaluate to a negative number. -.Sp -Even cases such as \fB\-I*J\fR produce warnings, -even though, in most configurations and situations, -there is no computational difference between the -results of the two interpretations\-\-\-the purpose -of this warning is to warn about differing interpretations -and encourage a better style of coding, not to identify -only those places where bugs might exist in the user's -code. -.Ip "\(bu" 4 -\&\f(CW\*(C`DO\*(C'\fR loops with \f(CW\*(C`DO\*(C'\fR variables that are not -of integral type\-\-\-that is, using \f(CW\*(C`REAL\*(C'\fR -variables as loop control variables. -Although such loops can be written to work in the -``obvious'' way, the way \fBg77\fR is required by the -Fortran standard to interpret such code is likely to -be quite different from the way many programmers expect. -(This is true of all \f(CW\*(C`DO\*(C'\fR loops, but the differences -are pronounced for non-integral loop control variables.) -.RE -.RS 4 -.RE -.Ip "\fB\-Werror\fR" 4 -.IX Item "-Werror" -Make all warnings into errors. -.Ip "\fB\-W\fR" 4 -.IX Item "-W" -Turns on ``extra warnings'' and, if optimization is specified -via \fB\-O\fR, the \fB\-Wuninitialized\fR option. -(This might change in future versions of \fBg77\fR -.Sp -``Extra warnings'' are issued for: -.RS 4 -.Ip "\(bu" 4 -Unused parameters to a procedure (when \fB\-Wunused\fR also is -specified). -.Ip "\(bu" 4 -Overflows involving floating-point constants (not available -for certain configurations). -.RE -.RS 4 -.RE -.PP -Some of these have no effect when compiling programs written in Fortran: -.Ip "\fB\-Wcomment\fR" 4 -.IX Item "-Wcomment" -.PD 0 -.Ip "\fB\-Wformat\fR" 4 -.IX Item "-Wformat" -.Ip "\fB\-Wparentheses\fR" 4 -.IX Item "-Wparentheses" -.Ip "\fB\-Wswitch\fR" 4 -.IX Item "-Wswitch" -.Ip "\fB\-Wtraditional\fR" 4 -.IX Item "-Wtraditional" -.Ip "\fB\-Wshadow\fR" 4 -.IX Item "-Wshadow" -.Ip "\fB\-Wid-clash-\fR\fIlen\fR" 4 -.IX Item "-Wid-clash-len" -.Ip "\fB\-Wlarger-than-\fR\fIlen\fR" 4 -.IX Item "-Wlarger-than-len" -.Ip "\fB\-Wconversion\fR" 4 -.IX Item "-Wconversion" -.Ip "\fB\-Waggregate-return\fR" 4 -.IX Item "-Waggregate-return" -.Ip "\fB\-Wredundant-decls\fR" 4 -.IX Item "-Wredundant-decls" -.PD -These options all could have some relevant meaning for -\&\s-1GNU\s0 Fortran programs, but are not yet supported. -.Sh "Options for Debugging Your Program or \s-1GNU\s0 Fortran" -.IX Subsection "Options for Debugging Your Program or GNU Fortran" -\&\s-1GNU\s0 Fortran has various special options that are used for debugging -either your program or \fBg77\fR -.Ip "\fB\-g\fR" 4 -.IX Item "-g" -Produce debugging information in the operating system's native format -(stabs, \s-1COFF\s0, \s-1XCOFF\s0, or \s-1DWARF\s0). \s-1GDB\s0 can work with this debugging -information. -.Sp -A sample debugging session looks like this (note the use of the breakpoint): -.Sp -.Vb 24 -\& $ cat gdb.f -\& PROGRAM PROG -\& DIMENSION A(10) -\& DATA A /1.,2.,3.,4.,5.,6.,7.,8.,9.,10./ -\& A(5) = 4. -\& PRINT*,A -\& END -\& $ g77 -g -O gdb.f -\& $ gdb a.out -\& ... -\& (gdb) break MAIN__ -\& Breakpoint 1 at 0x8048e96: file gdb.f, line 4. -\& (gdb) run -\& Starting program: /home/toon/g77-bugs/./a.out -\& Breakpoint 1, MAIN__ () at gdb.f:4 -\& 4 A(5) = 4. -\& Current language: auto; currently fortran -\& (gdb) print a(5) -\& $1 = 5 -\& (gdb) step -\& 5 PRINT*,A -\& (gdb) print a(5) -\& $2 = 4 -\& ... -.Ve -One could also add the setting of the breakpoint and the first run command -to the file \fI.gdbinit\fR in the current directory, to simplify the debugging -session. -.Sh "Options That Control Optimization" -.IX Subsection "Options That Control Optimization" -Most Fortran users will want to use no optimization when -developing and testing programs, and use \fB\-O\fR or \fB\-O2\fR when -compiling programs for late-cycle testing and for production use. -However, note that certain diagnostics\-\-\-such as for uninitialized -variables\-\-\-depend on the flow analysis done by \fB\-O\fR, i.e. you -must use \fB\-O\fR or \fB\-O2\fR to get such diagnostics. -.PP -The following flags have particular applicability when -compiling Fortran programs: -.Ip "\fB\-malign-double\fR" 4 -.IX Item "-malign-double" -(Intel x86 architecture only.) -.Sp -Noticeably improves performance of \fBg77\fR programs making -heavy use of \f(CW\*(C`REAL(KIND=2)\*(C'\fR (\f(CW\*(C`DOUBLE PRECISION\*(C'\fR) data -on some systems. -In particular, systems using Pentium, Pentium Pro, 586, and -686 implementations -of the i386 architecture execute programs faster when -\&\f(CW\*(C`REAL(KIND=2)\*(C'\fR (\f(CW\*(C`DOUBLE PRECISION\*(C'\fR) data are -aligned on 64\-bit boundaries -in memory. -.Sp -This option can, at least, make benchmark results more consistent -across various system configurations, versions of the program, -and data sets. -.Sp -\&\fINote:\fR The warning in the \fBgcc\fR documentation about -this option does not apply, generally speaking, to Fortran -code compiled by \fBg77\fR -.Sp -\&\fIAlso also note:\fR The negative form of \fB\-malign-double\fR -is \fB\-mno-align-double\fR, not \fB\-benign-double\fR. -.Ip "\fB\-ffloat-store\fR" 4 -.IX Item "-ffloat-store" -Might help a Fortran program that depends on exact \s-1IEEE\s0 conformance on -some machines, but might slow down a program that doesn't. -.Sp -This option is effective when the floating-point unit is set to work in -\&\s-1IEEE\s0 854 `extended precision'\-\-\-as it typically is on x86 and m68k \s-1GNU\s0 -systems\-\-\-rather than \s-1IEEE\s0 754 double precision. \fB\-ffloat-store\fR -tries to remove the extra precision by spilling data from floating-point -registers into memory and this typically involves a big performance -hit. However, it doesn't affect intermediate results, so that it is -only partially effective. `Excess precision' is avoided in code like: -.Sp -.Vb 2 -\& a = b + c -\& d = a * e -.Ve -but not in code like: -.Sp -.Vb 1 -\& d = (b + c) * e -.Ve -For another, potentially better, way of controlling the precision, -see \f(CW@ref\fR{Floating-point precision}. -.Ip "\fB\-fforce-mem\fR" 4 -.IX Item "-fforce-mem" -.PD 0 -.Ip "\fB\-fforce-addr\fR" 4 -.IX Item "-fforce-addr" -.PD -Might improve optimization of loops. -.Ip "\fB\-fno-inline\fR" 4 -.IX Item "-fno-inline" -Don't compile statement functions inline. -Might reduce the size of a program unit\-\-\-which might be at -expense of some speed (though it should compile faster). -Note that if you are not optimizing, no functions can be expanded inline. -.Ip "\fB\-ffast-math\fR" 4 -.IX Item "-ffast-math" -Might allow some programs designed to not be too dependent -on \s-1IEEE\s0 behavior for floating-point to run faster, or die trying. -Sets \fB\-funsafe-math-optimizations\fR, and -\&\fB\-fno-trapping-math\fR. -.Ip "\fB\-funsafe-math-optimizations\fR" 4 -.IX Item "-funsafe-math-optimizations" -Allow optimizations that may be give incorrect results -for certain \s-1IEEE\s0 inputs. -.Ip "\fB\-fno-trapping-math\fR" 4 -.IX Item "-fno-trapping-math" -Allow the compiler to assume that floating-point arithmetic -will not generate traps on any inputs. This is useful, for -example, when running a program using \s-1IEEE\s0 \*(L"non-stop\*(R" -floating-point arithmetic. -.Ip "\fB\-fstrength-reduce\fR" 4 -.IX Item "-fstrength-reduce" -Might make some loops run faster. -.Ip "\fB\-frerun-cse-after-loop\fR" 4 -.IX Item "-frerun-cse-after-loop" -.PD 0 -.Ip "\fB\-fexpensive-optimizations\fR" 4 -.IX Item "-fexpensive-optimizations" -.Ip "\fB\-fdelayed-branch\fR" 4 -.IX Item "-fdelayed-branch" -.Ip "\fB\-fschedule-insns\fR" 4 -.IX Item "-fschedule-insns" -.Ip "\fB\-fschedule-insns2\fR" 4 -.IX Item "-fschedule-insns2" -.Ip "\fB\-fcaller-saves\fR" 4 -.IX Item "-fcaller-saves" -.PD -Might improve performance on some code. -.Ip "\fB\-funroll-loops\fR" 4 -.IX Item "-funroll-loops" -Typically improves performance on code using iterative \f(CW\*(C`DO\*(C'\fR loops by -unrolling them and is probably generally appropriate for Fortran, though -it is not turned on at any optimization level. -Note that outer loop unrolling isn't done specifically; decisions about -whether to unroll a loop are made on the basis of its instruction count. -.Sp -Also, no `loop discovery'[1] is done, so only loops written with \f(CW\*(C`DO\*(C'\fR -benefit from loop optimizations, including\-\-\-but not limited -to\-\-\-unrolling. Loops written with \f(CW\*(C`IF\*(C'\fR and \f(CW\*(C`GOTO\*(C'\fR are not -currently recognized as such. This option unrolls only iterative -\&\f(CW\*(C`DO\*(C'\fR loops, not \f(CW\*(C`DO WHILE\*(C'\fR loops. -.Ip "\fB\-funroll-all-loops\fR" 4 -.IX Item "-funroll-all-loops" -Probably improves performance on code using \f(CW\*(C`DO WHILE\*(C'\fR loops by -unrolling them in addition to iterative \f(CW\*(C`DO\*(C'\fR loops. In the absence -of \f(CW\*(C`DO WHILE\*(C'\fR, this option is equivalent to \fB\-funroll-loops\fR -but possibly slower. -.Ip "\fB\-fno-move-all-movables\fR" 4 -.IX Item "-fno-move-all-movables" -.PD 0 -.Ip "\fB\-fno-reduce-all-givs\fR" 4 -.IX Item "-fno-reduce-all-givs" -.Ip "\fB\-fno-rerun-loop-opt\fR" 4 -.IX Item "-fno-rerun-loop-opt" -.PD -In general, the optimizations enabled with these options will lead to -faster code being generated by \s-1GNU\s0 Fortran; hence they are enabled by default -when issuing the \fBg77\fR command. -.Sp -\&\fB\-fmove-all-movables\fR and \fB\-freduce-all-givs\fR will enable -loop optimization to move all loop-invariant index computations in nested -loops over multi-rank array dummy arguments out of these loops. -.Sp -\&\fB\-frerun-loop-opt\fR will move offset calculations resulting -from the fact that Fortran arrays by default have a lower bound of 1 -out of the loops. -.Sp -These three options are intended to be removed someday, once -loop optimization is sufficiently advanced to perform all those -transformations without help from these options. -.Sh "Options Controlling the Preprocessor" -.IX Subsection "Options Controlling the Preprocessor" -These options control the C preprocessor, which is run on each C source -file before actual compilation. -.PP -Some of these options also affect how \fBg77\fR processes the -\&\f(CW\*(C`INCLUDE\*(C'\fR directive. -Since this directive is processed even when preprocessing -is not requested, it is not described in this section. -.PP -However, the \f(CW\*(C`INCLUDE\*(C'\fR directive does not apply -preprocessing to the contents of the included file itself. -.PP -Therefore, any file that contains preprocessor directives -(such as \f(CW\*(C`#include\*(C'\fR, \f(CW\*(C`#define\*(C'\fR, and \f(CW\*(C`#if\*(C'\fR) -must be included via the \f(CW\*(C`#include\*(C'\fR directive, not -via the \f(CW\*(C`INCLUDE\*(C'\fR directive. -Therefore, any file containing preprocessor directives, -if included, is necessarily included by a file that itself -contains preprocessor directives. -.Sh "Options for Directory Search" -.IX Subsection "Options for Directory Search" -These options affect how the \fBcpp\fR preprocessor searches -for files specified via the \f(CW\*(C`#include\*(C'\fR directive. -Therefore, when compiling Fortran programs, they are meaningful -when the preprocessor is used. -.PP -Some of these options also affect how \fBg77\fR searches -for files specified via the \f(CW\*(C`INCLUDE\*(C'\fR directive, -although files included by that directive are not, -themselves, preprocessed. -These options are: -.Ip "\fB\-I-\fR" 4 -.IX Item "-I-" -.PD 0 -.Ip "\fB\-I\fR\fIdir\fR" 4 -.IX Item "-Idir" -.PD -These affect interpretation of the \f(CW\*(C`INCLUDE\*(C'\fR directive -(as well as of the \f(CW\*(C`#include\*(C'\fR directive of the \fBcpp\fR -preprocessor). -.Sp -Note that \fB\-I\fR\fIdir\fR must be specified \fIwithout\fR any -spaces between \fB\-I\fR and the directory name\-\-\-that is, -\&\fB\-Ifoo/bar\fR is valid, but \fB\-I foo/bar\fR -is rejected by the \fBg77\fR compiler (though the preprocessor supports -the latter form). -Also note that the general behavior of \fB\-I\fR and -\&\f(CW\*(C`INCLUDE\*(C'\fR is pretty much the same as of \fB\-I\fR with -\&\f(CW\*(C`#include\*(C'\fR in the \fBcpp\fR preprocessor, with regard to -looking for \fIheader.gcc\fR files and other such things. -.Sh "Options for Code Generation Conventions" -.IX Subsection "Options for Code Generation Conventions" -These machine-independent options control the interface conventions -used in code generation. -.PP -Most of them have both positive and negative forms; the negative form -of \fB\-ffoo\fR would be \fB\-fno-foo\fR. In the table below, only -one of the forms is listed\-\-\-the one which is not the default. You -can figure out the other form by either removing \fBno-\fR or adding -it. -.Ip "\fB\-fno-automatic\fR" 4 -.IX Item "-fno-automatic" -Treat each program unit as if the \f(CW\*(C`SAVE\*(C'\fR statement was specified -for every local variable and array referenced in it. -Does not affect common blocks. -(Some Fortran compilers provide this option under -the name \fB\-static\fR.) -.Ip "\fB\-finit-local-zero\fR" 4 -.IX Item "-finit-local-zero" -Specify that variables and arrays that are local to a program unit -(not in a common block and not passed as an argument) are to be initialized -to binary zeros. -.Sp -Since there is a run-time penalty for initialization of variables -that are not given the \f(CW\*(C`SAVE\*(C'\fR attribute, it might be a -good idea to also use \fB\-fno-automatic\fR with \fB\-finit-local-zero\fR. -.Ip "\fB\-fno-f2c\fR" 4 -.IX Item "-fno-f2c" -Do not generate code designed to be compatible with code generated -by \fBf2c\fR use the \s-1GNU\s0 calling conventions instead. -.Sp -The \fBf2c\fR calling conventions require functions that return -type \f(CW\*(C`REAL(KIND=1)\*(C'\fR to actually return the C type \f(CW\*(C`double\*(C'\fR, -and functions that return type \f(CW\*(C`COMPLEX\*(C'\fR to return the -values via an extra argument in the calling sequence that points -to where to store the return value. -Under the \s-1GNU\s0 calling conventions, such functions simply return -their results as they would in \s-1GNU\s0 C\-\--\f(CW\*(C`REAL(KIND=1)\*(C'\fR functions -return the C type \f(CW\*(C`float\*(C'\fR, and \f(CW\*(C`COMPLEX\*(C'\fR functions -return the \s-1GNU\s0 C type \f(CW\*(C`complex\*(C'\fR (or its \f(CW\*(C`struct\*(C'\fR -equivalent). -.Sp -This does not affect the generation of code that interfaces with the -\&\f(CW\*(C`libg2c\*(C'\fR library. -.Sp -However, because the \f(CW\*(C`libg2c\*(C'\fR library uses \fBf2c\fR -calling conventions, \fBg77\fR rejects attempts to pass -intrinsics implemented by routines in this library as actual -arguments when \fB\-fno-f2c\fR is used, to avoid bugs when -they are actually called by code expecting the \s-1GNU\s0 calling -conventions to work. -.Sp -For example, \fB\s-1INTRINSIC\s0 \s-1ABS\s0;CALL FOO(\s-1ABS\s0)\fR is -rejected when \fB\-fno-f2c\fR is in force. -(Future versions of the \fBg77\fR run-time library might -offer routines that provide GNU-callable versions of the -routines that implement the \fBf2c\fR intrinsics -that may be passed as actual arguments, so that -valid programs need not be rejected when \fB\-fno-f2c\fR -is used.) -.Sp -\&\fBCaution:\fR If \fB\-fno-f2c\fR is used when compiling any -source file used in a program, it must be used when compiling -\&\fIall\fR Fortran source files used in that program. -.Ip "\fB\-ff2c-library\fR" 4 -.IX Item "-ff2c-library" -Specify that use of \f(CW\*(C`libg2c\*(C'\fR (or the original \f(CW\*(C`libf2c\*(C'\fR) -is required. -This is the default for the current version of \fBg77\fR -.Sp -Currently it is not -valid to specify \fB\-fno-f2c-library\fR. -This option is provided so users can specify it in shell -scripts that build programs and libraries that require the -\&\f(CW\*(C`libf2c\*(C'\fR library, even when being compiled by future -versions of \fBg77\fR that might otherwise default to -generating code for an incompatible library. -.Ip "\fB\-fno-underscoring\fR" 4 -.IX Item "-fno-underscoring" -Do not transform names of entities specified in the Fortran -source file by appending underscores to them. -.Sp -With \fB\-funderscoring\fR in effect, \fBg77\fR appends two underscores -to names with underscores and one underscore to external names with -no underscores. (\fBg77\fR also appends two underscores to internal -names with underscores to avoid naming collisions with external names. -The \fB\-fno-second-underscore\fR option disables appending of the -second underscore in all cases.) -.Sp -This is done to ensure compatibility with code produced by many -\&\s-1UNIX\s0 Fortran compilers, including \fBf2c\fR which perform the -same transformations. -.Sp -Use of \fB\-fno-underscoring\fR is not recommended unless you are -experimenting with issues such as integration of (\s-1GNU\s0) Fortran into -existing system environments (vis-a-vis existing libraries, tools, and -so on). -.Sp -For example, with \fB\-funderscoring\fR, and assuming other defaults like -\&\fB\-fcase-lower\fR and that \fB\f(BIj()\fB\fR and \fB\f(BImax_count()\fB\fR are -external functions while \fBmy_var\fR and \fBlvar\fR are local variables, -a statement like -.Sp -.Vb 1 -\& I = J() + MAX_COUNT (MY_VAR, LVAR) -.Ve -is implemented as something akin to: -.Sp -.Vb 1 -\& i = j_() + max_count__(&my_var__, &lvar); -.Ve -With \fB\-fno-underscoring\fR, the same statement is implemented as: -.Sp -.Vb 1 -\& i = j() + max_count(&my_var, &lvar); -.Ve -Use of \fB\-fno-underscoring\fR allows direct specification of -user-defined names while debugging and when interfacing \fBg77\fR -code with other languages. -.Sp -Note that just because the names match does \fInot\fR mean that the -interface implemented by \fBg77\fR for an external name matches the -interface implemented by some other language for that same name. -That is, getting code produced by \fBg77\fR to link to code produced -by some other compiler using this or any other method can be only a -small part of the overall solution\-\-\-getting the code generated by -both compilers to agree on issues other than naming can require -significant effort, and, unlike naming disagreements, linkers normally -cannot detect disagreements in these other areas. -.Sp -Also, note that with \fB\-fno-underscoring\fR, the lack of appended -underscores introduces the very real possibility that a user-defined -external name will conflict with a name in a system library, which -could make finding unresolved-reference bugs quite difficult in some -cases\-\-\-they might occur at program run time, and show up only as -buggy behavior at run time. -.Sp -In future versions of \fBg77\fR we hope to improve naming and linking -issues so that debugging always involves using the names as they appear -in the source, even if the names as seen by the linker are mangled to -prevent accidental linking between procedures with incompatible -interfaces. -.Ip "\fB\-fno-second-underscore\fR" 4 -.IX Item "-fno-second-underscore" -Do not append a second underscore to names of entities specified -in the Fortran source file. -.Sp -This option has no effect if \fB\-fno-underscoring\fR is -in effect. -.Sp -Otherwise, with this option, an external name such as \fB\s-1MAX_COUNT\s0\fR -is implemented as a reference to the link-time external symbol -\&\fBmax_count_\fR, instead of \fBmax_count_\|_\fR. -.Ip "\fB\-fno-ident\fR" 4 -.IX Item "-fno-ident" -Ignore the \fB#ident\fR directive. -.Ip "\fB\-fzeros\fR" 4 -.IX Item "-fzeros" -Treat initial values of zero as if they were any other value. -.Sp -As of version 0.5.18, \fBg77\fR normally treats \f(CW\*(C`DATA\*(C'\fR and -other statements that are used to specify initial values of zero -for variables and arrays as if no values were actually specified, -in the sense that no diagnostics regarding multiple initializations -are produced. -.Sp -This is done to speed up compiling of programs that initialize -large arrays to zeros. -.Sp -Use \fB\-fzeros\fR to revert to the simpler, slower behavior -that can catch multiple initializations by keeping track of -all initializations, zero or otherwise. -.Sp -\&\fICaution:\fR Future versions of \fBg77\fR might disregard this option -(and its negative form, the default) or interpret it somewhat -differently. -The interpretation changes will affect only non-standard -programs; standard-conforming programs should not be affected. -.Ip "\fB\-femulate-complex\fR" 4 -.IX Item "-femulate-complex" -Implement \f(CW\*(C`COMPLEX\*(C'\fR arithmetic via emulation, -instead of using the facilities of -the \fBgcc\fR back end that provide direct support of -\&\f(CW\*(C`complex\*(C'\fR arithmetic. -.Sp -(\fBgcc\fR had some bugs in its back-end support -for \f(CW\*(C`complex\*(C'\fR arithmetic, due primarily to the support not being -completed as of version 2.8.1 and \f(CW\*(C`egcs\*(C'\fR 1.1.2.) -.Sp -Use \fB\-femulate-complex\fR if you suspect code-generation bugs, -or experience compiler crashes, -that might result from \fBg77\fR using the \f(CW\*(C`COMPLEX\*(C'\fR support -in the \fBgcc\fR back end. -If using that option fixes the bugs or crashes you are seeing, -that indicates a likely \fBg77\fR bugs -(though, all compiler crashes are considered bugs), -so, please report it. -(Note that the known bugs, now believed fixed, produced compiler crashes -rather than causing the generation of incorrect code.) -.Sp -Use of this option should not affect how Fortran code compiled -by \fBg77\fR works in terms of its interfaces to other code, -e.g. that compiled by \fBf2c\fR -.Sp -As of \s-1GCC\s0 version 3.0, this option is not necessary anymore. -.Sp -\&\fICaution:\fR Future versions of \fBg77\fR might ignore both forms -of this option. -.Ip "\fB\-falias-check\fR" 4 -.IX Item "-falias-check" -.PD 0 -.Ip "\fB\-fargument-alias\fR" 4 -.IX Item "-fargument-alias" -.Ip "\fB\-fargument-noalias\fR" 4 -.IX Item "-fargument-noalias" -.Ip "\fB\-fno-argument-noalias-global\fR" 4 -.IX Item "-fno-argument-noalias-global" -.PD -\&\fIVersion info:\fR -These options are not supported by -versions of \fBg77\fR based on \fBgcc\fR version 2.8. -.Sp -These options specify to what degree aliasing -(overlap) -is permitted between -arguments (passed as pointers) and \f(CW\*(C`COMMON\*(C'\fR (external, or -public) storage. -.Sp -The default for Fortran code, as mandated by the \s-1FORTRAN\s0 77 and -Fortran 90 standards, is \fB\-fargument-noalias-global\fR. -The default for code written in the C language family is -\&\fB\-fargument-alias\fR. -.Sp -Note that, on some systems, compiling with \fB\-fforce-addr\fR in -effect can produce more optimal code when the default aliasing -options are in effect (and when optimization is enabled). -.Ip "\fB\-fno-globals\fR" 4 -.IX Item "-fno-globals" -Disable diagnostics about inter-procedural -analysis problems, such as disagreements about the -type of a function or a procedure's argument, -that might cause a compiler crash when attempting -to inline a reference to a procedure within a -program unit. -(The diagnostics themselves are still produced, but -as warnings, unless \fB\-Wno-globals\fR is specified, -in which case no relevant diagnostics are produced.) -.Sp -Further, this option disables such inlining, to -avoid compiler crashes resulting from incorrect -code that would otherwise be diagnosed. -.Sp -As such, this option might be quite useful when -compiling existing, ``working'' code that happens -to have a few bugs that do not generally show themselves, -but which \fBg77\fR diagnoses. -.Sp -Use of this option therefore has the effect of -instructing \fBg77\fR to behave more like it did -up through version 0.5.19.1, when it paid little or -no attention to disagreements between program units -about a procedure's type and argument information, -and when it performed no inlining of procedures -(except statement functions). -.Sp -Without this option, \fBg77\fR defaults to performing -the potentially inlining procedures as it started doing -in version 0.5.20, but as of version 0.5.21, it also -diagnoses disagreements that might cause such inlining -to crash the compiler as (fatal) errors, -and warns about similar disagreements -that are currently believed to not -likely to result in the compiler later crashing -or producing incorrect code. -.Ip "\fB\-fflatten-arrays\fR" 4 -.IX Item "-fflatten-arrays" -Use back end's C-like constructs -(pointer plus offset) -instead of its \f(CW\*(C`ARRAY_REF\*(C'\fR construct -to handle all array references. -.Sp -\&\fINote:\fR This option is not supported. -It is intended for use only by \fBg77\fR developers, -to evaluate code-generation issues. -It might be removed at any time. -.Ip "\fB\-fbounds-check\fR" 4 -.IX Item "-fbounds-check" -.PD 0 -.Ip "\fB\-ffortran-bounds-check\fR" 4 -.IX Item "-ffortran-bounds-check" -.PD -Enable generation of run-time checks for array subscripts -and substring start and end points -against the (locally) declared minimum and maximum values. -.Sp -The current implementation uses the \f(CW\*(C`libf2c\*(C'\fR -library routine \f(CW\*(C`s_rnge\*(C'\fR to print the diagnostic. -.Sp -However, whereas \fBf2c\fR generates a single check per -reference for a multi-dimensional array, of the computed -offset against the valid offset range (0 through the size of the array), -\&\fBg77\fR generates a single check per \fIsubscript\fR expression. -This catches some cases of potential bugs that \fBf2c\fR does not, -such as references to below the beginning of an assumed-size array. -.Sp -\&\fBg77\fR also generates checks for \f(CW\*(C`CHARACTER\*(C'\fR substring references, -something \fBf2c\fR currently does not do. -.Sp -Use the new \fB\-ffortran-bounds-check\fR option -to specify bounds-checking for only the Fortran code you are compiling, -not necessarily for code written in other languages. -.Sp -\&\fINote:\fR To provide more detailed information on the offending subscript, -\&\fBg77\fR provides the \f(CW\*(C`libg2c\*(C'\fR run-time library routine \f(CW\*(C`s_rnge\*(C'\fR -with somewhat differently-formatted information. -Here's a sample diagnostic: -.Sp -.Vb 3 -\& Subscript out of range on file line 4, procedure rnge.f/bf. -\& Attempt to access the -6-th element of variable b[subscript-2-of-2]. -\& Aborted -.Ve -The above message indicates that the offending source line is -line 4 of the file \fIrnge.f\fR, -within the program unit (or statement function) named \fBbf\fR. -The offended array is named \fBb\fR. -The offended array dimension is the second for a two-dimensional array, -and the offending, computed subscript expression was \fB\-6\fR. -.Sp -For a \f(CW\*(C`CHARACTER\*(C'\fR substring reference, the second line has -this appearance: -.Sp -.Vb 1 -\& Attempt to access the 11-th element of variable a[start-substring]. -.Ve -This indicates that the offended \f(CW\*(C`CHARACTER\*(C'\fR variable or array -is named \fBa\fR, -the offended substring position is the starting (leftmost) position, -and the offending substring expression is \fB11\fR. -.Sp -(Though the verbage of \f(CW\*(C`s_rnge\*(C'\fR is not ideal -for the purpose of the \fBg77\fR compiler, -the above information should provide adequate diagnostic abilities -to it users.) -.PP -Some of these do \fInot\fR work when compiling programs written in Fortran: -.Ip "\fB\-fpcc-struct-return\fR" 4 -.IX Item "-fpcc-struct-return" -.PD 0 -.Ip "\fB\-freg-struct-return\fR" 4 -.IX Item "-freg-struct-return" -.PD -You should not use these except strictly the same way as you -used them to build the version of \f(CW\*(C`libg2c\*(C'\fR with which -you will be linking all code compiled by \fBg77\fR with the -same option. -.Ip "\fB\-fshort-double\fR" 4 -.IX Item "-fshort-double" -This probably either has no effect on Fortran programs, or -makes them act loopy. -.Ip "\fB\-fno-common\fR" 4 -.IX Item "-fno-common" -Do not use this when compiling Fortran programs, -or there will be Trouble. -.Ip "\fB\-fpack-struct\fR" 4 -.IX Item "-fpack-struct" -This probably will break any calls to the \f(CW\*(C`libg2c\*(C'\fR library, -at the very least, even if it is built with the same option. -.SH "ENVIRONMENT" -.IX Header "ENVIRONMENT" -\&\s-1GNU\s0 Fortran currently does not make use of any environment -variables to control its operation above and beyond those -that affect the operation of \fBgcc\fR. -.SH "BUGS" -.IX Header "BUGS" -For instructions on reporting bugs, see -<\fBhttp://gcc.gnu.org/bugs.html\fR>. Use of the \fBgccbug\fR -script to report bugs is recommended. -.SH "FOOTNOTES" -.IX Header "FOOTNOTES" -.Ip "1." 4 -\&\fIloop discovery\fR refers to the -process by which a compiler, or indeed any reader of a program, -determines which portions of the program are more likely to be executed -repeatedly as it is being run. Such discovery typically is done early -when compiling using optimization techniques, so the ``discovered'' -loops get more attention\-\-\-and more run-time resources, such as -registers\-\-\-from the compiler. It is easy to ``discover'' loops that are -constructed out of looping constructs in the language -(such as Fortran's \f(CW\*(C`DO\*(C'\fR). For some programs, ``discovering'' loops -constructed out of lower-level constructs (such as \f(CW\*(C`IF\*(C'\fR and -\&\f(CW\*(C`GOTO\*(C'\fR) can lead to generation of more optimal code -than otherwise. -.SH "SEE ALSO" -.IX Header "SEE ALSO" -\&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7), -\&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIadb\fR\|(1), \fIdbx\fR\|(1), \fIsdb\fR\|(1) -and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIg77\fR, \fIas\fR, -\&\fIld\fR, \fIbinutils\fR and \fIgdb\fR. -.SH "AUTHOR" -.IX Header "AUTHOR" -See the Info entry for \fBg77\fR for contributors to \s-1GCC\s0 and G77. -.SH "COPYRIGHT" -.IX Header "COPYRIGHT" -Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002 -Free Software Foundation, Inc. -.PP -Permission is granted to copy, distribute and/or modify this document -under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the -Invariant Sections being ``\s-1GNU\s0 General Public License'' and ``Funding -Free Software'', the Front-Cover texts being (a) (see below), and with -the Back-Cover Texts being (b) (see below). A copy of the license is -included in the \fIgfdl\fR\|(7) man page. -.PP -(a) The \s-1FSF\s0's Front-Cover Text is: -.PP -.Vb 1 -\& A GNU Manual -.Ve -(b) The \s-1FSF\s0's Back-Cover Text is: -.PP -.Vb 3 -\& You have freedom to copy and modify this GNU Manual, like GNU -\& software. Copies published by the Free Software Foundation raise -\& funds for GNU development. -.Ve