diff options
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/c-tree.texi | 12 | ||||
-rw-r--r-- | gcc/doc/cfg.texi | 4 | ||||
-rw-r--r-- | gcc/doc/collect2.texi | 4 | ||||
-rw-r--r-- | gcc/doc/cpp.texi | 4 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 4 | ||||
-rw-r--r-- | gcc/doc/gimple.texi | 4 | ||||
-rw-r--r-- | gcc/doc/install.texi | 20 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 22 | ||||
-rw-r--r-- | gcc/doc/loop.texi | 2 | ||||
-rw-r--r-- | gcc/doc/md.texi | 10 | ||||
-rw-r--r-- | gcc/doc/options.texi | 2 | ||||
-rw-r--r-- | gcc/doc/passes.texi | 2 | ||||
-rw-r--r-- | gcc/doc/rtl.texi | 8 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 81 | ||||
-rw-r--r-- | gcc/doc/trouble.texi | 2 |
15 files changed, 103 insertions, 78 deletions
diff --git a/gcc/doc/c-tree.texi b/gcc/doc/c-tree.texi index 0039228f18b..117b700ec08 100644 --- a/gcc/doc/c-tree.texi +++ b/gcc/doc/c-tree.texi @@ -373,7 +373,7 @@ The alignment of the type, in bits, represented as an @code{int}. @item TYPE_NAME This macro returns a declaration (in the form of a @code{TYPE_DECL}) for -the type. (Note this macro does @emph{not} return a +the type. (Note this macro does @emph{not} return an @code{IDENTIFIER_NODE}, as you might expect, given its name!) You can look at the @code{DECL_NAME} of the @code{TYPE_DECL} to obtain the actual name of the type. The @code{TYPE_NAME} will be @code{NULL_TREE} @@ -1256,7 +1256,7 @@ structures, something like the following should be used @findex OVL_NEXT A function is represented by a @code{FUNCTION_DECL} node. A set of -overloaded functions is sometimes represented by a @code{OVERLOAD} node. +overloaded functions is sometimes represented by an @code{OVERLOAD} node. An @code{OVERLOAD} node is not a declaration, so none of the @samp{DECL_} macros should be used on an @code{OVERLOAD}. An @@ -2113,9 +2113,9 @@ comparisons, and so forth. These nodes represent fixed-point constants. The type of these constants is obtained with @code{TREE_TYPE}. @code{TREE_FIXED_CST_PTR} points to -to struct fixed_value; @code{TREE_FIXED_CST} returns the structure itself. -Struct fixed_value contains @code{data} with the size of two -HOST_BITS_PER_WIDE_INT and @code{mode} as the associated fixed-point +a @code{struct fixed_value}; @code{TREE_FIXED_CST} returns the structure +itself. @code{struct fixed_value} contains @code{data} with the size of two +@code{HOST_BITS_PER_WIDE_INT} and @code{mode} as the associated fixed-point machine mode for @code{data}. @item COMPLEX_CST @@ -2569,7 +2569,7 @@ The statement-expression extension allows code like this: @smallexample int f() @{ return (@{ int j; j = 3; j + 7; @}); @} @end smallexample -In other words, an sequence of statements may occur where a single +In other words, a sequence of statements may occur where a single expression would normally appear. The @code{STMT_EXPR} node represents such an expression. The @code{STMT_EXPR_STMT} gives the statement contained in the expression. The value of the expression is the value diff --git a/gcc/doc/cfg.texi b/gcc/doc/cfg.texi index 323f6b51619..660c09c81ce 100644 --- a/gcc/doc/cfg.texi +++ b/gcc/doc/cfg.texi @@ -608,7 +608,7 @@ includes the creation of new basic blocks where needed. In the iterator on an edge, and @code{bsi_commit_edge_inserts} which flushes the instruction to actual instruction stream. -While debugging the optimization pass, an @code{verify_flow_info} +While debugging the optimization pass, a @code{verify_flow_info} function may be useful to find bugs in the control flow graph updating code. @@ -638,7 +638,7 @@ used on some path from @code{P} to the end of the function. With beginning of the function to @code{P} that defines the variable. @code{LIVE} is the intersection of the @code{LR} and @code{UR} and a variable is live at @code{P} if there is both an assignment that reaches -it from the beginning of the function and a uses that can be reached on +it from the beginning of the function and a use that can be reached on some path from @code{P} to the end of the function. In general @code{LIVE} is the most useful of the three. The macros diff --git a/gcc/doc/collect2.texi b/gcc/doc/collect2.texi index c3498c5317c..7cd5c935518 100644 --- a/gcc/doc/collect2.texi +++ b/gcc/doc/collect2.texi @@ -32,6 +32,10 @@ names: @itemize @bullet @item +a hard coded linker file name, if GCC was configured with the +@option{--with-ld} option. + +@item @file{real-ld} in the directories listed in the compiler's search directories. diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi index d79991c16f7..ce4c0c3ff5d 100644 --- a/gcc/doc/cpp.texi +++ b/gcc/doc/cpp.texi @@ -1936,7 +1936,7 @@ in the near future. @item __OBJC__ This macro is defined, with value 1, when the Objective-C compiler is in use. You can use @code{__OBJC__} to test whether a header is compiled -by a C compiler or a Objective-C compiler. +by a C compiler or an Objective-C compiler. @item __ASSEMBLER__ This macro is defined with value 1 when preprocessing assembly @@ -4042,7 +4042,7 @@ The preprocessor and compiler interpret character constants in the same way; i.e.@: escape sequences such as @samp{\a} are given the values they would have on the target machine. -The compiler values a multi-character character constant a character +The compiler evaluates a multi-character character constant a character at a time, shifting the previous value left by the number of bits per target character, and then or-ing in the bit-pattern of the new character truncated to the width of a target character. The final diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 4a7db02c902..4e06be3daca 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -2153,7 +2153,7 @@ On the SH Symbian OS target the @code{dllimport} attribute also has another affect---it can cause the vtable and run-time type information for a class to be exported. This happens when the class has a dllimport'ed constructor or a non-inline, non-pure virtual function -and, for either of those two conditions, the class also has a inline +and, for either of those two conditions, the class also has an inline constructor or destructor and has a key function that is defined in the current translation unit. @@ -4422,7 +4422,7 @@ struct __attribute__ ((__packed__)) my_packed_struct @}; @end smallexample -You may only specify this attribute on the definition of a @code{enum}, +You may only specify this attribute on the definition of an @code{enum}, @code{struct} or @code{union}, not on a @code{typedef} which does not also define the enumerated type, structure or union. diff --git a/gcc/doc/gimple.texi b/gcc/doc/gimple.texi index 34b768949f1..cc1e8903fdb 100644 --- a/gcc/doc/gimple.texi +++ b/gcc/doc/gimple.texi @@ -389,7 +389,7 @@ types, the associated handler code is executed. If the handler code falls off the bottom, execution continues after the original @code{GIMPLE_TRY_CATCH}. -@item An @code{GIMPLE_EH_FILTER} statement. This has a list of +@item A @code{GIMPLE_EH_FILTER} statement. This has a list of permitted exception types, and code to handle a match failure. If the thrown exception does not match one of the allowed types, the associated match failure code is executed. If the thrown exception @@ -1087,7 +1087,7 @@ statement @code{G}. @end deftypefn @deftypefn {GIMPLE function} bool gimple_assign_cast_p (gimple s) -Return true if @code{S} is an type-cast assignment. +Return true if @code{S} is a type-cast assignment. @end deftypefn diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 7cba4d3df0e..5788e68fac5 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -464,7 +464,7 @@ the GCC-specific entry point. You can download a suitable jar from @itemx antlr binary If you wish to build the @command{gjdoc} binary in libjava, you will -need to have a @file{antlr.jar} library available. The library is +need to have an @file{antlr.jar} library available. The library is searched in system locations but can be configured with @option{--with-antlr-jar=} instead. When configuring with @option{--enable-java-maintainer-mode}, you will need to have one of @@ -1111,8 +1111,8 @@ Specify which cpu variant the compiler should generate code for by default. This option is only supported on some targets, including ARM, i386, M68k, PowerPC, and SPARC@. The @option{--with-cpu-32} and @option{--with-cpu-64} options specify separate default CPUs for -32-bit and 64-bit modes; these options are only supported for i386 and -x86-64. +32-bit and 64-bit modes; these options are only supported for i386, +x86-64 and PowerPC. @item --with-schedule=@var{cpu} @itemx --with-arch=@var{cpu} @@ -1536,6 +1536,14 @@ Convert source directory names using @option{-fdebug-prefix-map} when building runtime libraries. @samp{@var{map}} is a space-separated list of maps of the form @samp{@var{old}=@var{new}}. +@item --enable-linker-build-id +Tells GCC to pass @option{--build-id} option to the linker for all final +links (links performed without the @option{-r} or @option{--relocatable} +option), if the linker supports it. If you specify +@option{--enable-linker-build-id}, but your linker does not +support @option{--build-id} option, a warning is issued and the +@option{--enable-linker-build-id} option is ignored. The default is off. + @end table @subheading Cross-Compiler-Specific Options @@ -1605,7 +1613,7 @@ that will be used while building GCC itself. This option can be useful if the directory layouts are different between the system you are building GCC on, and the system where you will deploy it. -For example, on a @option{ia64-hp-hpux} system, you may have the GNU +For example, on an @samp{ia64-hp-hpux} system, you may have the GNU assembler and linker in @file{/usr/bin}, and the native tools in a different path, and build a toolchain that expects to find the native tools in @file{/usr/bin}. @@ -3389,7 +3397,7 @@ The native AIX tools do interoperate with GCC@. Building @file{libstdc++.a} requires a fix for an AIX Assembler bug APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). It also requires a fix for another AIX Assembler bug and a co-dependent AIX Archiver fix -referenced as APAR IY53606 (AIX 5.2) or a APAR IY54774 (AIX 5.1) +referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1) @samp{libstdc++} in GCC 3.4 increments the major version number of the shared object and GCC installation places the @file{libstdc++.a} @@ -3944,7 +3952,7 @@ 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 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). +an 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: diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 417bd3113c7..b2016a10fd7 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -3152,7 +3152,7 @@ Warn whenever a function is defined with a return-type that defaults to @code{int}. Also warn about any @code{return} statement with no return-value in a function whose return-type is not @code{void} (falling off the end of the function body is considered returning -without a value), and about a @code{return} statement with a +without a value), and about a @code{return} statement with an expression in a function whose return-type is @code{void}. For C++, a function without return type always produces a diagnostic @@ -6211,8 +6211,8 @@ This flag is enabled by default at @option{-O3}. @item -fipa-matrix-reorg @opindex fipa-matrix-reorg Perform matrix flattening and transposing. -Matrix flattening tries to replace a m-dimensional matrix -with its equivalent n-dimensional matrix, where n < m. +Matrix flattening tries to replace an @math{m}-dimensional matrix +with its equivalent @math{n}-dimensional matrix, where @math{n < m}. This reduces the level of indirection needed for accessing the elements of the matrix. The second optimization is matrix transposing that attempts to change the order of the matrix's dimensions in order to @@ -6776,13 +6776,13 @@ Enabled by default with @option{-funroll-loops}. @item -fwhole-program @opindex fwhole-program -Assume that the current compilation unit represents whole program being +Assume that the current compilation unit represents the whole program being compiled. All public functions and variables with the exception of @code{main} and those merged by attribute @code{externally_visible} become static functions -and in a affect gets more aggressively optimized by interprocedural optimizers. -While this option is equivalent to proper use of @code{static} keyword for -programs consisting of single file, in combination with option -@option{--combine} this flag can be used to compile most of smaller scale C +and in effect are optimized more aggressively by interprocedural optimizers. +While this option is equivalent to proper use of the @code{static} keyword for +programs consisting of a single file, in combination with option +@option{--combine} this flag can be used to compile many smaller scale C programs since the functions and variables become local for the whole combined compilation unit, not for the single source file itself. @@ -9185,7 +9185,7 @@ assembly code. Permissible names are: @samp{arm2}, @samp{arm250}, @samp{arm10tdmi}, @samp{arm1020t}, @samp{arm1026ej-s}, @samp{arm10e}, @samp{arm1020e}, @samp{arm1022e}, @samp{arm1136j-s}, @samp{arm1136jf-s}, @samp{mpcore}, @samp{mpcorenovfp}, -@samp{arm1156t2-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s}, +@samp{arm1156t2-s}, @samp{arm1156t2f-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s}, @samp{cortex-a8}, @samp{cortex-a9}, @samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-m3}, @samp{cortex-m1}, @@ -9437,7 +9437,7 @@ Change only the low 8 bits of the stack pointer. @item -mint8 @opindex mint8 Assume int to be 8 bit integer. This affects the sizes of all types: A -char will be 1 byte, an int will be 1 byte, an long will be 2 bytes +char will be 1 byte, an int will be 1 byte, a long will be 2 bytes and long long will be 4 bytes. Please note that this option does not comply to the C standards, but it will provide you with smaller code size. @@ -9808,7 +9808,7 @@ that GCC is targetting, like @option{-mcpu} or @option{-march}. The The Darwin tools vary in their behavior when presented with an ISA mismatch. The assembler, @file{as}, will only permit instructions to be used that are valid for the subtype of the file it is generating, -so you cannot put 64-bit instructions in an @samp{ppc750} object file. +so you cannot put 64-bit instructions in a @samp{ppc750} object file. The linker for shared libraries, @file{/usr/bin/libtool}, will fail and print an error if asked to create a shared library with a less restrictive subtype than its input files (for instance, trying to put diff --git a/gcc/doc/loop.texi b/gcc/doc/loop.texi index 567d7117af4..356c00d02b1 100644 --- a/gcc/doc/loop.texi +++ b/gcc/doc/loop.texi @@ -605,7 +605,7 @@ improve cache behavior or remove inner loop dependencies to allow parallelization and vectorization to take place. To perform these transformations, Lambda requires that the loopnest be -converted into a internal form that can be matrix transformed easily. +converted into an internal form that can be matrix transformed easily. To do this conversion, the function @code{gcc_loopnest_to_lambda_loopnest} is provided. If the loop cannot be transformed using lambda, this function will return NULL. diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index a78233c8eaa..7c4da3192c5 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -552,7 +552,7 @@ As a special case, a template consisting of the single character @code{#} instructs the compiler to first split the insn, and then output the resulting instructions separately. This helps eliminate redundancy in the output templates. If you have a @code{define_insn} that needs to emit -multiple assembler instructions, and there is an matching @code{define_split} +multiple assembler instructions, and there is a matching @code{define_split} already defined, then you can simply use @code{#} as the output template instead of writing an output template that emits the multiple assembler instructions. @@ -3323,7 +3323,7 @@ memory address of this type. If @samp{Q} is defined with @code{define_memory_constraint}, a @samp{Q} constraint can handle any memory operand, because @code{reload} knows it can simply copy the memory address into a base register if required. This is analogous to -the way a @samp{o} constraint can handle any memory operand. +the way an @samp{o} constraint can handle any memory operand. The syntax and semantics are otherwise identical to @code{define_constraint}. @@ -4729,7 +4729,7 @@ A label that precedes the table itself. A label to jump to if the index has a value outside the bounds. @end enumerate -The table is a @code{addr_vec} or @code{addr_diff_vec} inside of a +The table is an @code{addr_vec} or @code{addr_diff_vec} inside of a @code{jump_insn}. The number of elements in the table is one plus the difference between the upper bound and the lower bound. @@ -4949,7 +4949,7 @@ the first three are normally used by the generic mechanism. @cindex @code{builtin_setjmp_receiver} instruction pattern @item @samp{builtin_setjmp_receiver} -This pattern, if defined, contains code needed at the site of an +This pattern, if defined, contains code needed at the site of a built-in setjmp that isn't needed at the site of a nonlocal goto. You will not normally need to define this pattern. A typical reason why you might need this pattern is if some value, such as a pointer to a global @@ -6116,7 +6116,7 @@ more assistance is needed. Splitter is required to create only unconditional jumps, or simple conditional jump instructions. Additionally it must attach a @code{REG_BR_PROB} note to each conditional jump. A global variable @code{split_branch_probability} holds the probability of the original branch in case -it was an simple conditional jump, @minus{}1 otherwise. To simplify +it was a simple conditional jump, @minus{}1 otherwise. To simplify recomputing of edge frequencies, the new sequence is required to have only forward jumps to the newly created labels. diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index a05a6b2c333..53ad66bb7f6 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -106,7 +106,7 @@ The option does not have a ``no-'' form. All options beginning with property is used. @item Negative(@var{othername}) -The option will turn off another option @var{othername}, which is the +The option will turn off another option @var{othername}, which is the option name with the leading ``-'' removed. This chain action will propagate through the @code{Negative} property of the option to be turned off. diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi index 51dcc410143..3dcee398dd5 100644 --- a/gcc/doc/passes.texi +++ b/gcc/doc/passes.texi @@ -297,7 +297,7 @@ times throughout the optimization process. It is located in This pass performs trivial dominator-based copy and constant propagation, expression simplification, and jump threading. It is run multiple times -throughout the optimization process. It it located in @file{tree-ssa-dom.c} +throughout the optimization process. It is located in @file{tree-ssa-dom.c} and is described by @code{pass_dominator}. @item Forward propagation of single-use variables diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index 1411f24e5d9..2567f10f4b0 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -2950,7 +2950,7 @@ store a value in @var{x}. @var{x} must be a @code{reg} expression. In some situations, it may be tempting to add a @code{use} of a register in a @code{parallel} to describe a situation where the value of a special register will modify the behavior of the instruction. -An hypothetical example might be a pattern for an addition that can +A hypothetical example might be a pattern for an addition that can either wrap around or use saturating addition depending on the value of a special control register: @@ -3256,7 +3256,7 @@ mode @var{m1} is the mode of the sum @code{x+y}; @var{m2} is that of When an @code{asm} statement has multiple output values, its insn has several such @code{set} RTX's inside of a @code{parallel}. Each @code{set} -contains a @code{asm_operands}; all of these share the same assembler +contains an @code{asm_operands}; all of these share the same assembler template and vectors, but each contains the constraint for the respective output operand. They are also distinguished by the output-operand index number, which is 0, 1, @dots{} for successive output operands. @@ -3680,7 +3680,7 @@ used, and flow optimization to build an accurate flow graph. @findex REG_LABEL_TARGET @item REG_LABEL_TARGET -This insn is a @code{jump_insn} but not a @code{addr_vec} or +This insn is a @code{jump_insn} but not an @code{addr_vec} or @code{addr_diff_vec}. It uses @var{op}, a @code{code_label} as a direct or indirect jump target. Its purpose is similar to that of @code{REG_LABEL_OPERAND}. This note is only present if the insn has @@ -3690,7 +3690,7 @@ insn-field) goes into the @code{JUMP_LABEL} field and does not have a @findex REG_CROSSING_JUMP @item REG_CROSSING_JUMP -This insn is an branching instruction (either an unconditional jump or +This insn is a branching instruction (either an unconditional jump or an indirect jump) which crosses between hot and cold sections, which could potentially be very far apart in the executable. The presence of this note indicates to other optimizations that this branching diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 5718eb9be67..4c9b16279b5 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -2503,9 +2503,18 @@ added to another register (as well as added to a displacement). @defmac REGNO_OK_FOR_BASE_P (@var{num}) A C expression which is nonzero if register number @var{num} is -suitable for use as a base register in operand addresses. It may be -either a suitable hard register or a pseudo register that has been -allocated such a hard register. +suitable for use as a base register in operand addresses. +Like @code{GO_IF_LEGITIMATE_ADDRESS}, this macro should also +exist in strict or non-strict variants. Both variants behave +the same for hard register; for pseudos, the strict variant will +pass only those that have been allocated to a valid hard registers, +while the non-strict variant will pass all pseudos. + +@findex REG_OK_STRICT +Compiler source files that want to use the strict variant of this and +other macros define the macro @code{REG_OK_STRICT}. You should use an +@code{#ifdef REG_OK_STRICT} conditional to define the strict variant in +that case and the non-strict variant otherwise. @end defmac @defmac REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode}) @@ -2518,6 +2527,7 @@ you define this macro, the compiler will use it instead of addresses that appear outside a @code{MEM}, i.e., as an @code{address_operand}. +This macro also has strict and non-strict variants. @end defmac @defmac REGNO_MODE_OK_FOR_REG_BASE_P (@var{num}, @var{mode}) @@ -2530,6 +2540,8 @@ than other base register uses. Use of this macro is deprecated; please use the more general @code{REGNO_MODE_CODE_OK_FOR_BASE_P}. + +This macro also has strict and non-strict variants. @end defmac @defmac REGNO_MODE_CODE_OK_FOR_BASE_P (@var{num}, @var{mode}, @var{outer_code}, @var{index_code}) @@ -2542,6 +2554,8 @@ address, @code{ADDRESS} for something that occurs in an corresponding index expression if @var{outer_code} is @code{PLUS}; @code{SCRATCH} otherwise. The mode may be @code{VOIDmode} for addresses that appear outside a @code{MEM}, i.e., as an @code{address_operand}. + +This macro also has strict and non-strict variants. @end defmac @defmac REGNO_OK_FOR_INDEX_P (@var{num}) @@ -2558,6 +2572,8 @@ labeling is used must fit the machine's constraints of which registers may serve in each capacity. The compiler will try both labelings, looking for one that is valid, and will reload one or both registers only if neither labeling works. + +This macro also has strict and non-strict variants. @end defmac @defmac PREFERRED_RELOAD_CLASS (@var{x}, @var{class}) @@ -2641,7 +2657,7 @@ allow copying all registers to and from memory, but require a scratch register for stores to some memory locations (e.g., those with symbolic address on the RT, and those with certain symbolic address on the SPARC when compiling PIC)@. Scratch registers need not have the same mode -as the value being copied, and usually hold a different value that +as the value being copied, and usually hold a different value than that being copied. Special patterns in the md file are needed to describe how the copy is performed with the help of the scratch register; these patterns also describe the number, register class(es) and mode(s) @@ -3030,7 +3046,7 @@ If the letter @samp{Q} is marked as @code{EXTRA_MEMORY_CONSTRAINT}, a @samp{Q} constraint can handle any memory operand, because the reload pass knows it can be reloaded by copying the memory address into a base register if required. This is analogous to the way -a @samp{o} constraint can handle any memory operand. +an @samp{o} constraint can handle any memory operand. @end defmac @defmac EXTRA_ADDRESS_CONSTRAINT (@var{c}, @var{str}) @@ -3722,15 +3738,16 @@ return @code{@var{regno}}. This is about eliminating the frame pointer and arg pointer. @defmac FRAME_POINTER_REQUIRED -A C expression which is nonzero if a function must have and use a frame +A C expression which is @code{true} if a function must have and use a frame pointer. This expression is evaluated in the reload pass. If its value is -nonzero the function will have a frame pointer. +@code{true} the function will have a frame pointer. The expression can in principle examine the current function and decide -according to the facts, but on most machines the constant 0 or the -constant 1 suffices. Use 0 when the machine allows code to be generated -with no frame pointer, and doing so saves some time or space. Use 1 -when there is no possible advantage to avoiding a frame pointer. +according to the facts, but on most machines the constant @code{false} or the +constant @code{true} suffices. Use @code{false} when the machine allows code +to be generated with no frame pointer, and doing so saves some time or space. +Use @code{true} when there is no possible advantage to avoiding a frame +pointer. In certain cases, the compiler does not know how to produce valid code without a frame pointer. The compiler recognizes those cases and @@ -3741,6 +3758,8 @@ them. In a function that does not require a frame pointer, the frame pointer register can be allocated for ordinary usage, unless you mark it as a fixed register. See @code{FIXED_REGISTERS} for more information. + +Default value is @code{false}. @end defmac @findex get_frame_size @@ -4301,7 +4320,7 @@ values---values that can fit in registers. Define this to return an RTX representing the place where a function returns or receives a value of data type @var{ret_type}, a tree node -node representing a data type. @var{fn_decl_or_type} is a tree node +representing a data type. @var{fn_decl_or_type} is a tree node representing @code{FUNCTION_DECL} or @code{FUNCTION_TYPE} of a function being called. If @var{outgoing} is false, the hook should compute the register in which the caller will see the return value. @@ -5424,32 +5443,26 @@ The typical use of this macro is to handle addresses containing a label_ref or symbol_ref within an UNSPEC@. @end defmac -@defmac LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win}) -A C compound statement that attempts to replace @var{x} with a valid -memory address for an operand of mode @var{mode}. @var{win} will be a -C statement label elsewhere in the code; the macro definition may use - -@smallexample -GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{win}); -@end smallexample - -@noindent -to avoid further processing if the address has become legitimate. +@deftypefn {Target Hook} rtx TARGET_LEGITIMIZE_ADDRESS (rtx @var{x}, rtx @var{oldx}, enum machine_mode @var{mode}) +This hook is given an invalid memory address @var{x} for an +operand of mode @var{mode} and should try to return a valid memory +address. @findex break_out_memory_refs @var{x} will always be the result of a call to @code{break_out_memory_refs}, and @var{oldx} will be the operand that was given to that function to produce @var{x}. -The code generated by this macro should not alter the substructure of +The code of the hook should not alter the substructure of @var{x}. If it transforms @var{x} into a more legitimate form, it -should assign @var{x} (which will always be a C variable) a new value. +should return the new @var{x}. -It is not necessary for this macro to come up with a legitimate -address. The compiler has standard ways of doing so in all cases. In -fact, it is safe to omit this macro. But often a -machine-dependent strategy can generate better code. -@end defmac +It is not necessary for this hook to come up with a legitimate address. +The compiler has standard ways of doing so in all cases. In fact, it +is safe to omit this hook or make it return @var{x} if it cannot find +a valid way to legitimize the address. But often a machine-dependent +strategy can generate better code. +@end deftypefn @defmac LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type}, @var{ind_levels}, @var{win}) A C compound statement that attempts to replace @var{x}, which is an address @@ -8962,7 +8975,7 @@ of compilation, which is correct for most machines. @defmac DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END Define this macro @emph{instead of} defining @code{DBX_OUTPUT_MAIN_SOURCE_FILE_END}, if what needs to be output at -the end of compilation is a @code{N_SO} stab with an empty string, +the end of compilation is an @code{N_SO} stab with an empty string, whose value is the highest absolute text address in the file. @end defmac @@ -9712,12 +9725,12 @@ contain relative addresses only when @option{-fPIC} or @option{-fPIC} is in effect. @end defmac -@defmac CASE_VALUES_THRESHOLD -Define this to be the smallest number of different values for which it +@deftypefn {Target Hook} unsigned int TARGET_CASE_VALUES_THRESHOLD (void) +This function return the smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches. The default is four for machines with a @code{casesi} instruction and five otherwise. This is best for most machines. -@end defmac +@end deftypefn @defmac CASE_USE_BIT_TESTS Define this macro to be a C expression to indicate whether C switch diff --git a/gcc/doc/trouble.texi b/gcc/doc/trouble.texi index a3d8187e649..c08e8b31b88 100644 --- a/gcc/doc/trouble.texi +++ b/gcc/doc/trouble.texi @@ -342,7 +342,7 @@ Declarations of external variables and functions within a block apply only to the block containing the declaration. In other words, they have the same scope as any other declaration in the same place. -In some other C compilers, a @code{extern} declaration affects all the +In some other C compilers, an @code{extern} declaration affects all the rest of the file even if it happens within a block. @item |