diff options
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/extend.texi | 33 | ||||
-rw-r--r-- | gcc/doc/install.texi | 54 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 50 | ||||
-rw-r--r-- | gcc/doc/options.texi | 29 | ||||
-rw-r--r-- | gcc/doc/rtl.texi | 8 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 195 | ||||
-rw-r--r-- | gcc/doc/tree-ssa.texi | 4 |
7 files changed, 161 insertions, 212 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index c714c54b495..7d83c2bded7 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -4791,6 +4791,9 @@ are not prevented from being speculated to before the barrier. @findex cimag @findex cimagf @findex cimagl +@findex clog +@findex clogf +@findex clogl @findex conj @findex conjf @findex conjl @@ -5140,21 +5143,21 @@ The ISO C99 functions @code{catanl}, @code{catan}, @code{cbrtf}, @code{cbrtl}, @code{cbrt}, @code{ccosf}, @code{ccoshf}, @code{ccoshl}, @code{ccosh}, @code{ccosl}, @code{ccos}, @code{cexpf}, @code{cexpl}, @code{cexp}, @code{cimagf}, -@code{cimagl}, @code{cimag}, @code{conjf}, @code{conjl}, @code{conj}, -@code{copysignf}, @code{copysignl}, @code{copysign}, @code{cpowf}, -@code{cpowl}, @code{cpow}, @code{cprojf}, @code{cprojl}, @code{cproj}, -@code{crealf}, @code{creall}, @code{creal}, @code{csinf}, @code{csinhf}, -@code{csinhl}, @code{csinh}, @code{csinl}, @code{csin}, @code{csqrtf}, -@code{csqrtl}, @code{csqrt}, @code{ctanf}, @code{ctanhf}, @code{ctanhl}, -@code{ctanh}, @code{ctanl}, @code{ctan}, @code{erfcf}, @code{erfcl}, -@code{erfc}, @code{erff}, @code{erfl}, @code{erf}, @code{exp2f}, -@code{exp2l}, @code{exp2}, @code{expm1f}, @code{expm1l}, @code{expm1}, -@code{fdimf}, @code{fdiml}, @code{fdim}, @code{fmaf}, @code{fmal}, -@code{fmaxf}, @code{fmaxl}, @code{fmax}, @code{fma}, @code{fminf}, -@code{fminl}, @code{fmin}, @code{hypotf}, @code{hypotl}, @code{hypot}, -@code{ilogbf}, @code{ilogbl}, @code{ilogb}, @code{imaxabs}, -@code{isblank}, @code{iswblank}, @code{lgammaf}, @code{lgammal}, -@code{lgamma}, @code{llabs}, @code{llrintf}, @code{llrintl}, +@code{cimagl}, @code{cimag}, @code{clogf}, @code{clogl}, @code{clog}, +@code{conjf}, @code{conjl}, @code{conj}, @code{copysignf}, @code{copysignl}, +@code{copysign}, @code{cpowf}, @code{cpowl}, @code{cpow}, @code{cprojf}, +@code{cprojl}, @code{cproj}, @code{crealf}, @code{creall}, @code{creal}, +@code{csinf}, @code{csinhf}, @code{csinhl}, @code{csinh}, @code{csinl}, +@code{csin}, @code{csqrtf}, @code{csqrtl}, @code{csqrt}, @code{ctanf}, +@code{ctanhf}, @code{ctanhl}, @code{ctanh}, @code{ctanl}, @code{ctan}, +@code{erfcf}, @code{erfcl}, @code{erfc}, @code{erff}, @code{erfl}, +@code{erf}, @code{exp2f}, @code{exp2l}, @code{exp2}, @code{expm1f}, +@code{expm1l}, @code{expm1}, @code{fdimf}, @code{fdiml}, @code{fdim}, +@code{fmaf}, @code{fmal}, @code{fmaxf}, @code{fmaxl}, @code{fmax}, +@code{fma}, @code{fminf}, @code{fminl}, @code{fmin}, @code{hypotf}, +@code{hypotl}, @code{hypot}, @code{ilogbf}, @code{ilogbl}, @code{ilogb}, +@code{imaxabs}, @code{isblank}, @code{iswblank}, @code{lgammaf}, +@code{lgammal}, @code{lgamma}, @code{llabs}, @code{llrintf}, @code{llrintl}, @code{llrint}, @code{llroundf}, @code{llroundl}, @code{llround}, @code{log1pf}, @code{log1pl}, @code{log1p}, @code{log2f}, @code{log2l}, @code{log2}, @code{logbf}, @code{logbl}, @code{logb}, @code{lrintf}, diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 80a655b8948..8d816be3ef1 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1072,6 +1072,27 @@ do a @samp{make -C gcc gnatlib_and_tools}. Specify that the compiler should use DWARF 2 debugging information as the default. +@item --enable-targets=all +@itemx --enable-targets=@var{target_list} +Some GCC targets, e.g.@: powerpc64-linux, build bi-arch compilers. +These are compilers that are able to generate either 64-bit or 32-bit +code. Typically, the corresponding 32-bit target, e.g.@: +powerpc-linux for powerpc64-linux, only generates 32-bit code. This +option enables the 32-bit target to be a bi-arch compiler, which is +useful when you want a bi-arch compiler that defaults to 32-bit, and +you are building a bi-arch or multi-arch binutils in a combined tree. +Currently, this option only affects powerpc-linux. + +@item --enable-secureplt +This option enables @option{-msecure-plt} by default for powerpc-linux. +@ifnothtml +@xref{RS/6000 and PowerPC Options,, RS/6000 and PowerPC Options, gcc, +Using the GNU Compiler Collection (GCC)}, +@end ifnothtml +@ifhtml +See ``RS/6000 and PowerPC Options'' in the main manual +@end ifhtml + @item --enable-win32-registry @itemx --enable-win32-registry=@var{key} @itemx --disable-win32-registry @@ -2465,7 +2486,7 @@ ARM-family processors. These targets support the AOUT file format: ATMEL AVR-family micro controllers. These are used in embedded applications. There are no standard Unix configurations. @ifnothtml -@xref{AVR Options,, AVR Options, gcc, Using and Porting the GNU Compiler +@xref{AVR Options,, AVR Options, gcc, Using the GNU Compiler Collection (GCC)}, @end ifnothtml @ifhtml @@ -2503,8 +2524,8 @@ indicates that you should upgrade to a newer version of the binutils. The Blackfin processor, an Analog Devices DSP. @ifnothtml -@xref{Blackfin Options,, Blackfin Options, gcc, Using and Porting the GNU -Compiler Collection (GCC)}, +@xref{Blackfin Options,, Blackfin Options, gcc, Using the GNU Compiler +Collection (GCC)}, @end ifnothtml @ifhtml See ``Blackfin Options'' in the main manual @@ -2522,8 +2543,8 @@ Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal Processors. These are used in embedded applications. There are no standard Unix configurations. @ifnothtml -@xref{TMS320C3x/C4x Options,, TMS320C3x/C4x Options, gcc, Using and -Porting the GNU Compiler Collection (GCC)}, +@xref{TMS320C3x/C4x Options,, TMS320C3x/C4x Options, gcc, Using the +GNU Compiler Collection (GCC)}, @end ifnothtml @ifhtml See ``TMS320C3x/C4x Options'' in the main manual @@ -2552,7 +2573,7 @@ CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip series. These are used in embedded applications. @ifnothtml -@xref{CRIS Options,, CRIS Options, gcc, Using and Porting the GNU Compiler +@xref{CRIS Options,, CRIS Options, gcc, Using the GNU Compiler Collection (GCC)}, @end ifnothtml @ifhtml @@ -3623,11 +3644,11 @@ failure in form of a miscompilation of the stage1 compiler by the Sun compiler. This is Sun bug 4974440. This is fixed with patch 112760-07. GCC 3.4 changed the default debugging format from STABS to DWARF-2 for -32-bit code on Solaris 7 and later. If you are using the Sun -assembler, this change apparently runs afoul of Sun bug 4910101, for -which (as of 2004-05-23) there is no fix. A symptom of the problem is -that you cannot compile C++ programs like @command{groff} 1.19.1 -without getting messages similar to the following: +32-bit code on Solaris 7 and later. If you use the Sun assembler, this +change apparently runs afoul of Sun bug 4910101 (which is referenced as +a x86-only problem by Sun, probably because they do not use DWARF-2). +A symptom of the problem is that you cannot compile C++ programs like +@command{groff} 1.19.1 without getting messages similar to the following: @smallexample ld: warning: relocation error: R_SPARC_UA32: @dots{} @@ -3697,6 +3718,17 @@ ld: fatal: relocation error: R_SPARC_32: file libgcc/sparcv9/_muldi3.o: This bug has been fixed in the final 5.0 version of the assembler. +A similar problem was reported for version Sun WorkShop 6 99/08/18 of the +Sun assembler, which causes a bootstrap failure with GCC 4.0.0: + +@smallexample +ld: fatal: relocation error: R_SPARC_DISP32: + file .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o: + symbol <unknown>: offset 0xfccd33ad is non-aligned +@end smallexample + +This bug has been fixed in more recent revisions of the assembler. + @html <hr /> @end html diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index a104c548e38..0bcd3d9d85c 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -277,6 +277,7 @@ Objective-C and Objective-C++ Dialects}. -fdump-tree-sra@r{[}-@var{n}@r{]} @gol -fdump-tree-salias @gol -fdump-tree-fre@r{[}-@var{n}@r{]} @gol +-fdump-tree-vrp@r{[}-@var{n}@r{]} @gol -ftree-vectorizer-verbose=@var{n} @gol -fdump-tree-storeccp@r{[}-@var{n}@r{]} @gol -feliminate-dwarf2-dups -feliminate-unused-debug-types @gol @@ -636,7 +637,7 @@ See RS/6000 and PowerPC Options. -minsert-sched-nops=@var{scheme} @gol -mcall-sysv -mcall-netbsd @gol -maix-struct-return -msvr4-struct-return @gol --mabi=@var{abi-type} @gol +-mabi=@var{abi-type} -msecure-plt -mbss-plt @gol -misel -mno-isel @gol -misel=yes -misel=no @gol -mspe -mno-spe @gol @@ -732,6 +733,7 @@ See S/390 and zSeries Options. -finhibit-size-directive -finstrument-functions @gol -fno-common -fno-ident @gol -fpcc-struct-return -fpic -fPIC -fpie -fPIE @gol +-fno-jump-tables @gol -freg-struct-return -fshared-data -fshort-enums @gol -fshort-double -fshort-wchar @gol -fverbose-asm -fpack-struct[=@var{n}] -fstack-check @gol @@ -4066,6 +4068,11 @@ file name. Dump each function after applying vectorization of loops. The file name is made by appending @file{.vect} to the source file name. +@item vrp +@opindex fdump-tree-vrp +Dump each function after Value Range Propagation (VRP). The file name +is made by appending @file{.vrp} to the source file name. + @item all @opindex fdump-tree-all Enable all the available tree dumps with the flags provided in this option. @@ -4320,6 +4327,7 @@ also turns on the following optimization flags: -funit-at-a-time @gol -falign-functions -falign-jumps @gol -falign-loops -falign-labels @gol +-ftree-vrp @gol -ftree-pre} Please note the warning under @option{-fgcse} about @@ -4470,7 +4478,7 @@ See below for a documentation of the individual parameters controlling inlining. @emph{Note:} pseudo instruction represents, in this particular context, an -abstract measurement of function's size. In no way, it represents a count +abstract measurement of function's size. In no way does it represent a count of assembly instructions and as such its exact meaning might change from one release to an another. @@ -4962,6 +4970,15 @@ optimization later. This is enabled by default at @option{-O} and higher. @item -ftree-vectorize Perform loop vectorization on trees. +@item -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 +checks like array bound checks and null pointer checks. This is +enabled by default at @option{-O2} and higher. Null pointer check +elimination is only done if @option{-fdelete-null-pointer-checks} is +enabled. + @item -ftracer @opindex ftracer Perform tail duplication to enlarge superblock size. This transformation @@ -6883,10 +6900,6 @@ Some configurations of the compiler also support additional special options, usually for compatibility with other compilers on the same platform. -These options are defined by the macro @code{TARGET_SWITCHES} in the -machine description. The default for the options is also defined by -that macro, which enables you to change the defaults. - @c This list is ordered alphanumerically by subsection name. @c It should be the same order and spelling as these options are listed @c in Machine Dependent Options @@ -10733,6 +10746,18 @@ ABI@. @opindex mabi=no-spe Disable Booke SPE ABI extensions for the current ABI@. +@item -msecure-plt +@opindex msecure-plt +Generate code that allows ld and ld.so to build executables and shared +libraries with non-exec .plt and .got sections. This is a PowerPC +32-bit SYSV ABI option. + +@item -mbss-plt +@opindex mbss-plt +Generate code that uses a BSS .plt section that ld.so fills in, and +requires .plt and .got sections that are both writable and executable. +This is a PowerPC 32-bit SYSV ABI option. + @item -misel @itemx -mno-isel @opindex misel @@ -12574,6 +12599,15 @@ generated position independent code can be only linked into executables. Usually these options are used when @option{-pie} GCC option will be used during linking. +@item -fno-jump-tables +@opindex fno-jump-tables +Do not use jump tables for switch statements even where it would be +more efficient than other code generation strategies. This option is +of use in conjunction with @option{-fpic} or @option{-fPIC} for +building code which forms part of a dynamic linker and cannot +reference the address of a jump table. On some targets, jump tables +do not require a GOT and this option is not needed. + @item -ffixed-@var{reg} @opindex ffixed Treat the register named @var{reg} as a fixed register; generated code @@ -12774,8 +12808,8 @@ For those adding visibility support to existing code, you may find @samp{#pragma GCC visibility} of use. This works by you enclosing the declarations you wish to set visibility for with (for example) @samp{#pragma GCC visibility push(hidden)} and -@samp{#pragma GCC visibility pop}. These can be nested up to sixteen -times. Bear in mind that symbol visibility should be viewed @strong{as +@samp{#pragma GCC visibility pop}. +Bear in mind that symbol visibility should be viewed @strong{as part of the API interface contract} and thus all new code should always specify visibility when it is not the default ie; declarations only for use within the local DSO should @strong{always} be marked explicitly diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index 307a325e5de..b4ada5bebdb 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -121,12 +121,29 @@ will check and convert the argument before passing it to the relevant option handler. @item Var(@var{var}) -The option controls an integer variable @var{var}. If the option has -the @code{UInteger} property, the option parser will set @var{var} to -the value of the user-specified argument. Otherwise the option is -assumed to be an on/off switch that is active when @var{var} is nonzero. -In this case, the option parser will set @var{var} to 1 when the positive -form of the option is used and 0 when the ``no-'' form is used. +The state of this option should be stored in variable @var{var}. +The way that the state is stored depends on the type of option: + +@itemize @bullet +@item +If the option uses the @code{Mask} or @code{InverseMask} properties, +@var{var} is the integer variable that contains the mask. + +@item +If the option is a normal on/off switch, @var{var} is an integer +variable that is nonzero when the option is enabled. The options +parser will set the variable to 1 when the positive form of the +option is used and 0 when the ``no-'' form is used. + +@item +If the option takes an argument and has the @code{UInteger} property, +@var{var} is an integer variable that stores the value of the argument. + +@item +Otherwise, if the option takes an argument, @var{var} is a pointer to +the argument string. The pointer will be null if the argument is optional +and wasn't given. +@end itemize The option-processing script will usually declare @var{var} in @file{options.c} and leave it to be zero-initialized at start-up time. diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index f917c85e016..1f9372ebdd5 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -3115,9 +3115,6 @@ Appears near the end of the function body, just before the label that does not suffice for returning). This note may be deleted by jump optimization. -@findex NOTE_INSN_SETJMP -@item NOTE_INSN_SETJMP -Appears following each call to @code{setjmp} or a related function. @end table These codes are printed symbolically when they appear in debugging dumps. @@ -3298,6 +3295,11 @@ of this note indicates to other optimizations that this this branching instruction should not be ``collapsed'' into a simpler branching construct. It is used when the optimization to partition basic blocks into hot and cold sections is turned on. + +@findex REG_SETJMP +@item REG_SETJMP +Appears attached to each @code{CALL_INSN} to @code{setjmp} or a +related function. @end table The following notes describe attributes of outputs of an insn: diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index e541a20d2a9..a4adcb9db55 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -728,11 +728,11 @@ any target-specific headers. @deftypevar {Target Hook} int TARGET_DEFAULT_TARGET_FLAGS This variable specifies the initial value of @code{target_flags}. Its default setting is 0. - -If the target defines @code{TARGET_SWITCHES}, the null -@code{TARGET_SWITCHES} entry will override this value. @end deftypevar +@cindex optional hardware or system features +@cindex features, optional, in system conventions + @deftypefn {Target Hook} bool TARGET_HANDLE_OPTION (size_t @var{code}, const char *@var{arg}, int @var{value}) This hook is called whenever the user specifies one of the target-specific options described by the @file{.opt} definition files @@ -750,153 +750,6 @@ argument. Otherwise @var{value} is 1 if the positive form of the option was used and 0 if the ``no-'' form was. @end deftypefn -@cindex optional hardware or system features -@cindex features, optional, in system conventions - -@defmac TARGET_@var{featurename} -This series of macros is to allow compiler command arguments to -enable or disable the use of optional features of the target machine. -For example, one machine description serves both the 68000 and -the 68020; a command argument tells the compiler whether it should -use 68020-only instructions or not. This command argument works -by means of a macro @code{TARGET_68020} that tests a bit in -@code{target_flags}. - -Define a macro @code{TARGET_@var{featurename}} for each such option. -Its definition should test a bit in @code{target_flags}. It is -recommended that a helper macro @code{MASK_@var{featurename}} -is defined for each bit-value to test, and used in -@code{TARGET_@var{featurename}} and @code{TARGET_SWITCHES}. For -example: - -@smallexample -#define TARGET_MASK_68020 1 -#define TARGET_68020 (target_flags & MASK_68020) -@end smallexample - -One place where these macros are used is in the condition-expressions -of instruction patterns. Note how @code{TARGET_68020} appears -frequently in the 68000 machine description file, @file{m68k.md}. -Another place they are used is in the definitions of the other -macros in the @file{@var{machine}.h} file. -@end defmac - -@defmac TARGET_SWITCHES -This macro defines names of command options to set and clear -bits in @code{target_flags}. Its definition is an initializer -with a subgrouping for each command option. - -Each subgrouping contains a string constant, that defines the option -name, a number, which contains the bits to set in -@code{target_flags}, and a second string which is the description -displayed by @option{--help}. If the number is negative then the bits specified -by the number are cleared instead of being set. If the description -string is present but empty, then no help information will be displayed -for that option, but it will not count as an undocumented option. The -actual option name is made by appending @samp{-m} to the specified name. -Non-empty description strings should be marked with @code{N_(@dots{})} for -@command{xgettext}. Please do not mark empty strings because the empty -string is reserved by GNU gettext. @code{gettext("")} returns the header entry -of the message catalog with meta information, not the empty string. - -In addition to the description for @option{--help}, -more detailed documentation for each option should be added to -@file{invoke.texi}. - -One of the subgroupings should have a null string. The number in -this grouping is the default value for @code{target_flags}. Any -target options act starting with that value. - -Here is an example which defines @option{-m68000} and @option{-m68020} -with opposite meanings, and picks the latter as the default: - -@smallexample -#define TARGET_SWITCHES \ - @{ @{ "68020", MASK_68020, "" @}, \ - @{ "68000", -MASK_68020, \ - N_("Compile for the 68000") @}, \ - @{ "", MASK_68020, "" @}, \ - @} -@end smallexample - -This macro is being kept for compatibility with older backends. -New targets should use option definition files instead. -@xref{Back End}. -@end defmac - -@defmac TARGET_OPTIONS -This macro is similar to @code{TARGET_SWITCHES} but defines names of command -options that have values. Its definition is an initializer with a -subgrouping for each command option. - -Each subgrouping contains a string constant, that defines the option -name, the address of a variable, a description string, and a value. -Non-empty description strings should be marked with @code{N_(@dots{})} -for @command{xgettext}. Please do not mark empty strings because the -empty string is reserved by GNU gettext. @code{gettext("")} returns the -header entry of the message catalog with meta information, not the empty -string. - -If the value listed in the table is @code{NULL}, then the variable, type -@code{char *}, is set to the variable part of the given option if the -fixed part matches. In other words, if the first part of the option -matches what's in the table, the variable will be set to point to the -rest of the option. This allows the user to specify a value for that -option. The actual option name is made by appending @samp{-m} to the -specified name. Again, each option should also be documented in -@file{invoke.texi}. - -If the value listed in the table is non-@code{NULL}, then the option -must match the option in the table exactly (with @samp{-m}), and the -variable is set to point to the value listed in the table. - -Here is an example which defines @option{-mshort-data-@var{number}}. If the -given option is @option{-mshort-data-512}, the variable @code{m88k_short_data} -will be set to the string @code{"512"}. - -@smallexample -extern char *m88k_short_data; -#define TARGET_OPTIONS \ - @{ @{ "short-data-", &m88k_short_data, \ - N_("Specify the size of the short data section"), 0 @} @} -@end smallexample - -Here is a variant of the above that allows the user to also specify -just @option{-mshort-data} where a default of @code{"64"} is used. - -@smallexample -extern char *m88k_short_data; -#define TARGET_OPTIONS \ - @{ @{ "short-data-", &m88k_short_data, \ - N_("Specify the size of the short data section"), 0 @} \ - @{ "short-data", &m88k_short_data, "", "64" @}, - @} -@end smallexample - -Here is an example which defines @option{-mno-alu}, @option{-malu1}, and -@option{-malu2} as a three-state switch, along with suitable macros for -checking the state of the option (documentation is elided for brevity). - -@smallexample -[chip.c] -char *chip_alu = ""; /* @r{Specify default here.} */ - -[chip.h] -extern char *chip_alu; -#define TARGET_OPTIONS \ - @{ @{ "no-alu", &chip_alu, "", "" @}, \ - @{ "alu1", &chip_alu, "", "1" @}, \ - @{ "alu2", &chip_alu, "", "2" @}, @} -#define TARGET_ALU (chip_alu[0] != '\0') -#define TARGET_ALU1 (chip_alu[0] == '1') -#define TARGET_ALU2 (chip_alu[0] == '2') -@end smallexample - -This macro is being kept for compatibility with older backends. -New targets should use option definition files instead. -@xref{Back End}. -@end defmac - @defmac TARGET_VERSION This macro is a C statement to print on @code{stderr} a string describing the particular machine description choice. Every machine @@ -8668,24 +8521,32 @@ Default: empty. @section Parameters for Precompiled Header Validity Checking @cindex parameters, precompiled headers -@deftypefn {Target Hook} void * TARGET_GET_PCH_VALIDITY (size_t * @var{sz}) -Define this hook if your target needs to check a different collection -of flags than the default, which is every flag defined by -@code{TARGET_SWITCHES} and @code{TARGET_OPTIONS}. It should return -some data which will be saved in the PCH file and presented to -@code{TARGET_PCH_VALID_P} later; it should set @code{SZ} to the size -of the data. +@deftypefn {Target Hook} void *TARGET_GET_PCH_VALIDITY (size_t *@var{sz}) +This hook returns the data needed by @code{TARGET_PCH_VALID_P} and sets +@samp{*@var{sz}} to the size of the data in bytes. +@end deftypefn + +@deftypefn {Target Hook} const char *TARGET_PCH_VALID_P (const void *@var{data}, size_t @var{sz}) +This hook checks whether the options used to create a PCH file are +compatible with the current settings. It returns @code{NULL} +if so and a suitable error message if not. Error messages will +be presented to the user and must be localized using @samp{_(@var{msg})}. + +@var{data} is the data that was returned by @code{TARGET_GET_PCH_VALIDITY} +when the PCH file was created and @var{sz} is the size of that data in bytes. +It's safe to assume that the data was created by the same version of the +compiler, so no format checking is needed. + +The default definition of @code{default_pch_valid_p} should be +suitable for most targets. @end deftypefn -@deftypefn {Target Hook} const char * TARGET_PCH_VALID_P (const void * @var{data}, size_t @var{sz}) -Define this hook if your target needs to check a different collection of -flags than the default, which is every flag defined by @code{TARGET_SWITCHES} -and @code{TARGET_OPTIONS}. It is given data which came from -@code{TARGET_GET_PCH_VALIDITY} (in this version of this compiler, so there -is no need for extensive validity checking). It returns @code{NULL} if -it is safe to load a PCH file with this data, or a suitable error message -if not. The error message will be presented to the user, so it should -be localized. +@deftypefn {Target Hook} const char *TARGET_CHECK_PCH_TARGET_FLAGS (int @var{pch_flags}) +If this hook is nonnull, the default implementation of +@code{TARGET_PCH_VALID_P} will use it to check for compatible values +of @code{target_flags}. @var{pch_flags} specifies the value that +@code{target_flags} had when the PCH file was created. The return +value is the same as for @code{TARGET_PCH_VALID_P}. @end deftypefn @node C++ ABI @@ -9519,7 +9380,7 @@ low-overhead loop. Many targets use special registers for low-overhead looping. This function should return false for any instruction that clobbers these. By default, the RTL loop optimizer does not use a present doloop pattern for -loops containing function calls or brach on table instructions. +loops containing function calls or branch on table instructions. @end deftypefn @defmac MD_CAN_REDIRECT_BRANCH (@var{branch1}, @var{branch2}) diff --git a/gcc/doc/tree-ssa.texi b/gcc/doc/tree-ssa.texi index bdafee85966..d637149d278 100644 --- a/gcc/doc/tree-ssa.texi +++ b/gcc/doc/tree-ssa.texi @@ -1287,7 +1287,7 @@ After the replacement mappings have been registered and new symbols marked for renaming, a call to @code{update_ssa} makes the registered changes. This can be done with an explicit call or by creating @code{TODO} flags in the @code{tree_opt_pass} structure for your pass. -There are several @code{TODO} flags that control the behaviour of +There are several @code{TODO} flags that control the behavior of @code{update_ssa}: @itemize @bullet @@ -1309,7 +1309,7 @@ There are several @code{TODO} flags that control the behaviour of @item @code{TODO_update_ssa_full_phi}. Insert PHI nodes everywhere - they are needed. No prunning of the IDF is done. This is used + they are needed. No pruning of the IDF is done. This is used by passes that need the PHI nodes for @code{O_j} even if it means that some arguments will come from the default definition of @code{O_j}'s symbol (e.g., @code{pass_linear_transform})@. |