diff options
author | Diego Novillo <dnovillo@google.com> | 2007-11-14 14:49:45 +0000 |
---|---|---|
committer | Diego Novillo <dnovillo@google.com> | 2007-11-14 14:49:45 +0000 |
commit | 01523df8f382386af20ef248765a35ef73d53e90 (patch) | |
tree | 7a25a938418bd74dd64eb3807f8ee9497acb59b2 /gcc/doc | |
parent | 50a7dd154c9daf74112b1226bf891c00cc598e7a (diff) |
2007-11-14 Diego Novillo <dnovillo@google.com>
Merge with mainline @130155.
* configure.ac (ACX_PKGVERSION): Update revision merge
string.
* configure: Regenerate.
2007-11-13 Diego Novillo <dnovillo@google.com>
* lto-function-out.c (output_tree_flags): Declare local
variable CURRENT_COL. Fix existing misspellings of its
name.
* dwarf2out.c (lto_typedecl_ref): Remove unused variable.
Reformat comments.
lto/ChangeLog
2007-11-13 Diego Novillo <dnovillo@google.com>
* lto.c (lto_read_variable_formal_parameter_constant_DIE):
Initialize ARTIFICIAL.
(lto_read_subroutine_type_subprogram_DIE): Initialize
SAVED_SCOPE.
* lto-read.c (set_line_info): Remove ; from calls to
LINEMAP_POSITION_FOR_COLUMN.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/lto@130178 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/contrib.texi | 4 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 15 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 612 | ||||
-rw-r--r-- | gcc/doc/rtl.texi | 48 | ||||
-rw-r--r-- | gcc/doc/sourcebuild.texi | 15 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 9 |
6 files changed, 381 insertions, 322 deletions
diff --git a/gcc/doc/contrib.texi b/gcc/doc/contrib.texi index 0df6e030b22..0b13b10c0a5 100644 --- a/gcc/doc/contrib.texi +++ b/gcc/doc/contrib.texi @@ -524,6 +524,10 @@ maintaining the S+core port. Weiwen Liu for testing and various bug fixes. @item +Manuel L@'opez-Ib@'a@~nez for improving @option{-Wconversion} and +many other diagnostics fixes and improvements. + +@item Dave Love for his ongoing work with the Fortran front end and runtime libraries. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index a4f7a3a68ce..1c0d476a63a 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -2126,9 +2126,12 @@ versions of the GNU linker, but can now be avoided by passing the functions, using the attribute for a variable eliminates a thunk in the DLL@. -One drawback to using this attribute is that a pointer to a function -or variable marked as @code{dllimport} cannot be used as a constant -address. On Microsoft Windows targets, the attribute can be disabled +One drawback to using this attribute is that a pointer to a +@emph{variable} marked as @code{dllimport} cannot be used as a constant +address. However, a pointer to a @emph{function} with the +@code{dllimport} attribute can be used as a constant initializer; in +this case, the address of a stub function in the import lib is +referenced. On Microsoft Windows targets, the attribute can be disabled for functions by setting the @option{-mnop-fun-dllimport} flag. @item eightbit_data @@ -8143,7 +8146,7 @@ v2di __builtin_ia32_pshlq (v2di, v2di) v8hi __builtin_ia32_pshlw (v8hi, v8hi) @end smallexample -The following builtin-in functions are avaialble when @option{-msse5} +The following builtin-in functions are available when @option{-msse5} is used. The second argument must be an integer constant and generate the machine instruction that is part of the name with the @samp{_imm} suffix removed. @@ -12241,8 +12244,8 @@ future version. The G++ minimum and maximum operators (@samp{<?} and @samp{>?}) and their compound forms (@samp{<?=}) and @samp{>?=}) have been deprecated -and will be removed in a future version. Code using these operators -should be modified to use @code{std::min} and @code{std::max} instead. +and are now removed from G++. Code using these operators should be +modified to use @code{std::min} and @code{std::max} instead. The named return value extension has been deprecated, and is now removed from G++. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index d1e8d71313d..ccd8151d0e9 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -315,54 +315,51 @@ Objective-C and Objective-C++ Dialects}. @item Optimization Options @xref{Optimize Options,,Options that Control Optimization}. -@gccoptlist{-falign-functions=@var{n} -falign-jumps=@var{n} @gol --falign-labels=@var{n} -falign-loops=@var{n} @gol --fbounds-check -fmudflap -fmudflapth -fmudflapir @gol --fbranch-probabilities -fprofile-values -fvpt -fbranch-target-load-optimize @gol --fbranch-target-load-optimize2 -fbtr-bb-exclusive @gol --fcaller-saves -fcprop-registers -fcse-follow-jumps @gol --fcse-skip-blocks -fcx-limited-range -fdata-sections @gol --fdelayed-branch -fdelete-null-pointer-checks -fearly-inlining @gol --fexpensive-optimizations -ffast-math -ffloat-store @gol --fforce-addr -fforward-propagate -ffunction-sections @gol --fgcse -fgcse-lm -fgcse-sm -fgcse-las -fgcse-after-reload @gol --fcrossjumping -fif-conversion -fif-conversion2 @gol --finline-functions -finline-functions-called-once @gol --finline-small-functions -finline-limit=@var{n} -fkeep-inline-functions @gol --fkeep-static-consts -fmerge-constants -fmerge-all-constants @gol --fmodulo-sched -fmodulo-sched-allow-regmoves -fno-branch-count-reg @gol --fno-default-inline -fno-defer-pop -fmove-loop-invariants @gol --fno-function-cse -fno-guess-branch-probability @gol --fno-inline -fno-math-errno -fno-peephole -fno-peephole2 @gol --funsafe-math-optimizations -funsafe-loop-optimizations @gol --ffinite-math-only -fno-signed-zeros @gol --fno-toplevel-reorder -fno-trapping-math -fno-zero-initialized-in-bss @gol --fomit-frame-pointer -foptimize-register-move @gol --foptimize-sibling-calls -fpredictive-commoning -fprefetch-loop-arrays @gol --fprofile-generate -fprofile-use @gol --fregmove -frename-registers @gol --freorder-blocks -freorder-blocks-and-partition -freorder-functions @gol --frerun-cse-after-loop @gol --frounding-math -frtl-abstract-sequences @gol --fschedule-insns -fschedule-insns2 @gol --fno-sched-interblock -fno-sched-spec -fsched-spec-load @gol --fsched-spec-load-dangerous @gol --fsched-stalled-insns=@var{n} -fsched-stalled-insns-dep=@var{n} @gol --fsched2-use-superblocks @gol --fsched2-use-traces -fsee -freschedule-modulo-scheduled-loops @gol --fsection-anchors -fsignaling-nans -fsingle-precision-constant @gol --fno-split-wide-types -fstack-protector -fstack-protector-all @gol --fstrict-aliasing -fstrict-overflow -ftracer -fthread-jumps @gol --funroll-all-loops -funroll-loops -fpeel-loops @gol --fsplit-ivs-in-unroller -funswitch-loops @gol --fvariable-expansion-in-unroller -ftree-reassoc @gol --ftree-pre -ftree-ccp -ftree-dce -ftree-loop-optimize @gol --ftree-loop-linear -ftree-loop-im -ftree-loop-ivcanon -fivopts @gol --fcheck-data-deps -ftree-parallelize-loops @gol --ftree-dominator-opts -ftree-dse -ftree-copyrename -ftree-sink @gol --ftree-ch -ftree-sra -ftree-ter -ftree-fre -ftree-vectorize @gol --ftree-vect-loop-version -fvect-cost-model -ftree-salias -fipa-pta -fweb @gol --ftree-copy-prop -ftree-store-ccp -ftree-store-copy-prop -fwhole-program @gol +@gccoptlist{ +-falign-functions[=@var{n}] -falign-jumps[=@var{n}] @gol +-falign-labels[=@var{n}] -falign-loops[=@var{n}] -fassociative-math @gol +-fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize @gol +-fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves @gol +-fcheck-data-deps -fcprop-registers -fcrossjumping -fcse-follow-jumps @gol +-fcse-skip-blocks -fcx-limited-range -fdata-sections -fdce -fdce @gol +-fdelayed-branch -fdelete-null-pointer-checks -fdse -fdse @gol +-fearly-inlining -fexpensive-optimizations -ffast-math @gol +-ffinite-math-only -ffloat-store -fforce-addr -fforward-propagate @gol +-ffunction-sections -fgcse -fgcse-after-reload -fgcse-las -fgcse-lm @gol +-fgcse-sm -fif-conversion -fif-conversion2 -finline-functions @gol +-finline-functions-called-once -finline-limit=@var{n} @gol +-finline-small-functions -fipa-pta -fipa-pure-const -fipa-reference @gol +-fipa-type-escape -fivopts -fkeep-inline-functions -fkeep-static-consts @gol +-fmerge-all-constants -fmerge-constants -fmodulo-sched @gol +-fmodulo-sched-allow-regmoves -fmove-loop-invariants -fmudflap @gol +-fmudflapir -fmudflapth -fno-branch-count-reg -fno-default-inline @gol +-fno-defer-pop -fno-function-cse -fno-guess-branch-probability @gol +-fno-inline -fno-math-errno -fno-peephole -fno-peephole2 @gol +-fno-sched-interblock -fno-sched-spec -fno-signed-zeros @gol +-fno-toplevel-reorder -fno-trapping-math -fno-zero-initialized-in-bss @gol +-fomit-frame-pointer -foptimize-register-move -foptimize-sibling-calls @gol +-fpeel-loops -fpredictive-commoning -fprefetch-loop-arrays @gol +-fprofile-generate -fprofile-use -fprofile-values -freciprocal-math @gol +-fregmove -frename-registers -freorder-blocks @gol +-freorder-blocks-and-partition -freorder-functions @gol +-frerun-cse-after-loop -freschedule-modulo-scheduled-loops @gol +-frounding-math -frtl-abstract-sequences -fsched2-use-superblocks @gol +-fsched2-use-traces -fsched-spec-load -fsched-spec-load-dangerous @gol +-fsched-stalled-insns-dep[=@var{n}] -fsched-stalled-insns[=@var{n}] @gol +-fschedule-insns -fschedule-insns2 -fsection-anchors -fsee @gol +-fsignaling-nans -fsingle-precision-constant -fsplit-ivs-in-unroller @gol +-fsplit-wide-types -fstack-protector -fstack-protector-all @gol +-fstrict-aliasing -fstrict-overflow -fthread-jumps -ftracer -ftree-ccp @gol +-ftree-ch -ftree-copy-prop -ftree-copyrename -ftree-dce @gol +-ftree-dominator-opts -ftree-dse -ftree-fre -ftree-loop-im @gol +-ftree-loop-ivcanon -ftree-loop-linear -ftree-loop-optimize @gol +-ftree-parallelize-loops=@var{n} -ftree-pre -ftree-reassoc -ftree-salias @gol +-ftree-sink -ftree-sra -ftree-store-ccp -ftree-ter @gol +-ftree-vect-loop-version -ftree-vectorize -ftree-vrp -funit-at-a-time @gol +-funroll-all-loops -funroll-loops -funsafe-loop-optimizations @gol +-funsafe-math-optimizations -funswitch-loops @gol +-fvariable-expansion-in-unroller -fvect-cost-model -fvpt -fweb @gol +-fwhole-program @gol --param @var{name}=@var{value} -O -O0 -O1 -O2 -O3 -Os} @@ -688,7 +685,7 @@ See RS/6000 and PowerPC Options. -mpowerpc-gpopt -mno-powerpc-gpopt @gol -mpowerpc-gfxopt -mno-powerpc-gfxopt @gol -mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb -mfprnd -mno-fprnd @gol --mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr -mdfp -mno-dfp @gol +-mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr -mhard-dfp -mno-hard-dfp @gol -mnew-mnemonics -mold-mnemonics @gol -mfull-toc -mminimal-toc -mno-fp-in-toc -mno-sum-in-toc @gol -m64 -m32 -mxl-compat -mno-xl-compat -mpe @gol @@ -830,8 +827,8 @@ 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 --fargument-alias -fargument-noalias @gol --fargument-noalias-global -fargument-noalias-anything +-fno-stack-limit -fargument-alias -fargument-noalias @gol +-fargument-noalias-global -fargument-noalias-anything @gol -fleading-underscore -ftls-model=@var{model} @gol -ftrapv -fwrapv -fbounds-check @gol -fvisibility} @@ -2524,17 +2521,8 @@ Warnings are diagnostic messages that report constructions which are not inherently erroneous but which are risky or suggest there may have been an error. -You can request many specific warnings with options beginning @samp{-W}, -for example @option{-Wimplicit} to request warnings on implicit -declarations. Each of these specific warning options also has a -negative form beginning @samp{-Wno-} to turn off warnings; -for example, @option{-Wno-implicit}. This manual lists only one of the -two forms, whichever is not the default. - -The following options control the amount and kinds of warnings produced -by GCC; for further, language-specific options also refer to -@ref{C++ Dialect Options} and @ref{Objective-C and Objective-C++ Dialect -Options}. +The following language-independent options do not enable specific +warnings but control the kinds of diagnostics produced by GCC. @table @gcctabopt @cindex syntax checking @@ -2542,6 +2530,48 @@ Options}. @opindex fsyntax-only Check the code for syntax errors, but don't do anything beyond that. +@item -w +@opindex w +Inhibit all warning messages. + +@item -Werror +@opindex Werror +Make all warnings into errors. + +@item -Werror= +@opindex Werror= +Make the specified warning into an error. The specifier for a warning +is appended, for example @option{-Werror=switch} turns the warnings +controlled by @option{-Wswitch} into errors. This switch takes a +negative form, to be used to negate @option{-Werror} for specific +warnings, for example @option{-Wno-error=switch} makes +@option{-Wswitch} warnings not be errors, even when @option{-Werror} +is in effect. You can use the @option{-fdiagnostics-show-option} +option to have each controllable warning amended with the option which +controls it, to determine what to use with this option. + +Note that specifying @option{-Werror=}@var{foo} automatically implies +@option{-W}@var{foo}. However, @option{-Wno-error=}@var{foo} does not +imply anything. + +@item -Wfatal-errors +@opindex Wfatal-errors +This option causes the compiler to abort compilation on the first error +occurred rather than trying to keep going and printing further error +messages. + +@end table + +You can request many specific warnings with options beginning +@samp{-W}, for example @option{-Wimplicit} to request warnings on +implicit declarations. Each of these specific warning options also +has a negative form beginning @samp{-Wno-} to turn off warnings; for +example, @option{-Wno-implicit}. This manual lists only one of the +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}. + +@table @gcctabopt @item -pedantic @opindex pedantic Issue all the warnings demanded by strict ISO C and ISO C++; @@ -2588,10 +2618,6 @@ nothing to warn about.) Like @option{-pedantic}, except that errors are produced rather than warnings. -@item -w -@opindex w -Inhibit all warning messages. - @item -Wall @opindex Wall This enables all the warnings about constructions that some users @@ -2601,36 +2627,96 @@ enables some language-specific warnings described in @ref{C++ Dialect Options} and @ref{Objective-C and Objective-C++ Dialect Options}. @option{-Wall} turns on the following warning flags: -@gccoptlist{ --Waddress @gol --Warray-bounds (only with @option{-O2}) @gol --Wc++0x-compat @gol --Wchar-subscripts @gol --Wimplicit-int @gol --Wimplicit-function-declaration @gol --Wcomment @gol --Wformat @gol --Wmain (only for C/ObjC and unless @option{-ffreestanding}) @gol --Wmissing-braces @gol --Wnonnull @gol --Wparentheses @gol --Wpointer-sign --Wreorder @gol --Wreturn-type @gol --Wsequence-point @gol --Wsign-compare (only in C++) @gol --Wstrict-aliasing @gol --Wstrict-overflow @gol --Wswitch @gol --Wtrigraphs @gol --Wuninitialized (only with @option{-O1}, @option{-O2} or @option{-O3}) @gol --Wunknown-pragmas @gol --Wunused-function @gol --Wunused-label @gol --Wunused-value @gol --Wunused-variable @gol + +@gccoptlist{-Waddress @gol +-Warray-bounds @r{(only with} @option{-O2}@r{)} @gol +-Wc++0x-compat @gol +-Wchar-subscripts @gol +-Wimplicit-int @gol +-Wimplicit-function-declaration @gol +-Wcomment @gol +-Wformat @gol +-Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)} @gol +-Wmissing-braces @gol +-Wnonnull @gol +-Wparentheses @gol +-Wpointer-sign @gol +-Wreorder @gol +-Wreturn-type @gol +-Wsequence-point @gol +-Wsign-compare @r{(only in C++)} @gol +-Wstrict-aliasing @gol +-Wstrict-overflow @gol +-Wswitch @gol +-Wtrigraphs @gol +-Wuninitialized @r{(only with} @option{-O1} @r{and above)} @gol +-Wunknown-pragmas @gol +-Wunused-function @gol +-Wunused-label @gol +-Wunused-value @gol +-Wunused-variable @gol } +Note that some warning flags are not implied by @option{-Wall}. Some of +them warn about constructions that users generally do not consider +questionable, but which occasionally you might wish to check for; +others warn about constructions that are necessary or hard to avoid in +some cases, and there is no simple way to modify the code to suppress +the warning. Some of them are enabled by @option{-Wextra} but many of +them must be enabled individually. + +@item -Wextra +@opindex W +@opindex Wextra +This enables some extra warning flags that are not enabled by +@option{-Wall}. (This option used to be called @option{-W}. The older +name is still supported, but the newer name is more descriptive.) + +@gccoptlist{-Wclobbered @gol +-Wempty-body @gol +-Wmissing-field-initializers @gol +-Wmissing-parameter-type @r{(C only)} @gol +-Wold-style-declaration @r{(C only)} @gol +-Woverride-init @gol +-Wsign-compare @gol +-Wtype-limits @gol +-Wuninitialized @r{(only with} @option{-O1} @r{and above)} @gol +-Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)} @gol +} + +The option @option{-Wextra} also prints warning messages for the +following cases: + +@itemize @bullet + +@item +A pointer is compared against integer zero with @samp{<}, @samp{<=}, +@samp{>}, or @samp{>=}. + +@item +(C++ only) An enumerator and a non-enumerator both appear in a +conditional expression. + +@item +(C++ only) A non-static reference or non-static @samp{const} member +appears in a class without constructors. + +@item +(C++ only) Ambiguous virtual bases. + +@item +(C++ only) Subscripting an array which has been declared @samp{register}. + +@item +(C++ only) Taking the address of a variable which has been declared +@samp{register}. + +@item +(C++ only) A base class is not initialized in a derived class' copy +constructor. + +@end itemize + @item -Wno-import @opindex Wno-import Inhibit warning messages about the use of @samp{#import}. @@ -2648,12 +2734,6 @@ 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 -Wfatal-errors -@opindex Wfatal-errors -This option causes the compiler to abort compilation on the first error -occurred rather than trying to keep going and printing further error -messages. - @item -Wformat @opindex Wformat @opindex ffreestanding @@ -3086,7 +3166,8 @@ Some spurious warnings can be avoided if you declare all the functions you use that never return as @code{noreturn}. @xref{Function Attributes}. -This warning is enabled by @option{-Wall}. +This warning is enabled by @option{-Wall} or @option{-Wextra} in +optimizing compilations (@option{-O1} and above). @item -Wunknown-pragmas @opindex Wunknown-pragmas @@ -3207,100 +3288,6 @@ This option is only active when @option{-ftree-vrp} is active (default for -O2 and above). It warns about subscripts to arrays that are always out of bounds. This warning is enabled by @option{-Wall}. -@end table - -The following @option{-W@dots{}} options are not implied by @option{-Wall}. -Some of them warn about constructions that users generally do not -consider questionable, but which occasionally you might wish to check -for; others warn about constructions that are necessary or hard to avoid -in some cases, and there is no simple way to modify the code to suppress -the warning. - -@table @gcctabopt -@item -Wextra -@opindex W -@opindex Wextra -(This option used to be called @option{-W}. The older name is still -supported, but the newer name is more descriptive.) Print extra warning -messages for these events: - -@itemize @bullet -@item -Warn if a comparison is always true or always false due to the limited -range of the data type, but do not warn for constant expressions. For -example, warn if an unsigned variable is compared against zero with -@samp{<} or @samp{>=}. This warning can be independently controlled -by @option{-Wtype-limits}. - -@item @r{(C only)} -Storage-class specifiers like @code{static} are not the first things -in a declaration. According to the C Standard, this usage is -obsolescent. This warning can be independently controlled by -@option{-Wold-style-declaration}. - -@item -If @option{-Wall} or @option{-Wunused} is also specified, warn about unused -arguments. - -@item -A comparison between signed and unsigned values could produce an -incorrect result when the signed value is converted to unsigned. -(But don't warn if @option{-Wno-sign-compare} is also specified.) - -@item -An aggregate has an initializer which does not initialize all members. -This warning can be independently controlled by -@option{-Wmissing-field-initializers}. - -@item -An initialized field without side effects is overridden when using -designated initializers (@pxref{Designated Inits, , Designated -Initializers}). This warning can be independently controlled by -@option{-Woverride-init}. - -@item @r{(C only)} -A function parameter is declared without a type specifier in K&R-style -functions. This warning can be independently controlled by -@option{-Wmissing-parameter-type}. - -@item -An empty body occurs in an @samp{if}, @samp{else} or -@samp{do while} statement. This warning can be independently -controlled by @option{-Wempty-body}. - -@item @r{(C++ only)} -An empty body occurs in a @samp{while} or @samp{for} statement with no -whitespacing before the semicolon. This warning can be independently -controlled by @option{-Wempty-body}. - -@item -A pointer is compared against integer zero with @samp{<}, @samp{<=}, -@samp{>}, or @samp{>=}. - -@item -A variable might be changed by @samp{longjmp} or @samp{vfork}. -This warning can be independently controlled by @option{-Wclobbered}. - -@item @r{(C++ only)} -An enumerator and a non-enumerator both appear in a conditional expression. - -@item @r{(C++ only)} -A non-static reference or non-static @samp{const} member appears in a -class without constructors. - -@item @r{(C++ only)} -Ambiguous virtual bases. - -@item @r{(C++ only)} -Subscripting an array which has been declared @samp{register}. - -@item @r{(C++ only)} -Taking the address of a variable which has been declared @samp{register}. - -@item @r{(C++ only)} -A base class is not initialized in a derived class' copy constructor. -@end itemize - @item -Wno-div-by-zero @opindex Wno-div-by-zero @opindex Wdiv-by-zero @@ -3933,26 +3920,6 @@ This option is only supported for C and Objective-C@. It is implied by @option{-Wall} and by @option{-pedantic}, which can be disabled with @option{-Wno-pointer-sign}. -@item -Werror -@opindex Werror -Make all warnings into errors. - -@item -Werror= -@opindex Werror= -Make the specified warning into an errors. The specifier for a -warning is appended, for example @option{-Werror=switch} turns the -warnings controlled by @option{-Wswitch} into errors. This switch -takes a negative form, to be used to negate @option{-Werror} for -specific warnings, for example @option{-Wno-error=switch} makes -@option{-Wswitch} warnings not be errors, even when @option{-Werror} -is in effect. You can use the @option{-fdiagnostics-show-option} -option to have each controllable warning amended with the option which -controls it, to determine what to use with this option. - -Note that specifying @option{-Werror=}@var{foo} automatically implies -@option{-W}@var{foo}. However, @option{-Wno-error=}@var{foo} does not -imply anything. - @item -Wstack-protector @opindex Wstack-protector This option is only active when @option{-fstack-protector} is active. It @@ -5057,25 +5024,31 @@ time, without performing any optimizations that take a great deal of compilation time. @option{-O} turns on the following optimization flags: -@gccoptlist{-fdefer-pop @gol +@gccoptlist{ +-fauto-inc-dec @gol +-fcprop-registers @gol +-fdce @gol +-fdefer-pop @gol -fdelayed-branch @gol +-fdse @gol -fguess-branch-probability @gol --fcprop-registers @gol --fif-conversion @gol -fif-conversion2 @gol +-fif-conversion @gol +-finline-small-functions @gol +-fipa-pure-const @gol +-fipa-reference @gol +-fmerge-constants -fsplit-wide-types @gol -ftree-ccp @gol +-ftree-ch @gol +-ftree-copyrename @gol -ftree-dce @gol -ftree-dominator-opts @gol -ftree-dse @gol --ftree-ter @gol --ftree-sra @gol --ftree-copyrename @gol -ftree-fre @gol --ftree-ch @gol --funit-at-a-time @gol --finline-small-functions @gol --fmerge-constants} +-ftree-sra @gol +-ftree-ter @gol +-funit-at-a-time} @option{-O} also turns on @option{-fomit-frame-pointer} on machines where doing so does not interfere with debugging. @@ -5091,24 +5064,24 @@ and the performance of the generated code. @option{-O2} turns on all optimization flags specified by @option{-O}. It also turns on the following optimization flags: @gccoptlist{-fthread-jumps @gol +-falign-functions -falign-jumps @gol +-falign-loops -falign-labels @gol +-fcaller-saves @gol -fcrossjumping @gol --foptimize-sibling-calls @gol -fcse-follow-jumps -fcse-skip-blocks @gol --fgcse -fgcse-lm @gol +-fdelete-null-pointer-checks @gol -fexpensive-optimizations @gol --frerun-cse-after-loop @gol --fcaller-saves @gol +-fgcse -fgcse-lm @gol +-foptimize-sibling-calls @gol -fpeephole2 @gol --fschedule-insns -fschedule-insns2 @gol --fsched-interblock -fsched-spec @gol -fregmove @gol --fstrict-aliasing -fstrict-overflow @gol --fdelete-null-pointer-checks @gol -freorder-blocks -freorder-functions @gol --falign-functions -falign-jumps @gol --falign-loops -falign-labels @gol --ftree-vrp @gol --ftree-pre} +-frerun-cse-after-loop @gol +-fsched-interblock -fsched-spec @gol +-fschedule-insns -fschedule-insns2 @gol +-fstrict-aliasing -fstrict-overflow @gol +-ftree-pre @gol +-ftree-vrp} Please note the warning under @option{-fgcse} about invoking @option{-O2} on programs that use computed gotos. @@ -5310,6 +5283,7 @@ check if the variable was referenced, regardless of whether or not optimization is turned on, use the @option{-fno-keep-static-consts} option. @item -fmerge-constants +@opindex fmerge-constants Attempt to merge identical constants (string constants and floating point constants) across compilation units. @@ -5320,6 +5294,7 @@ behavior. Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. @item -fmerge-all-constants +@opindex fmerge-all-constants Attempt to merge identical constants and identical variables. This option implies @option{-fmerge-constants}. In addition to @@ -5377,13 +5352,6 @@ assumptions based on that. The default is @option{-fzero-initialized-in-bss}. -@item -fbounds-check -@opindex fbounds-check -For front-ends that support it, generate additional code to check that -indices used to access arrays are within the declared range. This is -currently only supported by the Java and Fortran front-ends, where -this option defaults to true and false respectively. - @item -fmudflap -fmudflapth -fmudflapir @opindex fmudflap @opindex fmudflapth @@ -5432,7 +5400,7 @@ Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @item -fcse-follow-jumps @opindex fcse-follow-jumps -In common subexpression elimination, scan through jump instructions +In common subexpression elimination (CSE), scan through jump instructions when the target of the jump is not reached by any other path. For example, when CSE encounters an @code{if} statement with an @code{else} clause, CSE will follow the jump when the condition @@ -5512,14 +5480,31 @@ Using @option{-Wunsafe-loop-optimizations}, the compiler will warn you if it finds this kind of loop. @item -fcrossjumping -@opindex crossjumping +@opindex fcrossjumping Perform cross-jumping transformation. This transformation unifies equivalent code and save code size. The resulting code may or may not perform better than without cross-jumping. Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. +@item -fauto-inc-dec +@opindex fauto-inc-dec +Combine increments or decrements of addresses with memory accesses. +This pass is always skipped on architectures that do not have +instructions to support this. Enabled by default at @option{-O} and +higher on architectures that support this. + +@item -fdce +@opindex fdce +Perform dead code elimination (DCE) on RTL. +Enabled by default at @option{-O} and higher. + +@item -fdse +@opindex fdse +Perform dead store elimination (DSE) on RTL. +Enabled by default at @option{-O} and higher. + @item -fif-conversion -@opindex if-conversion +@opindex fif-conversion Attempt to transform conditional jumps into branch-less equivalents. This include use of conditional moves, min, max, set flags and abs instructions, and some tricks doable by standard arithmetics. The use of conditional execution @@ -5528,7 +5513,7 @@ on chips where it is available is controlled by @code{if-conversion2}. Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. @item -fif-conversion2 -@opindex if-conversion2 +@opindex fif-conversion2 Use conditional execution (where available) to transform conditional jumps into branch-less equivalents. @@ -5619,17 +5604,27 @@ Allow speculative motion of more load instructions. This only makes sense when scheduling before register allocation, i.e.@: with @option{-fschedule-insns} or at @option{-O2} or higher. -@item -fsched-stalled-insns=@var{n} +@item -fsched-stalled-insns +@itemx -fsched-stalled-insns=@var{n} @opindex fsched-stalled-insns Define how many insns (if any) can be moved prematurely from the queue of stalled insns into the ready list, during the second scheduling pass. +@option{-fno-fsched-stalled-insns} and @option{-fsched-stalled-insns=0} +are equivalent and mean that no insns will be moved prematurely. +If @var{n} is unspecified then there is no limit on how many queued +insns can be moved prematurely. -@item -fsched-stalled-insns-dep=@var{n} +@item -fsched-stalled-insns-dep +@itemx -fsched-stalled-insns-dep=@var{n} @opindex fsched-stalled-insns-dep Define how many insn groups (cycles) will be examined for a dependency on a stalled insn that is candidate for premature removal from the queue -of stalled insns. Has an effect only during the second scheduling pass, +of stalled insns. This has an effect only during the second scheduling pass, and only if @option{-fsched-stalled-insns} is used and its value is not zero. +@option{-fno-sched-stalled-insns-dep} is equivalent to +@option{-fsched-stalled-insns-dep=0}. +@option{-fsched-stalled-insns-dep} without a value is equivalent to +@option{-fsched-stalled-insns-dep=1}. @item -fsched2-use-superblocks @opindex fsched2-use-superblocks @@ -5657,11 +5652,11 @@ sense when scheduling after register allocation, i.e.@: with @item -fsee @opindex fsee -Eliminates redundant extension instructions and move the non redundant -ones to optimal placement using LCM. +Eliminate redundant sign extension instructions and move the non-redundant +ones to optimal placement using lazy code motion (LCM). @item -freschedule-modulo-scheduled-loops -@opindex fscheduling-in-modulo-scheduled-loops +@opindex freschedule-modulo-scheduled-loops The modulo scheduling comes before the traditional scheduling, if a loop was modulo scheduled we may want to prevent the later scheduling passes from changing its schedule, we use this option to control that. @@ -5679,58 +5674,74 @@ those which have no call-preserved registers to use instead. Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. @item -ftree-reassoc -Perform Reassociation on trees This flag is enabled by default +@opindex ftree-reassoc +Perform reassociation on trees. This flag is enabled by default at @option{-O} and higher. @item -ftree-pre -Perform Partial Redundancy Elimination (PRE) on trees. This flag is +@opindex ftree-pre +Perform partial redundancy elimination (PRE) on trees. This flag is enabled by default at @option{-O2} and @option{-O3}. @item -ftree-fre -Perform Full Redundancy Elimination (FRE) on trees. The difference +@opindex ftree-fre +Perform full redundancy elimination (FRE) on trees. The difference between FRE and PRE is that FRE only considers expressions that are computed on all paths leading to the redundant computation. This analysis is faster than PRE, though it exposes fewer redundancies. This flag is enabled by default at @option{-O} and higher. @item -ftree-copy-prop +@opindex ftree-copy-prop Perform copy propagation on trees. This pass eliminates unnecessary copy operations. This flag is enabled by default at @option{-O} and higher. -@item -ftree-store-copy-prop -Perform copy propagation of memory loads and stores. This pass -eliminates unnecessary copy operations in memory references -(structures, global variables, arrays, etc). This flag is enabled by -default at @option{-O2} and higher. - @item -ftree-salias +@opindex ftree-salias Perform structural alias analysis on trees. This flag is enabled by default at @option{-O} and higher. +@item -fipa-pure-const +@opindex fipa-pure-const +Discover which functions are pure or constant. +Enabled by default at @option{-O} and higher. + +@item -fipa-reference +@opindex fipa-reference +Discover which static variables do not escape cannot escape the +compilation unit. +Enabled by default at @option{-O} and higher. + @item -fipa-pta +@opindex fipa-pta Perform interprocedural pointer analysis. @item -ftree-sink +@opindex ftree-sink Perform forward store motion on trees. This flag is enabled by default at @option{-O} and higher. @item -ftree-ccp +@opindex ftree-ccp Perform sparse conditional constant propagation (CCP) on trees. This pass only operates on local scalar variables and is enabled by default at @option{-O} and higher. @item -ftree-store-ccp +@opindex ftree-store-ccp Perform sparse conditional constant propagation (CCP) on trees. This pass operates on both local scalar variables and memory stores and loads (global variables, structures, arrays, etc). This flag is enabled by default at @option{-O2} and higher. @item -ftree-dce +@opindex ftree-dce Perform dead code elimination (DCE) on trees. This flag is enabled by default at @option{-O} and higher. @item -ftree-dominator-opts +@opindex ftree-dominator-opts Perform a variety of simple scalar cleanups (constant/copy propagation, redundancy elimination, range propagation and expression simplification) based on a dominator tree traversal. This also @@ -5745,24 +5756,29 @@ any intervening loads. In this case the earlier store can be deleted. This flag is enabled by default at @option{-O} and higher. @item -ftree-ch +@opindex ftree-ch Perform loop header copying on trees. This is beneficial since it increases effectiveness of code motion optimizations. It also saves one jump. This flag is enabled by default at @option{-O} and higher. It is not enabled for @option{-Os}, since it usually increases code size. @item -ftree-loop-optimize +@opindex ftree-loop-optimize Perform loop optimizations on trees. This flag is enabled by default at @option{-O} and higher. @item -ftree-loop-linear +@opindex ftree-loop-linear Perform linear loop transformations on tree. This flag can improve cache performance and allow further loop optimizations to take place. @item -fcheck-data-deps +@opindex fcheck-data-deps Compare the results of several data dependence analyzers. This option is used for debugging the data dependence analyzers. @item -ftree-loop-im +@opindex ftree-loop-im Perform loop invariant motion on trees. This pass moves only invariants that would be hard to handle at RTL level (function calls, operations that expand to nontrivial sequences of insns). With @option{-funswitch-loops} it also moves @@ -5771,17 +5787,19 @@ just trivial invariantness analysis in loop unswitching. The pass also includes store motion. @item -ftree-loop-ivcanon +@opindex ftree-loop-ivcanon Create a canonical counter for number of iterations in the loop for that determining number of iterations requires complicated analysis. Later optimizations then may determine the number easily. Useful especially in connection with unrolling. @item -fivopts +@opindex fivopts Perform induction variable optimizations (strength reduction, induction variable merging and induction variable elimination) on trees. @item -ftree-parallelize-loops=n -@opindex ftree-parallelize-loops=n +@opindex ftree-parallelize-loops Parallelize loops, i.e., split their iteration space to run in n threads. This is only possible for loops whose iterations are independent and can be arbitrarily reordered. The optimization is only @@ -5789,17 +5807,20 @@ profitable on multiprocessor machines, for loops that are CPU-intensive, rather than constrained e.g. by memory bandwidth. @item -ftree-sra +@opindex ftree-sra Perform scalar replacement of aggregates. This pass replaces structure references with scalars to prevent committing structures to memory too early. This flag is enabled by default at @option{-O} and higher. @item -ftree-copyrename +@opindex ftree-copyrename Perform copy renaming on trees. This pass attempts to rename compiler temporaries to other variables at copy locations, usually resulting in variable names which more closely resemble the original variables. This flag is enabled by default at @option{-O} and higher. @item -ftree-ter +@opindex ftree-ter Perform temporary expression replacement during the SSA->normal phase. Single use/single def temporaries are replaced at their use location with their defining expression. This results in non-GIMPLE code, but gives the expanders @@ -5807,6 +5828,7 @@ much more complex trees to work on resulting in better RTL generation. This is enabled by default at @option{-O} and higher. @item -ftree-vectorize +@opindex ftree-vectorize Perform loop vectorization on trees. @item -ftree-vect-loop-version @@ -5819,9 +5841,11 @@ to control which version is executed. This option is enabled by default except at level @option{-Os} where it is disabled. @item -fvect-cost-model +@opindex fvect-cost-model Enable cost model for vectorization. @item -ftree-vrp +@opindex ftree-vrp Perform Value Range Propagation on trees. This is similar to the constant propagation pass, but instead of values, ranges of values are propagated. This allows the optimizers to remove unnecessary range @@ -6150,14 +6174,15 @@ programs consisting of single file, in combination with option programs since the functions and variables become local for the whole combined compilation unit, not for the single source file itself. +This option is not supported for Fortran programs. -@item -fno-cprop-registers -@opindex fno-cprop-registers +@item -fcprop-registers +@opindex fcprop-registers After register allocation and post-register allocation instruction splitting, we perform a copy-propagation pass to try to reduce scheduling dependencies and occasionally eliminate the copy. -Disabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. +Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. @item -fprofile-generate @opindex fprofile-generate @@ -6256,7 +6281,7 @@ Enables @option{-freciprocal-math} and @option{-fassociative-math}. The default is @option{-fno-unsafe-math-optimizations}. @item -fassociative-math -@opindex -fassociative-math +@opindex fassociative-math Allow re-association of operands in series of floating-point operations. This violates the ISO C and C++ language standard by possibly changing @@ -6271,7 +6296,7 @@ or @option{-fno-trapping-math} or with @option{-frounding-math}. The default is @option{-fno-associative-math}. @item -freciprocal-math -@opindex -freciprocal-math +@opindex freciprocal-math Allow the reciprocal of a value to be used instead of dividing by the value if this enables optimizations. For example @code{x / y} @@ -6368,9 +6393,7 @@ Treat floating point constant as single precision constant instead of implicitly converting it to double precision constant. @item -fcx-limited-range -@itemx -fno-cx-limited-range @opindex fcx-limited-range -@opindex fno-cx-limited-range When enabled, this option states that a range reduction step is not needed when performing complex division. The default is @option{-fno-cx-limited-range}, but is enabled by @option{-ffast-math}. @@ -6523,6 +6546,7 @@ When performing branch target register load optimization, don't reuse branch target registers in within any basic block. @item -fstack-protector +@opindex fstack-protector Emit extra code to check for buffer overflows, such as stack smashing attacks. This is done by adding a guard variable to functions with vulnerable objects. This includes functions that call alloca, and @@ -6531,6 +6555,7 @@ when a function is entered and then checked when the function exits. If a guard check fails, an error message is printed and the program exits. @item -fstack-protector-all +@opindex fstack-protector-all Like @option{-fstack-protector} except that all functions are protected. @item -fsection-anchors @@ -6875,6 +6900,16 @@ with unknown. We predict the known number of iterations correctly, while the unknown number of iterations average to roughly 10. This means that the loop without bounds would appear artificially cold relative to the other one. +@item align-threshold + +Select fraction of the maximal frequency of executions of basic block in +function given basic block will get aligned. + +@item align-loop-iterations + +A loop expected to iterate at lest the selected number of iterations will get +aligned. + @item tracer-dynamic-coverage @itemx tracer-dynamic-coverage-feedback @@ -7096,6 +7131,16 @@ mechanism for comparing types in C++ and Objective-C++. However, if bugs in the canonical type system are causing compilation failures, set this value to 0 to disable canonical types. +@item max-partial-antic-length +Maximum length of the partial antic set computed during the tree +partial redundancy elimination optimization (@option{-ftree-pre}) when +optimizing at @option{-O3} and above. For some sorts of source code +the enhanced partial redundancy elimination optimization can run away, +consuming all of the memory available on the host machine. This +parameter sets a limit on the length of the sets that are computed, +which prevents the runaway behaviour. Setting a value of 0 for +this paramter will allow an unlimited set length. + @end table @end table @@ -11901,9 +11946,8 @@ Use (do not use) the MIPS SmartMIPS ASE. @opindex mpaired-single @opindex mno-paired-single Use (do not use) paired-single floating-point instructions. -@xref{MIPS Paired-Single Support}. This option can only be used -when generating 64-bit code and requires hardware floating-point -support to be enabled. +@xref{MIPS Paired-Single Support}. This option requires +hardware floating-point support to be enabled. @item -mdmx @itemx -mno-mdmx @@ -12572,8 +12616,8 @@ These @samp{-m} options are defined for the IBM RS/6000 and PowerPC: @itemx -mno-cmpb @itemx -mmfpgpr @itemx -mno-mfpgpr -@itemx -mdfp -@itemx -mno-dfp +@itemx -mhard-dfp +@itemx -mno-hard-dfp @opindex mpower @opindex mno-power @opindex mpower2 @@ -12596,8 +12640,8 @@ These @samp{-m} options are defined for the IBM RS/6000 and PowerPC: @opindex mno-cmpb @opindex mmfpgpr @opindex mno-mfpgpr -@opindex mdfp -@opindex mno-dfp +@opindex mhard-dfp +@opindex mno-hard-dfp GCC supports two related instruction set architectures for the RS/6000 and PowerPC@. The @dfn{POWER} instruction set are those instructions supported by the @samp{rios} chip set used in the original @@ -12649,7 +12693,7 @@ The @option{-mmfpgpr} option allows GCC to generate the FP move to/from general purpose register instructions implemented on the POWER6X processor and other processors that support the extended PowerPC V2.05 architecture. -The @option{-mdfp} option allows GCC to generate the decimal floating +The @option{-mhard-dfp} option allows GCC to generate the decimal floating point instructions implemented on some POWER processors. The @option{-mpowerpc64} option allows GCC to generate the additional @@ -13948,7 +13992,7 @@ for machine type @var{cpu_type}. Supported values for @var{cpu_type} are @samp{v7}, @samp{cypress}, @samp{v8}, @samp{supersparc}, @samp{sparclite}, @samp{f930}, @samp{f934}, @samp{hypersparc}, @samp{sparclite86x}, @samp{sparclet}, @samp{tsc701}, @samp{v9}, @samp{ultrasparc}, -@samp{ultrasparc3}, and @samp{niagara}. +@samp{ultrasparc3}, @samp{niagara} and @samp{niagara2}. Default instruction scheduling parameters are used for values that select an architecture and not an implementation. These are @samp{v7}, @samp{v8}, @@ -13962,7 +14006,7 @@ implementations. v8: supersparc, hypersparc sparclite: f930, f934, sparclite86x sparclet: tsc701 - v9: ultrasparc, ultrasparc3, niagara + v9: ultrasparc, ultrasparc3, niagara, niagara2 @end smallexample By default (unless configured otherwise), GCC generates code for the V7 @@ -14000,7 +14044,8 @@ optimizes it for the Sun UltraSPARC I/II/IIi chips. With @option{-mcpu=ultrasparc3}, the compiler additionally optimizes it for the Sun UltraSPARC III/III+/IIIi/IIIi+/IV/IV+ chips. With @option{-mcpu=niagara}, the compiler additionally optimizes it for -Sun UltraSPARC T1 chips. +Sun UltraSPARC T1 chips. With @option{-mcpu=niagara2}, the compiler +additionally optimizes it for Sun UltraSPARC T2 chips. @item -mtune=@var{cpu_type} @opindex mtune @@ -14013,7 +14058,7 @@ The same values for @option{-mcpu=@var{cpu_type}} can be used for that select a particular cpu implementation. Those are @samp{cypress}, @samp{supersparc}, @samp{hypersparc}, @samp{f930}, @samp{f934}, @samp{sparclite86x}, @samp{tsc701}, @samp{ultrasparc}, -@samp{ultrasparc3}, and @samp{niagara}. +@samp{ultrasparc3}, @samp{niagara}, and @samp{niagara2}. @item -mv8plus @itemx -mno-v8plus @@ -15067,6 +15112,7 @@ switch. Use it to conform to a non-default application binary interface. Not all targets provide complete support for this switch. @item -ftls-model=@var{model} +@opindex ftls-model Alter the thread-local storage model to be used (@pxref{Thread-Local}). The @var{model} argument should be one of @code{global-dynamic}, @code{local-dynamic}, @code{initial-exec} or @code{local-exec}. diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index 639aabe885a..bd0effeb281 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -648,8 +648,8 @@ are already in a non-addressable component of an aggregate. Stored in the @code{jump} field and printed as @samp{/j}. @findex MEM_SCALAR_P -@cindex @code{mem} and @samp{/f} -@cindex @code{frame_related}, in @code{mem} +@cindex @code{mem} and @samp{/i} +@cindex @code{return_val}, in @code{mem} @item MEM_SCALAR_P (@var{x}) In @code{mem} expressions, nonzero for reference to a scalar known not to be a member of a structure, union, or array. Zero for such @@ -657,7 +657,7 @@ references and for indirections through pointers, even pointers pointing to scalar types. If both this flag and @code{MEM_IN_STRUCT_P} are clear, then we don't know whether this @code{mem} is in a structure or not. Both flags should never be simultaneously set. -Stored in the @code{frame_related} field and printed as @samp{/f}. +Stored in the @code{return_val} field and printed as @samp{/i}. @findex MEM_VOLATILE_P @cindex @code{mem} and @samp{/v} @@ -676,13 +676,20 @@ Stored in the @code{volatil} field and printed as @samp{/v}. In @code{mem}, nonzero for memory references that will not trap. Stored in the @code{call} field and printed as @samp{/c}. +@findex MEM_POINTER +@cindex @code{mem} and @samp{/f} +@cindex @code{frame_related}, in @code{mem} +@item MEM_POINTER (@var{x}) +Nonzero in a @code{mem} if the memory reference holds a pointer. +Stored in the @code{frame_related} field and printed as @samp{/f}. + @findex REG_FUNCTION_VALUE_P @cindex @code{reg} and @samp{/i} -@cindex @code{integrated}, in @code{reg} +@cindex @code{return_val}, in @code{reg} @item REG_FUNCTION_VALUE_P (@var{x}) Nonzero in a @code{reg} if it is the place in which this function's value is going to be returned. (This happens only in a hard -register.) Stored in the @code{integrated} field and printed as +register.) Stored in the @code{return_val} field and printed as @samp{/i}. @findex REG_POINTER @@ -739,19 +746,6 @@ computation performed by this instruction, i.e., one that This flag is required for exception handling support on targets with RTL prologues. -@cindex @code{insn} and @samp{/i} -@cindex @code{call_insn} and @samp{/i} -@cindex @code{jump_insn} and @samp{/i} -@cindex @code{barrier} and @samp{/i} -@cindex @code{code_label} and @samp{/i} -@cindex @code{insn_list} and @samp{/i} -@cindex @code{const} and @samp{/i} -@cindex @code{note} and @samp{/i} -@cindex @code{integrated}, in @code{insn}, @code{call_insn}, @code{jump_insn}, @code{barrier}, @code{code_label}, @code{insn_list}, @code{const}, and @code{note} -@code{code_label}, @code{insn_list}, @code{const}, or @code{note} if it -resulted from an in-line function call. -Stored in the @code{integrated} field and printed as @samp{/i}. - @findex MEM_READONLY_P @cindex @code{mem} and @samp{/u} @cindex @code{unchanging}, in @code{mem} @@ -850,10 +844,10 @@ once. Stored in the @code{used} field. @findex SYMBOL_REF_WEAK @cindex @code{symbol_ref} and @samp{/i} -@cindex @code{integrated}, in @code{symbol_ref} +@cindex @code{return_val}, in @code{symbol_ref} @item SYMBOL_REF_WEAK (@var{x}) In a @code{symbol_ref}, indicates that @var{x} has been declared weak. -Stored in the @code{integrated} field and printed as @samp{/i}. +Stored in the @code{return_val} field and printed as @samp{/i}. @findex SYMBOL_REF_FLAG @cindex @code{symbol_ref} and @samp{/v} @@ -887,11 +881,11 @@ frame pointer. In @code{reg} expressions, 1 means that the register holds a pointer. +In @code{mem} expressions, 1 means that the memory reference holds a pointer. + In @code{symbol_ref} expressions, 1 means that the reference addresses this function's string constant pool. -In @code{mem} expressions, 1 means that the reference is to a scalar. - In an RTL dump, this flag is represented as @samp{/f}. @findex in_struct @@ -930,18 +924,18 @@ must be scheduled as part of a group together with the previous insn. In an RTL dump, this flag is represented as @samp{/s}. -@findex integrated +@findex return_val @cindex @samp{/i} in RTL dump -@item integrated -In an @code{insn}, @code{insn_list}, or @code{const}, 1 means the RTL was -produced by procedure integration. - +@item return_val In @code{reg} expressions, 1 means the register contains the value to be returned by the current function. On machines that pass parameters in registers, the same register number may be used for parameters as well, but this flag is not set on such uses. +In @code{mem} expressions, 1 means the memory reference is to a scalar +known not to be a member of a structure, union, or array. + In @code{symbol_ref} expressions, 1 means the referenced symbol is weak. In an RTL dump, this flag is represented as @samp{/i}. diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 6f6dcd01e90..0a4224ba8b4 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -963,10 +963,11 @@ If the directive includes the optional @samp{@{ target @var{selector} @}} then the test is skipped unless the target system is included in the list of target triplets or matches the effective-target keyword. -If the directive includes the optional @samp{@{ xfail @var{selector} @}} -and the selector is met then the test is expected to fail. For -@code{dg-do run}, execution is expected to fail but compilation -is expected to pass. +If @samp{do-what-keyword} is @code{run} and the directive includes +the optional @samp{@{ xfail @var{selector} @}} and the selector is met +then the test is expected to fail. The @code{xfail} clause is ignored +for other values of @samp{do-what-keyword}; those tests can use +directive @code{dg-xfail-if}. @item @{ dg-options @var{options} [@{ target @var{selector} @}] @} This DejaGnu directive provides a list of compiler options, to be used @@ -1006,14 +1007,16 @@ Expect the test to fail if the conditions (which are the same as for @item @{ dg-require-@var{support} args @} Skip the test if the target does not provide the required support; see @file{gcc-dg.exp} in the GCC testsuite for the actual directives. -These directives must appear after any @code{dg-do} directive in the test. +These directives must appear after any @code{dg-do} directive in the test +and before any @code{dg-additional-sources} directive. They require at least one argument, which can be an empty string if the specific procedure does not examine the argument. @item @{ dg-require-effective-target @var{keyword} @} Skip the test if the test target, including current multilib flags, is not covered by the effective-target keyword. -This directive must appear after any @code{dg-do} directive in the test. +This directive must appear after any @code{dg-do} directive in the test +and before any @code{dg-additional-sources} directive. @item @{ dg-shouldfail @var{comment} @{ @var{selector} @} @{ @var{include-opts} @} @{ @var{exclude-opts} @} @} Expect the test executable to return a nonzero exit status if the diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 34668f2c2ac..074fba2821c 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -10151,6 +10151,15 @@ The default value of this hook is @code{NULL}, which disables any special allocation. @end deftypefn +@deftypefn {Target Hook} int TARGET_UNSPEC_MAY_TRAP_P (const_rtx @var{x}, unsigned @var{flags}) +This target hook returns nonzero if @var{x}, an @code{unspec} or +@code{unspec_volatile} operation, might cause a trap. Targets can use +this hook to enhance precision of analysis for @code{unspec} and +@code{unspec_volatile} operations. You may call @code{may_trap_p_1} +to analyze inner elements of @var{x} in which case @var{flags} should be +passed along. +@end deftypefn + @deftypefn {Target Hook} void TARGET_SET_CURRENT_FUNCTION (tree @var{decl}) The compiler invokes this hook whenever it changes its current function context (@code{cfun}). You can define this function if |