X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fdoc%2Finvoke.texi;h=237f894ab824c1e15c7e3bbc4acb5a988fbd47bb;hp=f6610019802c8b7844c3694129725f6b1598e3fa;hb=21cd990df370bfeb0ed410b024a41176014959ad;hpb=54564d01b93944df0c0b34daf82e41280e8e3435 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index f6610019802..237f894ab82 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -190,7 +190,7 @@ in the following sections. -fno-nonansi-builtins -fno-operator-names @gol -fno-optional-diags -fpermissive @gol -fno-pretty-templates @gol --frepo -fno-rtti -fstats -ftemplate-depth-@var{n} @gol +-frepo -fno-rtti -fstats -ftemplate-depth=@var{n} @gol -fno-threadsafe-statics -fuse-cxa-atexit -fno-weak -nostdinc++ @gol -fno-default-inline -fvisibility-inlines-hidden @gol -fvisibility-ms-compat @gol @@ -232,7 +232,7 @@ Objective-C and Objective-C++ Dialects}. -Wno-attributes -Wno-builtin-macro-redefined @gol -Wc++-compat -Wc++0x-compat -Wcast-align -Wcast-qual @gol -Wchar-subscripts -Wclobbered -Wcomment @gol --Wconversion -Wcoverage-mismatch -Wno-deprecated @gol +-Wconversion -Wcoverage-mismatch -Wcpp -Wno-deprecated @gol -Wno-deprecated-declarations -Wdisabled-optimization @gol -Wno-div-by-zero -Wempty-body -Wenum-compare -Wno-endif-labels @gol -Werror -Werror=* @gol @@ -257,12 +257,13 @@ Objective-C and Objective-C++ Dialects}. -Wsign-compare -Wsign-conversion -Wstack-protector @gol -Wstrict-aliasing -Wstrict-aliasing=n @gol -Wstrict-overflow -Wstrict-overflow=@var{n} @gol +-Wsuggest-attribute=@r{[}const@r{|}pure@r{]} @gol -Wswitch -Wswitch-default -Wswitch-enum -Wsync-nand @gol -Wsystem-headers -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized @gol -Wunknown-pragmas -Wno-pragmas @gol -Wunsuffixed-float-constants -Wunused -Wunused-function @gol -Wunused-label -Wunused-parameter -Wno-unused-result -Wunused-value -Wunused-variable @gol --Wvariadic-macros -Wvla @gol +-Wunused-but-set-parameter -Wunused-but-set-variable -Wvariadic-macros -Wvla @gol -Wvolatile-register-var -Wwrite-strings} @item C and Objective-C-only Warning Options @@ -312,7 +313,7 @@ Objective-C and Objective-C++ Dialects}. -frandom-seed=@var{string} -fsched-verbose=@var{n} @gol -fsel-sched-verbose -fsel-sched-dump-cfg -fsel-sched-pipelining-verbose @gol -ftest-coverage -ftime-report -fvar-tracking @gol --fvar-tracking-assigments -fvar-tracking-assignments-toggle @gol +-fvar-tracking-assignments -fvar-tracking-assignments-toggle @gol -g -g@var{level} -gtoggle -gcoff -gdwarf-@var{version} @gol -ggdb -gstabs -gstabs+ -gstrict-dwarf -gno-strict-dwarf @gol -gvms -gxcoff -gxcoff+ @gol @@ -344,7 +345,7 @@ Objective-C and Objective-C++ Dialects}. -fgcse-sm -fif-conversion -fif-conversion2 -findirect-inlining @gol -finline-functions -finline-functions-called-once -finline-limit=@var{n} @gol -finline-small-functions -fipa-cp -fipa-cp-clone -fipa-matrix-reorg -fipa-pta @gol --fipa-pure-const -fipa-reference -fipa-struct-reorg @gol +-fipa-profile -fipa-pure-const -fipa-reference -fipa-struct-reorg @gol -fipa-type-escape -fira-algorithm=@var{algorithm} @gol -fira-region=@var{region} -fira-coalesce @gol -fira-loop-pressure -fno-ira-share-save-slots @gol @@ -425,13 +426,9 @@ Objective-C and Objective-C++ Dialects}. @item Directory Options @xref{Directory Options,,Options for Directory Search}. -@gccoptlist{-B@var{prefix} -I@var{dir} -iquote@var{dir} -L@var{dir} --specs=@var{file} -I- --sysroot=@var{dir}} - -@item Target Options -@c I wrote this xref this way to avoid overfull hbox. -- rms -@xref{Target Options}. -@gccoptlist{-V @var{version} -b @var{machine}} +@gccoptlist{-B@var{prefix} -I@var{dir} -iplugindir=@var{dir}} +-iquote@var{dir} -L@var{dir} -specs=@var{file} -I- +--sysroot=@var{dir} @item Machine Dependent Options @xref{Submodel Options,,Hardware Models and Configurations}. @@ -830,7 +827,7 @@ See RS/6000 and PowerPC Options. -mprefergot -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol -mdivsi3_libfunc=@var{name} -mfixed-range=@var{register-range} @gol -madjust-unroll -mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol --minvalid-symbols} +-maccumulate-outgoing-args -minvalid-symbols} @emph{SPARC Options} @gccoptlist{-mcpu=@var{cpu-type} @gol @@ -916,8 +913,7 @@ See S/390 and zSeries Options. -fshort-double -fshort-wchar @gol -fverbose-asm -fpack-struct[=@var{n}] -fstack-check @gol -fstack-limit-register=@var{reg} -fstack-limit-symbol=@var{sym} @gol --fno-stack-limit -fargument-alias -fargument-noalias @gol --fargument-noalias-global -fargument-noalias-anything @gol +-fno-stack-limit @gol -fleading-underscore -ftls-model=@var{model} @gol -ftrapv -fwrapv -fbounds-check @gol -fvisibility} @@ -1425,7 +1421,7 @@ accepts: @cindex ISO support @item -ansi @opindex ansi -In C mode, this is equivalent to @samp{-std=c89}. In C++ mode, it is +In C mode, this is equivalent to @samp{-std=c90}. In C++ mode, it is equivalent to @samp{-std=c++98}. This turns off certain features of GCC that are incompatible with ISO @@ -1467,12 +1463,12 @@ Determine the language standard. @xref{Standards,,Language Standards Supported by GCC}, for details of these standard versions. This option is currently only supported when compiling C or C++. -The compiler can accept several base standards, such as @samp{c89} or +The compiler can accept several base standards, such as @samp{c90} or @samp{c++98}, and GNU dialects of those standards, such as -@samp{gnu89} or @samp{gnu++98}. By specifying a base standard, the +@samp{gnu90} or @samp{gnu++98}. By specifying a base standard, the compiler will accept all programs following that standard and those using GNU extensions that do not contradict it. For example, -@samp{-std=c89} turns off certain features of GCC that are +@samp{-std=c90} turns off certain features of GCC that are incompatible with ISO C90, such as the @code{asm} and @code{typeof} keywords, but not other GNU extensions that do not have a meaning in ISO C90, such as omitting the middle term of a @code{?:} @@ -1482,13 +1478,14 @@ those features change the meaning of the base standard and some strict-conforming programs may be rejected. The particular standard is used by @option{-pedantic} to identify which features are GNU extensions given that version of the standard. For example -@samp{-std=gnu89 -pedantic} would warn about C++ style @samp{//} +@samp{-std=gnu90 -pedantic} would warn about C++ style @samp{//} comments, while @samp{-std=gnu99 -pedantic} would not. A value for this option must be provided; possible values are @table @samp -@item c89 +@item c90 +@itemx c89 @itemx iso9899:1990 Support all ISO C90 programs (certain GNU extensions that conflict with ISO C90 are disabled). Same as @option{-ansi} for C code. @@ -1504,7 +1501,14 @@ ISO C99. Note that this standard is not yet fully supported; see @w{@uref{http://gcc.gnu.org/c99status.html}} for more information. The names @samp{c9x} and @samp{iso9899:199x} are deprecated. -@item gnu89 +@item c1x +ISO C1X, the draft of the next revision of the ISO C standard. +Support is limited and experimental and features enabled by this +option may be changed or removed if changed in or removed from the +standard draft. + +@item gnu90 +@itemx gnu89 GNU dialect of ISO C90 (including some C99 features). This is the default for C code. @@ -1513,6 +1517,11 @@ is the default for C code. GNU dialect of ISO C99. When ISO C99 is fully implemented in GCC, this will become the default. The name @samp{gnu9x} is deprecated. +@item gnu1x +GNU dialect of ISO C1X. Support is limited and experimental and +features enabled by this option may be changed or removed if changed +in or removed from the standard draft. + @item c++98 The 1998 ISO C++ standard plus amendments. Same as @option{-ansi} for C++ code. @@ -1547,7 +1556,8 @@ C99 mode. Using this option is roughly equivalent to adding the The option @option{-fno-gnu89-inline} explicitly tells GCC to use the C99 semantics for @code{inline} when in C99 or gnu99 mode (i.e., it specifies the default behavior). This option was first supported in -GCC 4.3. This option is not supported in C89 or gnu89 mode. +GCC 4.3. This option is not supported in @option{-std=c90} or +@option{-std=gnu90} mode. The preprocessor macros @code{__GNUC_GNU_INLINE__} and @code{__GNUC_STDC_INLINE__} may be used to check which semantics are @@ -1780,6 +1790,13 @@ are fixed. The default is version 2. +Version 3 corrects an error in mangling a constant address as a +template argument. + +Version 4 implements a standard mangling for vector types. + +See also @option{-Wabi}. + @item -fno-access-control @opindex fno-access-control Turn off all access checking. This switch is mainly useful for working @@ -1965,7 +1982,16 @@ unambiguous base classes. Emit statistics about front-end processing at the end of the compilation. This information is generally only useful to the G++ development team. -@item -ftemplate-depth-@var{n} +@item -fstrict-enums +@opindex fstrict-enums +Allow the compiler to optimize using the assumption that a value of +enumeration type can only be one of the values of the enumeration (as +defined in the C++ standard; basically, a value which can be +represented in the minimum number of bits needed to represent all the +enumerators). This assumption may not be valid if the program uses a +cast to convert an arbitrary integer value to the enumeration type. + +@item -ftemplate-depth=@var{n} @opindex ftemplate-depth Set the maximum instantiation depth for template classes to @var{n}. A limit on the template instantiation depth is needed to detect @@ -2096,7 +2122,30 @@ You should rewrite your code to avoid these warnings if you are concerned about the fact that code generated by G++ may not be binary compatible with code generated by other compilers. -The known incompatibilities at this point include: +The known incompatibilities in @option{-fabi-version=2} (the default) include: + +@itemize @bullet + +@item +A template with a non-type template parameter of reference type is +mangled incorrectly: +@smallexample +extern int N; +template struct S @{@}; +void n (S) @{2@} +@end smallexample + +This is fixed in @option{-fabi-version=3}. + +@item +SIMD vector types declared using @code{__attribute ((vector_size))} are +mangled in a non-standard way that does not allow for overloading of +functions taking vectors of different sizes. + +The mangling is changed in @option{-fabi-version=4}. +@end itemize + +The known incompatibilities in @option{-fabi-version=1} include: @itemize @bullet @@ -2706,12 +2755,13 @@ Warn if feedback profiles do not match when using the If a source file was changed between @option{-fprofile-gen} and @option{-fprofile-use}, the files with the profile feedback can fail to match the source file and GCC can not use the profile feedback -information. By default, GCC emits an error message in this case. -The option @option{-Wcoverage-mismatch} emits a warning instead of an -error. GCC does not use appropriate feedback profiles, so using this -option can result in poorly optimized code. This option is useful -only in the case of very minor changes such as bug fixes to an -existing code-base. +information. By default, this warning is enabled and is treated as an +error. @option{-Wno-coverage-mismatch} can be used to disable the +warning or @option{-Wno-error=coverage-mismatch} can be used to +disable the error. Disable the error for this warning can result in +poorly optimized code, so disabling the error is useful only in the +case of very minor changes such as bug fixes to an existing code-base. +Completely disabling the warning is not recommended. @end table @@ -2779,6 +2829,15 @@ two forms, whichever is not the default. For further, language-specific options also refer to @ref{C++ Dialect Options} and @ref{Objective-C and Objective-C++ Dialect Options}. +When an unrecognized warning label is requested (e.g., +@option{-Wunknown-warning}), GCC will emit a diagnostic stating +that the option is not recognized. However, if the @samp{-Wno-} form +is used, the behavior is slightly different: No diagnostic will be +produced for @option{-Wno-unknown-warning} unless other diagnostics +are being produced. This allows the use of new @option{-Wno-} options +with old compilers, but if something goes wrong, the compiler will +warn that an unrecognized option was used. + @table @gcctabopt @item -pedantic @opindex pedantic @@ -2812,7 +2871,7 @@ be quite different from @option{-pedantic}. We don't have plans to support such a feature in the near future. Where the standard specified with @option{-std} represents a GNU -extended dialect of C, such as @samp{gnu89} or @samp{gnu99}, there is a +extended dialect of C, such as @samp{gnu90} or @samp{gnu99}, there is a corresponding @dfn{base standard}, the version of ISO C on which the GNU extended dialect is based. Warnings from @option{-pedantic} are given where they are required by the base standard. (It would not make sense @@ -2894,7 +2953,8 @@ name is still supported, but the newer name is more descriptive.) -Wsign-compare @gol -Wtype-limits @gol -Wuninitialized @gol --Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)} @gol +-Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)} @gol +-Wunused-but-set-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)} @gol } The option @option{-Wextra} also prints warning messages for the @@ -2941,6 +3001,11 @@ Warn whenever a comment-start sequence @samp{/*} appears in a @samp{/*} comment, or whenever a Backslash-Newline appears in a @samp{//} comment. This warning is enabled by @option{-Wall}. +@item -Wno-cpp \ +@r{(C, Objective-C, C++, Objective-C++ and Fortran only)} + +Suppress warning messages emitted by @code{#warning} directives. + @item -Wformat @opindex Wformat @opindex Wno-format @@ -3284,6 +3349,31 @@ Warn if any trigraphs are encountered that might change the meaning of the program (trigraphs within comments are not warned about). This warning is enabled by @option{-Wall}. +@item -Wunused-but-set-parameter +@opindex Wunused-but-set-parameter +@opindex Wno-unused-but-set-parameter +Warn whenever a function parameter is assigned to, but otherwise unused +(aside from its declaration). + +To suppress this warning use the @samp{unused} attribute +(@pxref{Variable Attributes}). + +This warning is also enabled by @option{-Wunused} together with +@option{-Wextra}. + +@item -Wunused-but-set-variable +@opindex Wunused-but-set-variable +@opindex Wno-unused-but-set-variable +Warn whenever a local variable is assigned to, but otherwise unused +(aside from its declaration). +This warning is enabled by @option{-Wall}. + +To suppress this warning use the @samp{unused} attribute +(@pxref{Variable Attributes}). + +This warning is also enabled by @option{-Wunused}, which is enabled +by @option{-Wall}. + @item -Wunused-function @opindex Wunused-function @opindex Wno-unused-function @@ -3481,7 +3571,7 @@ incomplete types. Runs in the frontend only. Level 3 (default for @option{-Wstrict-aliasing}): Should have very few false positives and few false negatives. Slightly slower than levels 1 or 2 when optimization is enabled. -Takes care of the common punn+dereference pattern in the frontend: +Takes care of the common pun+dereference pattern in the frontend: @code{*(int*)&some_float}. If optimization is enabled, it also runs in the backend, where it deals with multiple statement cases using flow-sensitive points-to information. @@ -3542,11 +3632,36 @@ comparisons, so this warning level will give a very large number of false positives. @end table +@item -Wsuggest-attribute=@r{[}const@r{|}pure@r{]} +@opindex Wsuggest-attribute= +@opindex Wno-suggest-attribute= +Warn for cases where adding an attribute may be beneficial. The +attributes currently supported are listed below. + +@table @gcctabopt +@item -Wsuggest-attribute=pure +@itemx -Wsuggest-attribute=const +@opindex Wsuggest-attribute=pure +@opindex Wno-suggest-attribute=pure +@opindex Wsuggest-attribute=const +@opindex Wno-suggest-attribute=const + +Warn about functions which might be candidates for attributes +@code{pure} or @code{const}. The compiler only warns for functions +visible in other compilation units or if it cannot prove that the +function returns normally. A function returns normally if it doesn't +contain an infinite loop nor returns abnormally by throwing, calling +@code{abort()} or trapping. This analysis requires option +@option{-fipa-pure-const}, which is enabled by default at @option{-O} +and higher. Higher optimization levels improve the accuracy of the +analysis. +@end table + @item -Warray-bounds @opindex Wno-array-bounds @opindex Warray-bounds This option is only active when @option{-ftree-vrp} is active -(default for -O2 and above). It warns about subscripts to arrays +(default for @option{-O2} and above). It warns about subscripts to arrays that are always out of bounds. This warning is enabled by @option{-Wall}. @item -Wno-div-by-zero @@ -3844,7 +3959,7 @@ reference to them. Warnings about conversions between signed and unsigned integers are disabled by default in C++ unless @option{-Wsign-conversion} is explicitly enabled. -@item -Wno-conversion-null @r{(C++)} +@item -Wno-conversion-null @r{(C++ and Objective-C++ only)} @opindex Wconversion-null @opindex Wno-conversion-null Do not warn for conversions between @code{NULL} and non-pointer @@ -4226,11 +4341,13 @@ warning about it. The restrictions on @samp{offsetof} may be relaxed in a future version of the C++ standard. -@item -Wno-int-to-pointer-cast @r{(C and Objective-C only)} +@item -Wno-int-to-pointer-cast @opindex Wno-int-to-pointer-cast @opindex Wint-to-pointer-cast Suppress warnings from casts to pointer type of an integer of a -different size. +different size. In C++, casting to a pointer type of smaller size is +an error. @option{Wint-to-pointer-cast} is enabled by default. + @item -Wno-pointer-to-int-cast @r{(C and Objective-C only)} @opindex Wno-pointer-to-int-cast @@ -4312,7 +4429,7 @@ standard's minimum limit, but very portable programs should avoid using longer strings. The limit applies @emph{after} string constant concatenation, and does -not count the trailing NUL@. In C89, the limit was 509 characters; in +not count the trailing NUL@. In C90, the limit was 509 characters; in C99, it was raised to 4095. C++98 does not specify a normative minimum maximum, so we do not diagnose overlength strings in C++@. @@ -5681,6 +5798,7 @@ compilation time. -fif-conversion2 @gol -fif-conversion @gol -fipa-pure-const @gol +-fipa-profile @gol -fipa-reference @gol -fmerge-constants -fsplit-wide-types @gol @@ -5925,7 +6043,7 @@ release to an another. In C, emit @code{static} functions that are declared @code{inline} into the object file, even if the function has been inlined into all of its callers. This switch does not affect functions using the -@code{extern inline} extension in GNU C89@. In C++, emit any and all +@code{extern inline} extension in GNU C90@. In C++, emit any and all inline functions into the object file. @item -fkeep-static-consts @@ -6516,8 +6634,19 @@ With this flag, the program debug info reflects a new structure layout. @item -fipa-pta @opindex fipa-pta -Perform interprocedural pointer analysis. This option is experimental -and does not affect generated code. +Perform interprocedural pointer analysis and interprocedural modification +and reference analysis. This option can cause excessive memory and +compile-time usage on large compilation units. It is not enabled by +default at any optimization level. + +@item -fipa-profile +@opindex fipa-profile +Perform interprocedural profile propagation. The functions called only from +cold functions are marked as cold. Also functions executed once (such as +@code{cold}, @code{noreturn}, static constructors or destructors) are identified. Cold +functions and loop less parts of functions executed once are then optimized for +size. +Enabled by default at @option{-O} and higher. @item -fipa-cp @opindex fipa-cp @@ -6642,7 +6771,9 @@ Graphite loop transformation infrastructure. Perform loop strip mining transformations on loops. Strip mining splits a loop into two nested loops. The outer loop has strides equal to the strip size and the inner loop has strides of the -original loop within a strip. For example, given a loop like: +original loop within a strip. The strip length can be changed +using the @option{loop-block-tile-size} parameter. For example, +given a loop like: @smallexample DO I = 1, N A(I) = A(I) + C @@ -6650,8 +6781,8 @@ ENDDO @end smallexample loop strip mining will transform the loop as if the user had written: @smallexample -DO II = 1, N, 4 - DO I = II, min (II + 3, N) +DO II = 1, N, 51 + DO I = II, min (II + 50, N) A(I) = A(I) + C ENDDO ENDDO @@ -6664,7 +6795,9 @@ enable the Graphite loop transformation infrastructure. @item -floop-block Perform loop blocking transformations on loops. Blocking strip mines each loop in the loop nest such that the memory accesses of the -element loops fit inside caches. For example, given a loop like: +element loops fit inside caches. The strip length can be changed +using the @option{loop-block-tile-size} parameter. For example, given +a loop like: @smallexample DO I = 1, N DO J = 1, M @@ -6674,10 +6807,10 @@ ENDDO @end smallexample loop blocking will transform the loop as if the user had written: @smallexample -DO II = 1, N, 64 - DO JJ = 1, M, 64 - DO I = II, min (II + 63, N) - DO J = JJ, min (JJ + 63, M) +DO II = 1, N, 51 + DO JJ = 1, M, 51 + DO I = II, min (II + 50, N) + DO J = JJ, min (JJ + 50, M) A(J, I) = B(I) + C(J) ENDDO ENDDO @@ -7257,6 +7390,11 @@ regular (non-LTO) compilation. This means that if your build process was mixing languages before, all you need to add is @option{-flto} to all the compile and link commands. +If LTO encounters objects with C linkage declared with incompatible +types in separate translation units to be linked together (undefined +behavior according to ISO C99 6.2.7), a non-fatal diagnostic may be +issued. The behavior is still undefined at runtime. + If object files containing GIMPLE bytecode are stored in a library archive, say @file{libfoo.a}, it is possible to extract and use them in an LTO link if you are using @command{gold} as the linker (which, @@ -8061,6 +8199,9 @@ The maximum number of insns of a completely peeled loop. @item max-completely-peel-times The maximum number of iterations of a loop to be suitable for complete peeling. +@item max-completely-peel-loop-nest-depth +The maximum depth of a loop nest suitable for complete peeling. + @item max-unswitch-insns The maximum number of insns of an unswitched loop. @@ -8456,6 +8597,24 @@ parameters only when their cumulative size is less or equal to @option{ipa-sra-ptr-growth-factor} times the size of the original pointer parameter. +@item graphite-max-nb-scop-params +To avoid exponential effects in the Graphite loop transforms, the +number of parameters in a Static Control Part (SCoP) is bounded. The +default value is 10 parameters. A variable whose value is unknown at +compile time and defined outside a SCoP is a parameter of the SCoP. + +@item graphite-max-bbs-per-function +To avoid exponential effects in the detection of SCoPs, the size of +the functions analyzed by Graphite is bounded. The default value is +100 basic blocks. + +@item loop-block-tile-size +Loop blocking or strip mining transforms, enabled with +@option{-floop-block} or @option{-floop-strip-mine}, strip mine each +loop in the loop nest by a given number of iterations. The strip +length can be changed using the @option{loop-block-tile-size} +parameter. The default value is 51 iterations. + @end table @end table @@ -8802,6 +8961,12 @@ the ordering for the include_next directive are not inadvertently changed. If you really need to change the search order for system directories, use the @option{-nostdinc} and/or @option{-isystem} options. +@item -iplugindir=@var{dir} +Set the directory to search for plugins which are passed +by @option{-fplugin=@var{name}} instead of +@option{-fplugin=@var{path}/@var{name}.so}. This option is not meant +to be used by the user, but only passed by the driver. + @item -iquote@var{dir} @opindex iquote Add the directory @var{dir} to the head of the list of directories to @@ -9463,33 +9628,7 @@ proper position among the other output files. The usual way to run GCC is to run the executable called @file{gcc}, or @file{-gcc} when cross-compiling, or @file{-gcc-} to run a version other than the one that -was installed last. Sometimes this is inconvenient, so GCC provides -options that will switch to another cross-compiler or version. - -@table @gcctabopt -@item -b @var{machine} -@opindex b -The argument @var{machine} specifies the target machine for compilation. - -The value to use for @var{machine} is the same as was specified as the -machine type when configuring GCC as a cross-compiler. For -example, if a cross-compiler was configured with @samp{configure -arm-elf}, meaning to compile for an arm processor with elf binaries, -then you would specify @option{-b arm-elf} to run that cross compiler. -Because there are other options beginning with @option{-b}, the -configuration must contain a hyphen, or @option{-b} alone should be one -argument followed by the configuration in the next argument. - -@item -V @var{version} -@opindex V -The argument @var{version} specifies which version of GCC to run. -This is useful when multiple versions are installed. For example, -@var{version} might be @samp{4.0}, meaning to run GCC version 4.0. -@end table - -The @option{-V} and @option{-b} options work by running the -@file{-gcc-} executable, so there's no real reason to -use them if you can just run that directly. +was installed last. @node Submodel Options @section Hardware Models and Configurations @@ -9498,11 +9637,7 @@ use them if you can just run that directly. @cindex hardware models and configurations, specifying @cindex machine dependent options -Earlier we discussed the standard option @option{-b} which chooses among -different installed compilers for completely different target -machines, such as VAX vs.@: 68000 vs.@: 80386. - -In addition, each of these target machine types can have its own +Each target machine types can have its own special options, starting with @samp{-m}, to choose among various hardware models or configurations---for example, 68010 vs 68020, floating coprocessor or none. A single installed version of the @@ -11679,36 +11814,36 @@ instruction set support. @item k6 AMD K6 CPU with MMX instruction set support. @item k6-2, k6-3 -Improved versions of AMD K6 CPU with MMX and 3dNOW!@: instruction set support. +Improved versions of AMD K6 CPU with MMX and 3DNow!@: instruction set support. @item athlon, athlon-tbird -AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW!@: and SSE prefetch instructions +AMD Athlon CPU with MMX, 3dNOW!, enhanced 3DNow!@: and SSE prefetch instructions support. @item athlon-4, athlon-xp, athlon-mp -Improved AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW!@: and full SSE +Improved AMD Athlon CPU with MMX, 3DNow!, enhanced 3DNow!@: and full SSE instruction set support. @item k8, opteron, athlon64, athlon-fx AMD K8 core based CPUs with x86-64 instruction set support. (This supersets -MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW!@: and 64-bit instruction set extensions.) +MMX, SSE, SSE2, 3DNow!, enhanced 3DNow!@: and 64-bit instruction set extensions.) @item k8-sse3, opteron-sse3, athlon64-sse3 Improved versions of k8, opteron and athlon64 with SSE3 instruction set support. @item amdfam10, barcelona AMD Family 10h core based CPUs with x86-64 instruction set support. (This -supersets MMX, SSE, SSE2, SSE3, SSE4A, 3dNOW!, enhanced 3dNOW!, ABM and 64-bit +supersets MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM and 64-bit instruction set extensions.) @item winchip-c6 IDT Winchip C6 CPU, dealt in same way as i486 with additional MMX instruction set support. @item winchip2 -IDT Winchip2 CPU, dealt in same way as i486 with additional MMX and 3dNOW!@: +IDT Winchip2 CPU, dealt in same way as i486 with additional MMX and 3DNow!@: instruction set support. @item c3 -Via C3 CPU with MMX and 3dNOW!@: instruction set support. (No scheduling is +Via C3 CPU with MMX and 3DNow!@: instruction set support. (No scheduling is implemented for this chip.) @item c3-2 Via C3-2 CPU with MMX and SSE instruction set support. (No scheduling is implemented for this chip.) @item geode -Embedded AMD CPU with MMX and 3dNOW! instruction set support. +Embedded AMD CPU with MMX and 3DNow!@: instruction set support. @end table While picking a specific @var{cpu-type} will schedule things appropriately @@ -15548,7 +15683,7 @@ default option. @item -mmax-constant-size=@var{N} @opindex mmax-constant-size -Specifies the maxium size, in bytes, of a constant that can be used as +Specifies the maximum size, in bytes, of a constant that can be used as an operand in a RX instruction. Although the RX instruction set does allow constants of up to 4 bytes in length to be used in instructions, a longer value equates to a longer instruction. Thus in some @@ -15569,7 +15704,7 @@ versions of various instructions. Disabled by default. @opindex mint-register Specify the number of registers to reserve for fast interrupt handler functions. The value @var{N} can be between 0 and 4. A value of 1 -means that register @code{r13} will be reserved for ther exclusive use +means that register @code{r13} will be reserved for the exclusive use of fast interrupt handlers. A value of 2 reserves @code{r13} and @code{r12}. A value of 3 reserves @code{r13}, @code{r12} and @code{r11}, and a value of 4 reserves @code{r13} through @code{r10}. @@ -16068,6 +16203,12 @@ by inserting a test to skip a number of operations in this case; this test slows down the case of larger dividends. inv20u assumes the case of a such a small dividend to be unlikely, and inv20l assumes it to be likely. +@item -maccumulate-outgoing-args +@opindex maccumulate-outgoing-args +Reserve space once for outgoing arguments in the function prologue rather +than around each call. Generally beneficial for performance and size. Also +needed for unwinding to avoid changing the stack frame around conditional code. + @item -mdivsi3_libfunc=@var{name} @opindex mdivsi3_libfunc=@var{name} Set the name of the library function used for 32 bit signed division to @@ -17381,31 +17522,6 @@ and grows downwards, you can use the flags @option{-Wl,--defsym,__stack_limit=0x7ffe0000} to enforce a stack limit of 128KB@. Note that this may only work with the GNU linker. -@cindex aliasing of parameters -@cindex parameters, aliased -@item -fargument-alias -@itemx -fargument-noalias -@itemx -fargument-noalias-global -@itemx -fargument-noalias-anything -@opindex fargument-alias -@opindex fargument-noalias -@opindex fargument-noalias-global -@opindex fargument-noalias-anything -Specify the possible relationships among parameters and between -parameters and global data. - -@option{-fargument-alias} specifies that arguments (parameters) may -alias each other and may alias global storage.@* -@option{-fargument-noalias} specifies that arguments do not alias -each other, but may alias global storage.@* -@option{-fargument-noalias-global} specifies that arguments do not -alias each other and do not alias global storage. -@option{-fargument-noalias-anything} specifies that arguments do not -alias any other storage. - -Each language will automatically use whatever option is required by -the language standard. You should not need to use these options yourself. - @item -fleading-underscore @opindex fleading-underscore This option and its counterpart, @option{-fno-leading-underscore}, forcibly