aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/doc/gccint.info
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8/gcc/doc/gccint.info')
-rw-r--r--gcc-4.8/gcc/doc/gccint.info1145
1 files changed, 608 insertions, 537 deletions
diff --git a/gcc-4.8/gcc/doc/gccint.info b/gcc-4.8/gcc/doc/gccint.info
index e41c572a0..83f533215 100644
--- a/gcc-4.8/gcc/doc/gccint.info
+++ b/gcc-4.8/gcc/doc/gccint.info
@@ -1,5 +1,5 @@
-This is doc/gccint.info, produced by makeinfo version 4.13 from
-/d/gcc-4.8.1/gcc-4.8.1/gcc/doc/gccint.texi.
+This is doc/gccint.info, produced by makeinfo version 4.12 from
+/space/rguenther/gcc-4.8.3/gcc-4.8.3/gcc/doc/gccint.texi.
Copyright (C) 1988-2013 Free Software Foundation, Inc.
@@ -57,7 +57,7 @@ Introduction
This manual documents the internals of the GNU compilers, including how
to port them to new targets and some information about how to write
front ends for new languages. It corresponds to the compilers
-(GCC) version 4.8.1. The use of the GNU compilers is documented in a
+(GCC) version 4.8.3. The use of the GNU compilers is documented in a
separate manual. *Note Introduction: (gcc)Top.
This manual is mainly a reference manual rather than a tutorial. It
@@ -3132,7 +3132,7 @@ that contain parts of GCC and its runtime libraries:
The Ada runtime library.
`libatomic'
- The runtime support library for atomic operations (e.g. for
+ The runtime support library for atomic operations (e.g. for
`__sync' and `__atomic').
`libcpp'
@@ -3600,7 +3600,7 @@ languages that are not enabled by default in stage1. For example,
`make f951' will build a Fortran compiler even in the stage1 build
directory.
- ---------- Footnotes ----------
+ ---------- Footnotes ----------
(1) Except if the compiler was buggy and miscompiled some of the files
that were not modified. In this case, it's best to use `make restrap'.
@@ -4935,6 +4935,12 @@ specified for the particular test in an earlier `dg-options' or
7.2.3.8 PowerPC-specific attributes
...................................
+`dfp_hw'
+ PowerPC target supports executing hardware DFP instructions.
+
+`p8vector_hw'
+ PowerPC target supports executing VSX instructions (ISA 2.07).
+
`powerpc64'
Test system supports executing 64-bit instructions.
@@ -4944,12 +4950,24 @@ specified for the particular test in an earlier `dg-options' or
`powerpc_altivec_ok'
PowerPC target supports `-maltivec'.
+`powerpc_eabi_ok'
+ PowerPC target supports `-meabi'.
+
+`powerpc_elfv2'
+ PowerPC target supports `-mabi=elfv2'.
+
`powerpc_fprs'
PowerPC target supports floating-point registers.
`powerpc_hard_double'
PowerPC target supports hardware double-precision floating-point.
+`powerpc_htm_ok'
+ PowerPC target supports `-mhtm'
+
+`powerpc_p8vector_ok'
+ PowerPC target supports `-mpower8-vector'
+
`powerpc_ppu_ok'
PowerPC target supports `-mcpu=cell'.
@@ -4963,10 +4981,6 @@ specified for the particular test in an earlier `dg-options' or
`powerpc_spu'
PowerPC target supports PowerPC SPU.
-`spu_auto_overlay'
- SPU target has toolchain that supports automatic overlay
- generation.
-
`powerpc_vsx_ok'
PowerPC target supports `-mvsx'.
@@ -4974,9 +4988,19 @@ specified for the particular test in an earlier `dg-options' or
Including the options used to compile this particular test, the
PowerPC target supports PowerPC 405.
+`ppc_recip_hw'
+ PowerPC target supports executing reciprocal estimate instructions.
+
+`spu_auto_overlay'
+ SPU target has toolchain that supports automatic overlay
+ generation.
+
`vmx_hw'
PowerPC target supports executing AltiVec instructions.
+`vsx_hw'
+ PowerPC target supports executing VSX instructions (ISA 2.06).
+
7.2.3.9 Other hardware attributes
.................................
@@ -5086,8 +5110,8 @@ specified for the particular test in an earlier `dg-options' or
non-empty string.
`simulator'
- Test system runs executables on a simulator (i.e. slowly) rather
- than hardware (i.e. fast).
+ Test system runs executables on a simulator (i.e. slowly) rather
+ than hardware (i.e. fast).
`stdint_types'
Target has the basic signed and unsigned C types in `stdint.h'.
@@ -6951,7 +6975,7 @@ run after gimplification and what source files they are located in.
Range Propagation, J. R. C. Patterson, PLDI '95). In contrast to
Patterson's algorithm, this implementation does not propagate
branch probabilities nor it uses more than a single range per SSA
- name. This means that the current implementation cannot be used
+ name. This means that the current implementation cannot be used
for branch prediction (though adapting it would not be difficult).
The pass is located in `tree-vrp.c' and is described by `pass_vrp'.
@@ -6971,7 +6995,7 @@ run after gimplification and what source files they are located in.
* Control dependence dead code elimination
This pass is a stronger form of dead code elimination that can
- eliminate unnecessary control flow statements. It is located in
+ eliminate unnecessary control flow statements. It is located in
`tree-ssa-dce.c' and is described by `pass_cd_dce'.
* Tail call elimination
@@ -7027,7 +7051,7 @@ run after gimplification and what source files they are located in.
If a function always returns the same local variable, and that
local variable is an aggregate type, then the variable is replaced
with the return value for the function (i.e., the function's
- DECL_RESULT). This is equivalent to the C++ named return value
+ DECL_RESULT). This is equivalent to the C++ named return value
optimization applied to GIMPLE. The pass is located in
`tree-nrv.c' and is described by `pass_nrv'.
@@ -8265,10 +8289,10 @@ object of `BITS_PER_UNIT' bits (*note Storage Layout::).
"Double Integer" mode represents an eight-byte integer.
`TImode'
- "Tetra Integer" (?) mode represents a sixteen-byte integer.
+ "Tetra Integer" (?) mode represents a sixteen-byte integer.
`OImode'
- "Octa Integer" (?) mode represents a thirty-two-byte integer.
+ "Octa Integer" (?) mode represents a thirty-two-byte integer.
`QFmode'
"Quarter-Floating" mode represents a quarter-precision (single
@@ -8279,7 +8303,7 @@ object of `BITS_PER_UNIT' bits (*note Storage Layout::).
floating point number.
`TQFmode'
- "Three-Quarter-Floating" (?) mode represents a
+ "Three-Quarter-Floating" (?) mode represents a
three-quarter-precision (three byte) floating point number.
`SFmode'
@@ -8840,7 +8864,7 @@ registers and to main memory.
`subreg's come in two distinct flavors, each having its own usage
and rules:
- Paradoxical subregs
+ Paradoxical subregs
When M1 is strictly wider than M2, the `subreg' expression is
called "paradoxical". The canonical test for this class of
`subreg' is:
@@ -8885,7 +8909,7 @@ registers and to main memory.
bytes to an unknown value assuming `SUBREG_PROMOTED_VAR_P' is
false.
- Normal subregs
+ Normal subregs
When M1 is at least as narrow as M2 the `subreg' expression
is called "normal".
@@ -11108,12 +11132,12 @@ case label.
Objective-C++ front ends by allowing efficient comparison between
two type nodes in `same_type_p': if the `TYPE_CANONICAL' values of
the types are equal, the types are equivalent; otherwise, the types
- are not equivalent. The notion of equivalence for canonical types
+ are not equivalent. The notion of equivalence for canonical types
is the same as the notion of type equivalence in the language
- itself. For instance,
+ itself. For instance,
When `TYPE_CANONICAL' is `NULL_TREE', there is no canonical type
- for the given type node. In this case, comparison between this
+ for the given type node. In this case, comparison between this
type and any other type requires the compiler to perform a deep,
"structural" comparison to see if the two type nodes have the same
form and properties.
@@ -11124,7 +11148,7 @@ case label.
canonical type. Similarly, `I*' and a typedef `IP' (defined to
`I*') will has `int*' as their canonical type. When building a new
type node, be sure to set `TYPE_CANONICAL' to the appropriate
- canonical type. If the new type is a compound type (built from
+ canonical type. If the new type is a compound type (built from
other types), and any of those other types require structural
equality, use `SET_TYPE_STRUCTURAL_EQUALITY' to ensure that the
new type also requires structural equality. Finally, if for some
@@ -12663,7 +12687,7 @@ clauses used by the OpenMP API `http://www.openmp.org/'.
which is implicitly private to each thread. Bounds `N1' and `N2'
and the increment expression `INCR' are required to be loop
invariant integer expressions that are evaluated without any
- synchronization. The evaluation order, frequency of evaluation and
+ synchronization. The evaluation order, frequency of evaluation and
side-effects are unspecified by the standard.
`OMP_SECTIONS'
@@ -12711,7 +12735,7 @@ clauses used by the OpenMP API `http://www.openmp.org/'.
`OMP_RETURN'
This does not represent any OpenMP directive, it is an artificial
- marker to indicate the end of the body of an OpenMP. It is used by
+ marker to indicate the end of the body of an OpenMP. It is used by
the flow graph (`tree-cfg.c') and OpenMP region building code
(`omp-low.c').
@@ -13740,7 +13764,7 @@ at McGill University, though we have made some different choices. For
one thing, SIMPLE doesn't support `goto'.
Temporaries are introduced to hold intermediate values needed to
-compute complex expressions. Additionally, all the control structures
+compute complex expressions. Additionally, all the control structures
used in GENERIC are lowered into conditional jumps, lexical scopes are
removed and exception regions are converted into an on the side
exception region tree.
@@ -13751,7 +13775,7 @@ tuples out of the original GENERIC expressions.
One of the early implementation strategies used for the GIMPLE
representation was to use the same internal data structures used by
-front ends to represent parse trees. This simplified implementation
+front ends to represent parse trees. This simplified implementation
because we could leverage existing functionality and interfaces.
However, GIMPLE is a much more restrictive representation than abstract
syntax trees (AST), therefore it does not require the full structural
@@ -13812,14 +13836,14 @@ File: gccint.info, Node: Tuple representation, Next: GIMPLE instruction set,
GIMPLE instructions are tuples of variable size divided in two groups:
a header describing the instruction and its locations, and a variable
-length body with all the operands. Tuples are organized into a
+length body with all the operands. Tuples are organized into a
hierarchy with 3 main classes of tuples.
12.1.1 `gimple_statement_base' (gsbase)
---------------------------------------
This is the root of the hierarchy, it holds basic information needed by
-most GIMPLE statements. There are some fields that may not be relevant
+most GIMPLE statements. There are some fields that may not be relevant
to every GIMPLE statement, but those were moved into the base structure
to take advantage of holes left by other fields (thus making the
structure more compact). The structure takes 4 words (32 bytes) on 64
@@ -13845,12 +13869,12 @@ Total size 32 bytes
* `code' Main identifier for a GIMPLE instruction.
* `subcode' Used to distinguish different variants of the same basic
- instruction or provide flags applicable to a given code. The
+ instruction or provide flags applicable to a given code. The
`subcode' flags field has different uses depending on the code of
the instruction, but mostly it distinguishes instructions of the
- same family. The most prominent use of this field is in
+ same family. The most prominent use of this field is in
assignments, where subcode indicates the operation done on the RHS
- of the assignment. For example, a = b + c is encoded as
+ of the assignment. For example, a = b + c is encoded as
`GIMPLE_ASSIGN <PLUS_EXPR, a, b, c>'.
* `no_warning' Bitflag to indicate whether a warning has already
@@ -13865,7 +13889,7 @@ Total size 32 bytes
bit holes left by the previous fields.
* `plf' Pass Local Flags. This 2-bit mask can be used as general
- purpose markers by any pass. Passes are responsible for clearing
+ purpose markers by any pass. Passes are responsible for clearing
and setting these two flags accordingly.
* `modified' Bitflag to indicate whether the statement has been
@@ -13881,11 +13905,11 @@ Total size 32 bytes
memory).
* `uid' This is an unsigned integer used by passes that want to
- assign IDs to every statement. These IDs must be assigned and used
+ assign IDs to every statement. These IDs must be assigned and used
by each pass.
* `location' This is a `location_t' identifier to specify source code
- location for this statement. It is inherited from the front end.
+ location for this statement. It is inherited from the front end.
* `num_ops' Number of operands that this statement has. This
specifies the size of the operand vector embedded in the tuple.
@@ -13902,8 +13926,8 @@ Total size 32 bytes
This tuple is actually split in two: `gimple_statement_with_ops_base'
and `gimple_statement_with_ops'. This is needed to accommodate the way
-the operand vector is allocated. The operand vector is defined to be an
-array of 1 element. So, to allocate a dynamic number of operands, the
+the operand vector is allocated. The operand vector is defined to be an
+array of 1 element. So, to allocate a dynamic number of operands, the
memory allocator (`gimple_alloc') simply allocates enough memory to
hold the structure itself plus `N - 1' operands which run "off the end"
of the structure. For example, to allocate space for a tuple with 3
@@ -13925,7 +13949,7 @@ Total size 48 + 8 * `num_ops' bytes
* `def_ops' Array of pointers into the operand array indicating all
the slots that contain a variable written-to by the statement.
- This array is also used for immediate use chaining. Note that it
+ This array is also used for immediate use chaining. Note that it
would be possible to not rely on this array, but the changes
required to implement this are pretty invasive.
@@ -13956,11 +13980,11 @@ Field Size (bits)
Total size 80 + 8 * `num_ops' bytes
* `vdef_ops' Similar to `def_ops' but for `VDEF' operators. There is
- one entry per memory symbol written by this statement. This is
+ one entry per memory symbol written by this statement. This is
used to maintain the memory SSA use-def and def-def chains.
* `vuse_ops' Similar to `use_ops' but for `VUSE' operators. There is
- one entry per memory symbol loaded by this statement. This is used
+ one entry per memory symbol loaded by this statement. This is used
to maintain the memory SSA use-def chains.
* `stores' Bitset with all the UIDs for the symbols written-to by the
@@ -13974,7 +13998,7 @@ Total size 80 + 8 * `num_ops' bytes
memory utilization further by removing these sets).
All the other tuples are defined in terms of these three basic ones.
-Each tuple will add some fields. The main gimple type is defined to be
+Each tuple will add some fields. The main gimple type is defined to be
the union of all these structures (`GTY' markers elided for clarity):
union gimple_statement_d
@@ -14111,9 +14135,9 @@ value is explicitly loaded into a temporary first. Similarly, storing
the value of an expression to a memory variable goes through a
temporary.
- ---------- Footnotes ----------
+ ---------- Footnotes ----------
- (1) These restrictions are derived from those in Morgan 4.8.
+ (1) These restrictions are derived from those in Morgan 4.8.

File: gccint.info, Node: Operands, Next: Manipulating GIMPLE statements, Prev: Temporaries, Up: GIMPLE
@@ -14190,7 +14214,7 @@ branch assigning to the same temporary. So,
a = T1;
The GIMPLE level if-conversion pass re-introduces `?:' expression, if
-appropriate. It is used to vectorize loops with conditions using vector
+appropriate. It is used to vectorize loops with conditions using vector
conditional operations.
Note that in GIMPLE, `if' statements are represented using
@@ -14336,7 +14360,7 @@ exhaustive):
-- GIMPLE function: bool is_gimple_ip_invariant (tree t)
Return true if t is an interprocedural invariant. This means that
- t is a valid invariant in all functions (e.g. it can be an address
+ t is a valid invariant in all functions (e.g. it can be an address
of a global variable but not of a local one).
-- GIMPLE function: bool is_gimple_ip_invariant_address (tree t)
@@ -14838,7 +14862,7 @@ File: gccint.info, Node: `GIMPLE_CALL', Next: `GIMPLE_CATCH', Prev: `GIMPLE_B
-- GIMPLE function: void gimple_call_set_tail (gimple s)
Mark call statement `S' as being a tail call (i.e., a call just
- before the exit of a function). These calls are candidate for tail
+ before the exit of a function). These calls are candidate for tail
call optimization.
-- GIMPLE function: bool gimple_call_tail_p (gimple s)
@@ -15219,7 +15243,7 @@ File: gccint.info, Node: `GIMPLE_OMP_FOR', Next: `GIMPLE_OMP_MASTER', Prev: `
gimple_seq pre_body, enum tree_code omp_for_cond)
Build a `GIMPLE_OMP_FOR' statement. `BODY' is sequence of
statements inside the for loop. `CLAUSES', are any of the `OMP'
- loop construct's clauses: private, firstprivate, lastprivate,
+ loop construct's clauses: private, firstprivate, lastprivate,
reductions, ordered, schedule, and nowait. `PRE_BODY' is the
sequence of statements that are loop invariant. `INDEX' is the
index variable. `INITIAL' is the initial value of `INDEX'.
@@ -16454,7 +16478,7 @@ File: gccint.info, Node: SSA, Next: Alias analysis, Prev: SSA Operands, Up:
Most of the tree optimizers rely on the data flow information provided
by the Static Single Assignment (SSA) form. We implement the SSA form
as described in `R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and K.
-Zadeck. Efficiently Computing Static Single Assignment Form and the
+Zadeck. Efficiently Computing Static Single Assignment Form and the
Control Dependence Graph. ACM Transactions on Programming Languages
and Systems, 13(4):451-490, October 1991'.
@@ -16816,10 +16840,10 @@ disambiguate explicit and implicit memory references.
walking statements related to a reference ref.
`walk_non_aliased_vuses' walks over dominating memory defining
statements and calls back if the statement does not clobber ref
- providing the non-aliased VUSE. The walk stops at the first
+ providing the non-aliased VUSE. The walk stops at the first
clobbering statement or if asked to. `walk_aliased_vdefs' walks
over dominating memory defining statements and calls back on each
- statement clobbering ref providing its aliasing VDEF. The walk
+ statement clobbering ref providing its aliasing VDEF. The walk
stops if asked to.
@@ -17133,7 +17157,7 @@ File: gccint.info, Node: LCSSA, Next: Scalar evolutions, Prev: Loop manipulat
=========================
Throughout the loop optimizations on tree level, one extra condition is
-enforced on the SSA form: No SSA name is used outside of the loop in
+enforced on the SSA form: No SSA name is used outside of the loop in
that it is defined. The SSA form satisfying this condition is called
"loop-closed SSA form" - LCSSA. To enforce LCSSA, PHI nodes must be
created at the exits of the loops for the SSA names that are used
@@ -17360,9 +17384,9 @@ and mapping this order to the elements of this array avoids costly
queries to the loop body representation.
Three types of data references are currently handled: ARRAY_REF,
-INDIRECT_REF and COMPONENT_REF. The data structure for the data
+INDIRECT_REF and COMPONENT_REF. The data structure for the data
reference is `data_reference', where `data_reference_p' is a name of a
-pointer to the data reference structure. The structure contains the
+pointer to the data reference structure. The structure contains the
following elements:
* `base_object_info': Provides information about the base object of
@@ -17377,10 +17401,10 @@ following elements:
* `first_location_in_loop': Provides information about the first
location accessed by the data reference in the loop and about the
access function used to represent evolution relative to this
- location. This data is used to support pointers, and is not used
- for arrays (for which we have base objects). Pointer accesses are
+ location. This data is used to support pointers, and is not used
+ for arrays (for which we have base objects). Pointer accesses are
represented as a one-dimensional access that starts from the first
- location accessed in the loop. For example:
+ location accessed in the loop. For example:
for1 i
for2 j
@@ -17461,7 +17485,7 @@ File: gccint.info, Node: Lambda, Next: Omega, Prev: Dependency analysis, Up:
Lambda is a framework that allows transformations of loops using
non-singular matrix based transformations of the iteration space and
-loop bounds. This allows compositions of skewing, scaling, interchange,
+loop bounds. This allows compositions of skewing, scaling, interchange,
and reversal transformations. These transformations are often used to
improve cache behavior or remove inner loop dependencies to allow
parallelization and vectorization to take place.
@@ -17588,7 +17612,7 @@ all the basic blocks in lexicographical order, except `ENTRY_BLOCK' and
lexicographical order, including `ENTRY_BLOCK' and `EXIT_BLOCK'.
The functions `post_order_compute' and `inverted_post_order_compute'
-can be used to compute topological orders of the CFG. The orders are
+can be used to compute topological orders of the CFG. The orders are
stored as vectors of basic block indices. The `BASIC_BLOCK' array can
be used to iterate each basic block by index. Dominator traversals are
also possible using `walk_dominator_tree'. Given two basic blocks A
@@ -18019,7 +18043,7 @@ available, including the following:
This function inserts a statement before the `gimple_stmt_iterator'
passed in. The final parameter determines whether the statement
iterator is updated to point to the newly inserted statement, or
- left pointing to the original statement.
+ left pointing to the original statement.
`gsi_remove'
This function removes the `gimple_stmt_iterator' passed in and
@@ -19934,7 +19958,7 @@ _picoChip family--`picochip.h'_
16-bit signed integer.
-_PowerPC and IBM RS6000--`config/rs6000/rs6000.h'_
+_PowerPC and IBM RS6000--`config/rs6000/constraints.md'_
`b'
Address base register
@@ -19948,17 +19972,64 @@ _PowerPC and IBM RS6000--`config/rs6000/rs6000.h'_
`v'
Altivec vector register
+ `wa'
+ Any VSX register if the -mvsx option was used or NO_REGS.
+
`wd'
- VSX vector register to hold vector double data
+ VSX vector register to hold vector double data or NO_REGS.
`wf'
- VSX vector register to hold vector float data
+ VSX vector register to hold vector float data or NO_REGS.
+
+ `wg'
+ If `-mmfpgpr' was used, a floating point register or NO_REGS.
+
+ `wl'
+ Floating point register if the LFIWAX instruction is enabled
+ or NO_REGS.
+
+ `wm'
+ VSX register if direct move instructions are enabled, or
+ NO_REGS.
+
+ `wn'
+ No register (NO_REGS).
+
+ `wr'
+ General purpose register if 64-bit instructions are enabled
+ or NO_REGS.
`ws'
- VSX vector register to hold scalar float data
+ VSX vector register to hold scalar double values or NO_REGS.
- `wa'
- Any VSX register
+ `wt'
+ VSX vector register to hold 128 bit integer or NO_REGS.
+
+ `wu'
+ Altivec register to use for float/32-bit int loads/stores or
+ NO_REGS.
+
+ `wv'
+ Altivec register to use for double loads/stores or NO_REGS.
+
+ `ww'
+ FP or VSX register to perform float operations under `-mvsx'
+ or NO_REGS.
+
+ `wx'
+ Floating point register if the STFIWX instruction is enabled
+ or NO_REGS.
+
+ `wy'
+ VSX vector register to hold scalar float values or NO_REGS.
+
+ `wz'
+ Floating point register if the LFIWZX instruction is enabled
+ or NO_REGS.
+
+ `wQ'
+ A memory address that will work with the `lq' and `stq'
+ instructions.
`h'
`MQ', `CTR', or `LINK' register
@@ -20400,7 +20471,7 @@ _Blackfin family--`config/bfin/constraints.md'_
M register
`c'
- Registers used for circular buffering, i.e. I, B, or L
+ Registers used for circular buffering, i.e. I, B, or L
registers.
`C'
@@ -21784,7 +21855,7 @@ in the machine description files:
definitions with more than one alternative. Otherwise the insn
pattern should be disabled or enabled using the insn condition.)
- E.g. the following two patterns could easily be merged using the
+ E.g. the following two patterns could easily be merged using the
`enabled' attribute:
@@ -21882,27 +21953,27 @@ constraint matches.
expression, obeying the same rules as the RTL expressions in
predicate definitions. *Note Defining Predicates::, for details.
If it evaluates true, the constraint matches; if it evaluates
- false, it doesn't. Constraint expressions should indicate which
+ false, it doesn't. Constraint expressions should indicate which
RTL codes they might match, just like predicate expressions.
`match_test' C expressions have access to the following variables:
- OP
+ OP
The RTL object defining the operand.
- MODE
+ MODE
The machine mode of OP.
- IVAL
+ IVAL
`INTVAL (OP)', if OP is a `const_int'.
- HVAL
+ HVAL
`CONST_DOUBLE_HIGH (OP)', if OP is an integer `const_double'.
- LVAL
+ LVAL
`CONST_DOUBLE_LOW (OP)', if OP is an integer `const_double'.
- RVAL
+ RVAL
`CONST_DOUBLE_REAL_VALUE (OP)', if OP is a floating-point
`const_double'.
@@ -21966,7 +22037,7 @@ that match `const_double's or `const_int's.
Each docstring in a constraint definition should be one or more
complete sentences, marked up in Texinfo format. _They are currently
-unused._ In the future they will be copied into the GCC manual, in
+unused._ In the future they will be copied into the GCC manual, in
*note Machine Constraints::, replacing the hand-maintained tables
currently found in that section. Also, in the future the compiler may
use this to give more helpful diagnostics when poor choice of `asm'
@@ -22002,7 +22073,7 @@ not contain angle brackets or underscores are left unchanged.
Underscores are doubled, each `<' is replaced with `_l', and each `>'
with `_g'. Here are some examples:
- *Original* *Mangled*
+ *Original* *Mangled*
`x' `x'
`P42x' `P42x'
`P4_x' `P4__x'
@@ -22373,36 +22444,36 @@ pattern to accomplish a certain task.
the result.
`reduc_smin_M', `reduc_smax_M'
- Find the signed minimum/maximum of the elements of a vector. The
+ Find the signed minimum/maximum of the elements of a vector. The
vector is operand 1, and the scalar result is stored in the least
- significant bits of operand 0 (also a vector). The output and
+ significant bits of operand 0 (also a vector). The output and
input vector should have the same modes.
`reduc_umin_M', `reduc_umax_M'
- Find the unsigned minimum/maximum of the elements of a vector. The
+ Find the unsigned minimum/maximum of the elements of a vector. The
vector is operand 1, and the scalar result is stored in the least
- significant bits of operand 0 (also a vector). The output and
+ significant bits of operand 0 (also a vector). The output and
input vector should have the same modes.
`reduc_splus_M'
- Compute the sum of the signed elements of a vector. The vector is
+ Compute the sum of the signed elements of a vector. The vector is
operand 1, and the scalar result is stored in the least
significant bits of operand 0 (also a vector). The output and
input vector should have the same modes.
`reduc_uplus_M'
- Compute the sum of the unsigned elements of a vector. The vector
+ Compute the sum of the unsigned elements of a vector. The vector
is operand 1, and the scalar result is stored in the least
- significant bits of operand 0 (also a vector). The output and
+ significant bits of operand 0 (also a vector). The output and
input vector should have the same modes.
`sdot_prodM'
`udot_prodM'
Compute the sum of the products of two signed/unsigned elements.
- Operand 1 and operand 2 are of the same mode. Their product, which
- is of a wider mode, is computed and added to operand 3. Operand 3
- is of a mode equal or wider than the mode of the product. The
+ Operand 1 and operand 2 are of the same mode. Their product, which
+ is of a wider mode, is computed and added to operand 3. Operand 3
+ is of a mode equal or wider than the mode of the product. The
result is placed in operand 0, which is of the same mode as
operand 3.
@@ -22421,7 +22492,7 @@ pattern to accomplish a certain task.
output and input vectors should have the same modes.
`vec_pack_trunc_M'
- Narrow (demote) and merge the elements of two vectors. Operands 1
+ Narrow (demote) and merge the elements of two vectors. Operands 1
and 2 are vectors of the same mode having N integral or floating
point elements of size S. Operand 0 is the resulting vector in
which 2*N elements of size N/2 are concatenated after narrowing
@@ -22452,7 +22523,7 @@ pattern to accomplish a certain task.
`vec_unpacku_hi_M', `vec_unpacku_lo_M'
Extract and widen (promote) the high/low part of a vector of
unsigned integral elements. The input vector (operand 1) has N
- elements of size S. Widen (promote) the high/low elements of the
+ elements of size S. Widen (promote) the high/low elements of the
vector using zero extension and place the resulting N/2 values of
size 2*S in the output vector (operand 0).
@@ -22834,7 +22905,7 @@ pattern to accomplish a certain task.
Optional operands 5 and 6 specify expected alignment and size of
block respectively. The expected alignment differs from alignment
in operand 4 in a way that the blocks are not required to be
- aligned according to it in all cases. This expected alignment is
+ aligned according to it in all cases. This expected alignment is
also in bytes, just like operand 4. Expected size, when unknown,
is set to `(const_int -1)'.
@@ -22859,7 +22930,7 @@ pattern to accomplish a certain task.
Block set instruction. The destination string is the first
operand, given as a `mem:BLK' whose address is in mode `Pmode'.
The number of bytes to set is the second operand, in mode M. The
- value to initialize the memory with is the third operand. Targets
+ value to initialize the memory with is the third operand. Targets
that only support the clearing of memory should reject any value
that is not the constant 0. See `movmemM' for a discussion of the
choice of mode.
@@ -22872,7 +22943,7 @@ pattern to accomplish a certain task.
Optional operands 5 and 6 specify expected alignment and size of
block respectively. The expected alignment differs from alignment
in operand 4 in a way that the blocks are not required to be
- aligned according to it in all cases. This expected alignment is
+ aligned according to it in all cases. This expected alignment is
also in bytes, just like operand 4. Expected size, when unknown,
is set to `(const_int -1)'.
@@ -23150,7 +23221,7 @@ pattern to accomplish a certain task.
target and branching around an assignment of zero to the
target--or a libcall. If the predicate for operand 1 only rejects
some operators, it will also try reordering the operands and/or
- inverting the result value (e.g. by an exclusive OR). These
+ inverting the result value (e.g. by an exclusive OR). These
possibilities could be cheaper or equivalent to the instructions
used for the `cstoreMODE4' pattern followed by those required to
convert a positive result from `STORE_FLAG_VALUE' to 1; in this
@@ -23845,7 +23916,7 @@ pattern to accomplish a certain task.
`atomic_orMODE', `atomic_andMODE'
`atomic_xorMODE', `atomic_nandMODE'
These patterns emit code for an atomic operation on memory with
- memory model semantics. Operand 0 is the memory on which the
+ memory model semantics. Operand 0 is the memory on which the
atomic operation is performed. Operand 1 is the second operand to
the binary operator. Operand 2 is the memory model to be used by
the operation.
@@ -23859,7 +23930,7 @@ pattern to accomplish a certain task.
`atomic_fetch_orMODE', `atomic_fetch_andMODE'
`atomic_fetch_xorMODE', `atomic_fetch_nandMODE'
These patterns emit code for an atomic operation on memory with
- memory model semantics, and return the original value. Operand 0
+ memory model semantics, and return the original value. Operand 0
is an output operand which contains the value of the memory
location before the operation was performed. Operand 1 is the
memory on which the atomic operation is performed. Operand 2 is
@@ -24057,7 +24128,7 @@ distinct signed and unsigned flavors) as in the x86 or SPARC, and the
case where there are distinct signed and unsigned compare instructions
and only one set of conditional branch instructions as in the PowerPC.
- ---------- Footnotes ----------
+ ---------- Footnotes ----------
(1) `note' insns can separate them, though.
@@ -24308,7 +24379,7 @@ for RTL generation and it can produce more than one RTL insn.
RTL insns directly by calling routines such as `emit_insn', etc.
Any such insns precede the ones that come from the RTL template.
- * Optionally, a vector containing the values of attributes. *Note
+ * Optionally, a vector containing the values of attributes. *Note
Insn Attributes::.
Every RTL insn emitted by a `define_expand' must match some
@@ -25023,7 +25094,7 @@ The `enabled' attribute can be used to conditionally enable or disable
insn alternatives (*note Disable Insn Alternatives::). The `predicable'
attribute, together with a suitable `define_cond_exec' (*note
Conditional Execution::), can be used to automatically generate
-conditional variants of instruction patterns. The compiler internally
+conditional variants of instruction patterns. The compiler internally
uses the names `ce_enabled' and `nonce_enabled', so they should not be
used elsewhere as alternative names.
@@ -25071,12 +25142,12 @@ attributes are not free to use for other purposes:
`length'
The `length' attribute is used to calculate the length of emitted
code chunks. This is especially important when verifying branch
- distances. *Note Insn Lengths::.
+ distances. *Note Insn Lengths::.
`enabled'
The `enabled' attribute can be defined to prevent certain
alternatives of an insn definition from being used during code
- generation. *Note Disable Insn Alternatives::.
+ generation. *Note Disable Insn Alternatives::.
For each of these special attributes, the corresponding
`HAVE_ATTR_NAME' `#define' is also written when the attribute is not
@@ -25181,14 +25252,14 @@ Attribute value expressions must have one of the following forms:
The test is true if C expression C-EXPR is true. In non-constant
attributes, C-EXPR has access to the following variables:
- INSN
+ INSN
The rtl instruction under test.
- WHICH_ALTERNATIVE
+ WHICH_ALTERNATIVE
The `define_insn' alternative that INSN matches. *Note
Output Statement::.
- OPERANDS
+ OPERANDS
An array of INSN's rtl operands.
C-EXPR behaves like the condition in a C `if' statement, so there
@@ -25589,7 +25660,7 @@ there must be no insn for which tests in two `define_delay' expressions
are both true.
For example, if we have a machine that requires one delay slot for
-branches but two for calls, no delay slot can contain a branch or call
+branches but two for calls, no delay slot can contain a branch or call
insn, and any valid insn in the delay slot for the branch can be
annulled if the branch is true, we might represent this as follows:
@@ -26009,9 +26080,9 @@ construction
(define_insn_reservation "simple" 2 (eq_attr "type" "int")
"(i0_pipeline | i1_pipeline), finish")
- ---------- Footnotes ----------
+ ---------- Footnotes ----------
- (1) However, the size of the automaton depends on processor
+ (1) However, the size of the automaton depends on processor
complexity. To limit this effect, machine descriptions can split
orthogonal parts of the machine description among several automata: but
then, since each of these must be stepped independently, this does
@@ -26129,7 +26200,7 @@ source RTL template is not matched against the input-template of the
`define_subst'. In such case the copy is deleted.
`define_subst' can be used only in `define_insn' and `define_expand',
-it cannot be used in other expressions (e.g. in
+it cannot be used in other expressions (e.g. in
`define_insn_and_split').
* Menu:
@@ -27306,11 +27377,11 @@ You can control the compilation driver.
and the machine suffix.
10. The macro `STANDARD_STARTFILE_PREFIX_1', but only if this is a
- native compiler, or we have a target system root. The default for
+ native compiler, or we have a target system root. The default for
this macro is `/lib/'.
11. The macro `STANDARD_STARTFILE_PREFIX_2', but only if this is a
- native compiler, or we have a target system root. The default for
+ native compiler, or we have a target system root. The default for
this macro is `/usr/lib/'.

@@ -27404,22 +27475,22 @@ Here are run-time target specifications.
-- C Target Hook: tree TARGET_OBJC_CONSTRUCT_STRING_OBJECT (tree
STRING)
Targets may provide a string object type that can be used within
- and between C, C++ and their respective Objective-C dialects. A
+ and between C, C++ and their respective Objective-C dialects. A
string object might, for example, embed encoding and length
- information. These objects are considered opaque to the compiler
- and handled as references. An ideal implementation makes the
+ information. These objects are considered opaque to the compiler
+ and handled as references. An ideal implementation makes the
composition of the string object match that of the Objective-C
`NSString' (`NXString' for GNUStep), allowing efficient
- interworking between C-only and Objective-C code. If a target
+ interworking between C-only and Objective-C code. If a target
implements string objects then this hook should return a reference
to such an object constructed from the normal `C' string
- representation provided in STRING. At present, the hook is used by
+ representation provided in STRING. At present, the hook is used by
Objective-C only, to obtain a common-format string object when the
target provides one.
-- C Target Hook: void TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE
(const char *CLASSNAME)
- Declare that Objective C class CLASSNAME is referenced by the
+ Declare that Objective C class CLASSNAME is referenced by the
current TU.
-- C Target Hook: void TARGET_OBJC_DECLARE_CLASS_DEFINITION (const
@@ -27816,7 +27887,7 @@ expressions that refer to static variables, such as the `target_flags'.
-- Target Hook: HOST_WIDE_INT TARGET_VECTOR_ALIGNMENT (const_tree TYPE)
This hook can be used to define the alignment for a vector of type
- TYPE, in order to comply with a platform ABI. The default is to
+ TYPE, in order to comply with a platform ABI. The default is to
require natural alignment for vector types. The alignment
returned by this hook must be a power-of-two multiple of the
default alignment of the vector element type.
@@ -28469,7 +28540,7 @@ languages, rather than to fundamental aspects of storage layout.
By default, the vtable entries are void pointers, the so the
alignment is the same as pointer alignment. The value of this
macro specifies the alignment of the vtable entry in bits. It
- should be defined only when special alignment is necessary. */
+ should be defined only when special alignment is necessary. */
-- Macro: TARGET_VTABLE_DATA_ENTRY_DISTANCE
There are a few non-descriptor entries in the vtable at offsets
@@ -29131,7 +29202,7 @@ return.
class to use when it is necessary to rename a register in class
RCLASS to another class, or perhaps NO_REGS, if no preferred
register class is found or hook `preferred_rename_class' is not
- implemented. Sometimes returning a more restrictive class makes
+ implemented. Sometimes returning a more restrictive class makes
better code. For example, on ARM, thumb-2 instructions using
`LO_REGS' may be smaller than instructions using `GENERIC_REGS'.
By returning `LO_REGS' from `preferred_rename_class', code size
@@ -29276,7 +29347,7 @@ return.
If copying a register of RELOAD_CLASS from/to X requires an
intermediate register, the hook `secondary_reload' should return
the register class required for this intermediate register. If no
- intermediate register is required, it should return NO_REGS. If
+ intermediate register is required, it should return NO_REGS. If
more than one intermediate register is required, describe the one
that is closest in the copy chain to the reload register.
@@ -29475,12 +29546,12 @@ return.
-- Target Hook: bool TARGET_LRA_P (void)
A target hook which returns true if we use LRA instead of reload
- pass. It means that LRA was ported to the target. The default
+ pass. It means that LRA was ported to the target. The default
version of this target hook returns always false.
-- Target Hook: int TARGET_REGISTER_PRIORITY (int)
A target hook which returns the register priority number to which
- the register HARD_REGNO belongs to. The bigger the number, the
+ the register HARD_REGNO belongs to. The bigger the number, the
more preferable the hard register usage (when all other conditions
are the same). This hook can be used to prefer some hard
register over others in LRA. For example, some x86-64 register
@@ -30812,7 +30883,7 @@ the stack.
**PNAME, tree *PTREE)
This target hook is used in function `c_common_nodes_and_builtins'
to iterate through the target specific builtin types for va_list.
- The variable IDX is used as iterator. PNAME has to be a pointer to
+ The variable IDX is used as iterator. PNAME has to be a pointer to
a `const char *' and PTREE a pointer to a `tree' typed variable.
The arguments PNAME and PTREE are used to store the result of this
macro and are set to the name of the va_list builtin type and its
@@ -30827,7 +30898,7 @@ the stack.
-- Target Hook: tree TARGET_CANONICAL_VA_LIST_TYPE (tree TYPE)
This hook returns the va_list type of the calling convention
- specified by the type of TYPE. If TYPE is not a valid va_list
+ specified by the type of TYPE. If TYPE is not a valid va_list
type, it returns `NULL_TREE'.
-- Target Hook: tree TARGET_GIMPLIFY_VA_ARG_EXPR (tree VALIST, tree
@@ -32139,7 +32210,7 @@ This is about addressing modes.
The autovectorizer, when vectorizing a load operation from an
address ADDR that may be unaligned, will generate two vector loads
- from the two aligned addresses around ADDR. It then generates a
+ from the two aligned addresses around ADDR. It then generates a
`REALIGN_LOAD' operation to extract the relevant data from the two
loaded vectors. The first two arguments to `REALIGN_LOAD', V1 and
V2, are the two vectors, each of size VS, and the third argument,
@@ -32250,7 +32321,7 @@ TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES (void)
-- Target Hook: void TARGET_VECTORIZE_DESTROY_COST_DATA (void *DATA)
This hook should release DATA and any related data structures
- allocated by TARGET_VECTORIZE_INIT_COST. The default releases the
+ allocated by TARGET_VECTORIZE_INIT_COST. The default releases the
accumulator.
-- Target Hook: tree TARGET_VECTORIZE_BUILTIN_TM_LOAD (tree)
@@ -32507,7 +32578,7 @@ File: gccint.info, Node: MODE_CC Condition Codes, Next: Cond Exec Macros, Pre
are the left and right operands of the comparison, respectively.
If OP0_PRESERVE_VALUE is `true' the implementation is not allowed
to change the value of OP0 since the value might be used in RTXs
- which aren't comparisons. E.g. the implementation is not allowed
+ which aren't comparisons. E.g. the implementation is not allowed
to swap operands in that case.
GCC will not assume that the comparison resulting from this macro
@@ -32692,7 +32763,7 @@ on the target machine.
Parameter SPEED_P is true when the branch in question should be
optimized for speed. When it is false, `BRANCH_COST' should
return a value optimal for code size rather than performance.
- PREDICTABLE_P is true for well-predicted branches. On many
+ PREDICTABLE_P is true for well-predicted branches. On many
architectures the `BRANCH_COST' can be reduced then.
Here are additional macros which do not specify precise relative costs,
@@ -33520,7 +33591,7 @@ target does not provide them.
-- Target Hook: section * TARGET_ASM_TM_CLONE_TABLE_SECTION (void)
Return the section that should be used for transactional memory
- clone tables.
+ clone tables.
-- Target Hook: section * TARGET_ASM_SELECT_RTX_SECTION (enum
machine_mode MODE, rtx X, unsigned HOST_WIDE_INT ALIGN)
@@ -36414,7 +36485,7 @@ File: gccint.info, Node: C++ ABI, Next: Named Address Spaces, Prev: PCH Targe
in the same manner as `__cxa_atexit' to register C++ static
destructors. This requires that `atexit'-registered functions in
shared libraries are run in the correct order when the libraries
- are unloaded. The default is to return false.
+ are unloaded. The default is to return false.
-- Target Hook: void TARGET_CXX_ADJUST_CLASS_AT_DEFINITION (tree TYPE)
TYPE is a C++ class (i.e., RECORD_TYPE or UNION_TYPE) that has
@@ -37032,10 +37103,10 @@ Here are several miscellaneous parameters.
-- Macro: TARGET_POSIX_IO
Define this macro if the target supports the following POSIX file
- functions, access, mkdir and file locking with fcntl / F_SETLKW.
+ functions, access, mkdir and file locking with fcntl / F_SETLKW.
Defining `TARGET_POSIX_IO' will enable the test coverage code to
use file locking when exiting a program, which avoids race
- conditions if the program has forked. It will also create
+ conditions if the program has forked. It will also create
directories at run-time for cross-profiling.
-- Macro: MAX_CONDITIONAL_EXECUTE
@@ -37186,7 +37257,7 @@ Here are several miscellaneous parameters.
low-overhead loop, otherwise return a string explaining why doloop
could not be applied.
- Many targets use special registers for low-overhead looping. For
+ Many targets use special registers for low-overhead looping. For
any instruction that clobbers these this function should return a
string indicating the reason why the doloop could not be applied.
By default, the RTL loop optimizer does not use a present doloop
@@ -37208,10 +37279,10 @@ Here are several miscellaneous parameters.
-- Target Hook: bool TARGET_CAN_FOLLOW_JUMP (const_rtx FOLLOWER,
const_rtx FOLLOWEE)
- FOLLOWER and FOLLOWEE are JUMP_INSN instructions; return true if
- FOLLOWER may be modified to follow FOLLOWEE; false, if it can't.
+ FOLLOWER and FOLLOWEE are JUMP_INSN instructions; return true if
+ FOLLOWER may be modified to follow FOLLOWEE; false, if it can't.
For example, on some targets, certain kinds of branches can't be
- made to follow through a hot/cold partitioning.
+ made to follow through a hot/cold partitioning.
-- Target Hook: bool TARGET_COMMUTATIVE_P (const_rtx X, int OUTER_CODE)
This target hook returns `true' if X is considered to be
@@ -37340,9 +37411,9 @@ Here are several miscellaneous parameters.
-- Target Hook: unsigned TARGET_LOOP_UNROLL_ADJUST (unsigned NUNROLL,
struct loop *LOOP)
This target hook returns a new value for the number of times LOOP
- should be unrolled. The parameter NUNROLL is the number of times
- the loop is to be unrolled. The parameter LOOP is a pointer to the
- loop, which is going to be checked for unrolling. This target hook
+ should be unrolled. The parameter NUNROLL is the number of times
+ the loop is to be unrolled. The parameter LOOP is a pointer to the
+ loop, which is going to be checked for unrolling. This target hook
is required only when the target has special constraints like
maximum number of memory accesses.
@@ -37474,13 +37545,13 @@ Here are several miscellaneous parameters.
-- Macro: TARGET_USE_JCR_SECTION
This macro determines whether to use the JCR section to register
- Java classes. By default, TARGET_USE_JCR_SECTION is defined to 1
+ Java classes. By default, TARGET_USE_JCR_SECTION is defined to 1
if both SUPPORTS_WEAK and TARGET_HAVE_NAMED_SECTIONS are true,
else 0.
-- Macro: OBJC_JBLEN
This macro determines the size of the objective C jump buffer for
- the NeXT runtime. By default, OBJC_JBLEN is defined to an
+ the NeXT runtime. By default, OBJC_JBLEN is defined to an
innocuous value.
-- Macro: LIBGCC2_UNWIND_ATTRIBUTE
@@ -37516,7 +37587,7 @@ Here are several miscellaneous parameters.
synthesize a constant. If there is another constant already in a
register that is close enough in value then it is preferable that
the new constant is computed from this register using immediate
- addition or subtraction. We accomplish this through CSE. Besides
+ addition or subtraction. We accomplish this through CSE. Besides
the value of the constant we also add a lower and an upper
constant anchor to the available expressions. These are then
queried when encountering new constants. The anchors are computed
@@ -37535,7 +37606,7 @@ Here are several miscellaneous parameters.
-- Target Hook: unsigned HOST_WIDE_INT TARGET_MEMMODEL_CHECK (unsigned
HOST_WIDE_INT VAL)
- Validate target specific memory model mask bits. When NULL no
+ Validate target specific memory model mask bits. When NULL no
target specific memory model bits are allowed.
-- Target Hook: unsigned char TARGET_ATOMIC_TEST_AND_SET_TRUEVAL
@@ -38600,7 +38671,7 @@ In these snippets, there is only one type `T', but there could be more.
gt_pch_nx (&(tp->fld), op, cookie);
}
- Support for user-defined types is currently limited. The following
+ Support for user-defined types is currently limited. The following
restrictions apply:
1. Type `TP' and all the argument types `T' must be marked with `GTY'.
@@ -38697,9 +38768,9 @@ File: gccint.info, Node: Invoking the garbage collector, Next: Troubleshooting
22.5 How to invoke the garbage collector
========================================
-The GCC garbage collector GGC is only invoked explicitly. In contrast
+The GCC garbage collector GGC is only invoked explicitly. In contrast
with many other garbage collectors, it is not implicitly invoked by
-allocation routines when a lot of memory has been consumed. So the only
+allocation routines when a lot of memory has been consumed. So the only
way to have GGC reclaim storage is to call the `ggc_collect' function
explicitly. This call is an expensive operation, as it may have to
scan the entire heap. Beware that local variables (on the GCC call
@@ -38830,7 +38901,7 @@ this is enough:
----------------------------
Every plugin should export a function called `plugin_init' that is
-called right after the plugin is loaded. This function is responsible
+called right after the plugin is loaded. This function is responsible
for registering all the callbacks required by the plugin and do any
other required initialization.
@@ -38872,7 +38943,7 @@ following structure:
};
The function `plugin_default_version_check' takes two pointers to such
-structure and compare them field by field. It can be used by the
+structure and compare them field by field. It can be used by the
plugin's `plugin_init' function.
The version of GCC used to compile the plugin can be found in the
@@ -38977,12 +39048,12 @@ File: gccint.info, Node: Plugins pass, Next: Plugins GC, Prev: Plugin API, U
23.3 Interacting with the pass manager
======================================
-There needs to be a way to add/reorder/remove passes dynamically. This
+There needs to be a way to add/reorder/remove passes dynamically. This
is useful for both analysis plugins (plugging in after a certain pass
such as CFG or an IPA pass) and optimization plugins.
Basic support for inserting new passes or replacing existing passes is
-provided. A plugin registers a new pass with GCC by calling
+provided. A plugin registers a new pass with GCC by calling
`register_callback' with the `PLUGIN_PASS_MANAGER_SETUP' event and a
pointer to a `struct register_pass_info' object defined as follows
@@ -39031,19 +39102,19 @@ File: gccint.info, Node: Plugins GC, Next: Plugins description, Prev: Plugins
===============================================
Some plugins may want to be informed when GGC (the GCC Garbage
-Collector) is running. They can register callbacks for the
+Collector) is running. They can register callbacks for the
`PLUGIN_GGC_START' and `PLUGIN_GGC_END' events (for which the callback
is called with a null `gcc_data') to be notified of the start or end of
the GCC garbage collection.
- Some plugins may need to have GGC mark additional data. This can be
+ Some plugins may need to have GGC mark additional data. This can be
done by registering a callback (called with a null `gcc_data') for the
`PLUGIN_GGC_MARKING' event. Such callbacks can call the `ggc_set_mark'
routine, preferably through the `ggc_mark' macro (and conversely, these
routines should usually not be used in plugins outside of the
`PLUGIN_GGC_MARKING' event).
- Some plugins may need to add extra GGC root tables, e.g. to handle
+ Some plugins may need to add extra GGC root tables, e.g. to handle
their own `GTY'-ed data. This can be done with the
`PLUGIN_REGISTER_GGC_ROOTS' pseudo-event with a null callback and the
extra root table (of type `struct ggc_root_tab*') as `user_data'.
@@ -39064,7 +39135,7 @@ File: gccint.info, Node: Plugins description, Next: Plugins attr, Prev: Plugi
23.5 Giving information about a plugin
======================================
-A plugin should give some information to the user about itself. This
+A plugin should give some information to the user about itself. This
uses the following structure:
struct plugin_info
@@ -39390,7 +39461,7 @@ dealing with the reading/writing of each section are described below.
* Symbol table (`.gnu.lto_.symtab')
This table replaces the ELF symbol table for functions and
- variables represented in the LTO IL. Symbols used and exported by
+ variables represented in the LTO IL. Symbols used and exported by
the optimized assembly code of "fat" objects might not match the
ones used and exported by the intermediate code. This table is
necessary because the intermediate code is less optimized and thus
@@ -39716,7 +39787,7 @@ made. The linker plugin obtains the symbol resolution information
which specifies which symbols provided by the claimed objects are bound
from the rest of a binary being linked.
- Currently, the linker plugin works only in combination with the Gold
+ Currently, the linker plugin works only in combination with the Gold
linker, but a GNU ld implementation is under development.
GCC is designed to be independent of the rest of the toolchain and
@@ -40301,7 +40372,7 @@ TERMS AND CONDITIONS
by modifying or propagating a covered work, you indicate your
acceptance of this License to do so.
- 10. Automatic Licensing of Downstream Recipients.
+ 10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
@@ -40329,7 +40400,7 @@ TERMS AND CONDITIONS
using, selling, offering for sale, or importing the Program or any
portion of it.
- 11. Patents.
+ 11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.
@@ -40402,7 +40473,7 @@ TERMS AND CONDITIONS
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
- 12. No Surrender of Others' Freedom.
+ 12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order,
agreement or otherwise) that contradict the conditions of this
@@ -40416,7 +40487,7 @@ TERMS AND CONDITIONS
terms and this License would be to refrain entirely from conveying
the Program.
- 13. Use with the GNU Affero General Public License.
+ 13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
@@ -40427,7 +40498,7 @@ TERMS AND CONDITIONS
General Public License, section 13, concerning interaction through
a network will apply to the combination as such.
- 14. Revised Versions of this License.
+ 14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new
versions of the GNU General Public License from time to time.
@@ -40454,19 +40525,19 @@ TERMS AND CONDITIONS
author or copyright holder as a result of your choosing to follow a
later version.
- 15. Disclaimer of Warranty.
+ 15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
- APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
- 16. Limitation of Liability.
+ 16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
@@ -40479,7 +40550,7 @@ TERMS AND CONDITIONS
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES.
- 17. Interpretation of Sections 15 and 16.
+ 17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
@@ -40952,7 +41023,7 @@ GNU Free Documentation License
not permanently reinstated, receipt of a copy of some or all of
the same material does not give you any rights to use it.
- 10. FUTURE REVISIONS OF THIS LICENSE
+ 10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of
the GNU Free Documentation License from time to time. Such new
@@ -40973,7 +41044,7 @@ GNU Free Documentation License
proxy's public statement of acceptance of a version permanently
authorizes you to choose that version for the Document.
- 11. RELICENSING
+ 11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
@@ -41020,7 +41091,7 @@ notices just after the title page:
Free Documentation License''.
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the "with...Texts." line with this:
+replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with
the Front-Cover Texts being LIST, and with the Back-Cover Texts
@@ -41980,7 +42051,7 @@ GCC version 4.1:
and improvements.
* Thomas Fitzsimmons for lots of upgrades to the gtk+ AWT and Cairo
- 2D support. Lots of imageio framework additions, lots of AWT and
+ 2D support. Lots of imageio framework additions, lots of AWT and
Free Swing bug fixes.
* Jeroen Frijters for `ClassLoader' and nio cleanups, serialization
@@ -42015,7 +42086,7 @@ GCC version 4.1:
* Ito Kazumitsu for `NetworkInterface' implementation and updates.
* Roman Kennke for `BoxLayout', `GrayFilter' and `SplitPane', plus
- bug fixes all over. Lots of Free Swing work including styled text.
+ bug fixes all over. Lots of Free Swing work including styled text.
* Simon Kitching for `String' cleanups and optimization suggestions.
@@ -49400,373 +49471,373 @@ Concept Index

Tag Table:
-Node: Top1828
-Node: Contributing4916
-Node: Portability5657
-Node: Interface7445
-Node: Libgcc10485
-Node: Integer library routines12326
-Node: Soft float library routines19168
-Node: Decimal float library routines31105
-Node: Fixed-point fractional library routines46862
-Node: Exception handling routines147260
-Node: Miscellaneous routines148367
-Node: Languages150487
-Node: Source Tree152036
-Node: Configure Terms152618
-Node: Top Level155576
-Node: gcc Directory159150
-Node: Subdirectories160100
-Node: Configuration162267
-Node: Config Fragments162987
-Node: System Config164216
-Node: Configuration Files165152
-Node: Build167977
-Node: Makefile168389
-Ref: Makefile-Footnote-1175192
-Ref: Makefile-Footnote-2175337
-Node: Library Files175409
-Node: Headers175971
-Node: Documentation178054
-Node: Texinfo Manuals178913
-Node: Man Page Generation181246
-Node: Miscellaneous Docs183161
-Node: Front End184555
-Node: Front End Directory188248
-Node: Front End Config189568
-Node: Front End Makefile192394
-Node: Back End196176
-Node: Testsuites199973
-Node: Test Idioms200904
-Node: Test Directives204301
-Node: Directives204828
-Node: Selectors215138
-Node: Effective-Target Keywords216496
-Ref: arm_neon_ok224055
-Ref: arm_neonv2_ok224213
-Ref: arm_neon_fp16_ok224385
-Node: Add Options234186
-Node: Require Support235383
-Node: Final Actions237890
-Node: Ada Tests243057
-Node: C Tests244389
-Node: libgcj Tests248812
-Node: LTO Testing249939
-Node: gcov Testing251586
-Node: profopt Testing254573
-Node: compat Testing256288
-Node: Torture Tests260528
-Node: Options262145
-Node: Option file format262585
-Node: Option properties269575
-Node: Passes282454
-Node: Parsing pass283198
-Node: Gimplification pass286728
-Node: Pass manager288561
-Node: Tree SSA passes290355
-Node: RTL passes312827
-Node: RTL325958
-Node: RTL Objects328146
-Node: RTL Classes332020
-Node: Accessors337018
-Node: Special Accessors339412
-Node: Flags345182
-Node: Machine Modes359906
-Node: Constants372218
-Node: Regs and Memory378948
-Node: Arithmetic396849
-Node: Comparisons406939
-Node: Bit-Fields411231
-Node: Vector Operations412783
-Node: Conversions414665
-Node: RTL Declarations419163
-Node: Side Effects419984
-Node: Incdec436584
-Node: Assembler439919
-Node: Debug Information441464
-Node: Insns442662
-Node: Calls469156
-Node: Sharing471749
-Node: Reading RTL474859
-Node: GENERIC475851
-Node: Deficiencies477724
-Node: Tree overview477965
-Node: Macros and Functions482092
-Node: Identifiers482917
-Node: Containers484528
-Node: Types485685
-Node: Declarations497781
-Node: Working with declarations498276
-Node: Internal structure503882
-Node: Current structure hierarchy504266
-Node: Adding new DECL node types506360
-Node: Attributes510433
-Node: Expression trees511678
-Node: Constant expressions513431
-Node: Storage References517650
-Node: Unary and Binary Expressions521169
-Node: Vectors541031
-Node: Statements545758
-Node: Basic Statements546278
-Node: Blocks550785
-Node: Statement Sequences552189
-Node: Empty Statements552522
-Node: Jumps553096
-Node: Cleanups553749
-Node: OpenMP555517
-Node: Functions561357
-Node: Function Basics561828
-Node: Function Properties565513
-Node: Language-dependent trees568295
-Node: C and C++ Trees569181
-Node: Types for C++572085
-Node: Namespaces577063
-Node: Classes580170
-Node: Functions for C++585248
-Node: Statements for C++591501
-Node: C++ Expressions599549
-Node: Java Trees601050
-Node: GIMPLE601163
-Node: Tuple representation604784
-Node: GIMPLE instruction set613060
-Node: GIMPLE Exception Handling614728
-Node: Temporaries616642
-Ref: Temporaries-Footnote-1617957
-Node: Operands618020
-Node: Compound Expressions618782
-Node: Compound Lvalues619016
-Node: Conditional Expressions619778
-Node: Logical Operators620436
-Node: Manipulating GIMPLE statements627193
-Node: Tuple specific accessors633127
-Node: `GIMPLE_ASM'633946
-Node: `GIMPLE_ASSIGN'636579
-Node: `GIMPLE_BIND'640685
-Node: `GIMPLE_CALL'642492
-Node: `GIMPLE_CATCH'646762
-Node: `GIMPLE_COND'647906
-Node: `GIMPLE_DEBUG'650694
-Node: `GIMPLE_EH_FILTER'654077
-Node: `GIMPLE_LABEL'655565
-Node: `GIMPLE_NOP'656540
-Node: `GIMPLE_OMP_ATOMIC_LOAD'656909
-Node: `GIMPLE_OMP_ATOMIC_STORE'657819
-Node: `GIMPLE_OMP_CONTINUE'658458
-Node: `GIMPLE_OMP_CRITICAL'659808
-Node: `GIMPLE_OMP_FOR'660745
-Node: `GIMPLE_OMP_MASTER'664260
-Node: `GIMPLE_OMP_ORDERED'664643
-Node: `GIMPLE_OMP_PARALLEL'665043
-Node: `GIMPLE_OMP_RETURN'667815
-Node: `GIMPLE_OMP_SECTION'668465
-Node: `GIMPLE_OMP_SECTIONS'669131
-Node: `GIMPLE_OMP_SINGLE'670737
-Node: `GIMPLE_PHI'671674
-Node: `GIMPLE_RESX'672960
-Node: `GIMPLE_RETURN'673679
-Node: `GIMPLE_SWITCH'674247
-Node: `GIMPLE_TRY'676047
-Node: `GIMPLE_WITH_CLEANUP_EXPR'677837
-Node: GIMPLE sequences678720
-Node: Sequence iterators681926
-Node: Adding a new GIMPLE statement code690382
-Node: Statement and operand traversals691658
-Node: Tree SSA694258
-Node: Annotations696044
-Node: SSA Operands696570
-Node: SSA711101
-Node: Alias analysis723221
-Node: Memory model727001
-Node: Loop Analysis and Representation728364
-Node: Loop representation729545
-Node: Loop querying736465
-Node: Loop manipulation739298
-Node: LCSSA741666
-Node: Scalar evolutions743738
-Node: loop-iv746982
-Node: Number of iterations748908
-Node: Dependency analysis751717
-Node: Lambda758085
-Node: Omega759756
-Node: Control Flow761321
-Node: Basic Blocks763087
-Node: Edges768378
-Node: Profile information777010
-Node: Maintaining the CFG781694
-Node: Liveness information787556
-Node: Machine Desc789682
-Node: Overview792245
-Node: Patterns794286
-Node: Example797724
-Node: RTL Template799159
-Node: Output Template809814
-Node: Output Statement813779
-Node: Predicates818118
-Node: Machine-Independent Predicates821036
-Node: Defining Predicates825981
-Node: Constraints831946
-Node: Simple Constraints833428
-Node: Multi-Alternative846284
-Node: Class Preferences849125
-Node: Modifiers850017
-Node: Machine Constraints854263
-Node: Disable Insn Alternatives904313
-Node: Define Constraints907215
-Node: C Constraint Interface914002
-Node: Standard Names917643
-Ref: shift patterns940194
-Ref: prologue instruction pattern985134
-Ref: window_save instruction pattern985627
-Ref: epilogue instruction pattern985902
-Node: Pattern Ordering1003473
-Node: Dependent Patterns1004709
-Node: Jump Patterns1006329
-Ref: Jump Patterns-Footnote-11008473
-Node: Looping Patterns1008519
-Node: Insn Canonicalizations1013247
-Node: Expander Definitions1017838
-Node: Insn Splitting1026050
-Node: Including Patterns1035652
-Node: Peephole Definitions1037432
-Node: define_peephole1038685
-Node: define_peephole21045016
-Node: Insn Attributes1048083
-Node: Defining Attributes1049189
-Ref: define_enum_attr1052400
-Node: Expressions1053435
-Node: Tagging Insns1060184
-Node: Attr Example1064537
-Node: Insn Lengths1066911
-Node: Constant Attributes1069970
-Node: Delay Slots1071139
-Node: Processor pipeline description1074363
-Ref: Processor pipeline description-Footnote-11093176
-Node: Conditional Execution1093498
-Node: Define Subst1096560
-Node: Define Subst Example1098594
-Node: Define Subst Pattern Matching1101588
-Node: Define Subst Output Template1102813
-Node: Constant Definitions1104883
-Ref: define_enum1108665
-Node: Iterators1109153
-Node: Mode Iterators1109731
-Node: Defining Mode Iterators1110709
-Node: Substitutions1112203
-Node: Examples1114444
-Node: Code Iterators1115892
-Node: Int Iterators1118171
-Node: Subst Iterators1120629
-Node: Target Macros1122321
-Node: Target Structure1125409
-Node: Driver1127524
-Node: Run-time Target1146307
-Node: Per-Function Data1155460
-Node: Storage Layout1158225
-Node: Type Layout1184300
-Node: Registers1199627
-Node: Register Basics1200601
-Node: Allocation Order1206106
-Node: Values in Registers1208552
-Node: Leaf Functions1216041
-Node: Stack Registers1218899
-Node: Register Classes1220171
-Node: Old Constraints1250176
-Node: Stack and Calling1257328
-Node: Frame Layout1257862
-Node: Exception Handling1268742
-Node: Stack Checking1274964
-Node: Frame Registers1279777
-Node: Elimination1288036
-Node: Stack Arguments1292265
-Node: Register Arguments1299127
-Node: Scalar Return1319443
-Node: Aggregate Return1325529
-Node: Caller Saves1329739
-Node: Function Entry1330917
-Node: Profiling1342021
-Node: Tail Calls1343720
-Node: Stack Smashing Protection1345623
-Node: Varargs1347251
-Node: Trampolines1353947
-Node: Library Calls1359990
-Node: Addressing Modes1364929
-Node: Anchored Addresses1384963
-Node: Condition Code1387612
-Node: CC0 Condition Codes1389741
-Node: MODE_CC Condition Codes1392987
-Node: Cond Exec Macros1399508
-Node: Costs1399854
-Node: Scheduling1416323
-Node: Sections1435729
-Node: PIC1451427
-Node: Assembler Format1453487
-Node: File Framework1454625
-Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1461566
-Node: Data Output1464831
-Node: Uninitialized Data1472607
-Node: Label Output1477618
-Node: Initialization1500586
-Node: Macros for Initialization1506548
-Node: Instruction Output1513271
-Node: Dispatch Tables1523773
-Node: Exception Region Output1528151
-Node: Alignment Output1534834
-Node: Debugging Info1539379
-Node: All Debuggers1540049
-Node: DBX Options1542904
-Node: DBX Hooks1548353
-Node: File Names and DBX1549662
-Node: SDB and DWARF1551774
-Node: VMS Debug1557846
-Node: Floating Point1558433
-Node: Mode Switching1562909
-Node: Target Attributes1566905
-Node: Emulated TLS1575219
-Node: MIPS Coprocessors1578609
-Node: PCH Target1579906
-Node: C++ ABI1581748
-Node: Named Address Spaces1586540
-Node: Misc1591479
-Ref: TARGET_SHIFT_TRUNCATION_MASK1598221
-Node: Host Config1643387
-Node: Host Common1644455
-Node: Filesystem1646834
-Node: Host Misc1650949
-Node: Fragments1653398
-Node: Target Fragment1654593
-Node: Host Fragment1665226
-Node: Collect21665466
-Node: Header Dirs1668102
-Node: Type Information1669525
-Node: GTY Options1672748
-Node: User GC1687069
-Node: GGC Roots1690796
-Node: Files1691512
-Node: Invoking the garbage collector1694219
-Node: Troubleshooting1695722
-Node: Plugins1696798
-Node: Plugins loading1697916
-Node: Plugin API1698785
-Node: Plugins pass1705814
-Node: Plugins GC1707783
-Node: Plugins description1709443
-Node: Plugins attr1709978
-Node: Plugins recording1711863
-Node: Plugins gate1712713
-Node: Plugins tracking1713304
-Node: Plugins building1713892
-Node: LTO1715678
-Node: LTO Overview1716539
-Node: LTO object file layout1722371
-Node: IPA1727003
-Node: WHOPR1735968
-Node: Internal flags1740659
-Node: Funding1741871
-Node: GNU Project1744354
-Node: Copying1745003
-Node: GNU Free Documentation License1782534
-Node: Contributors1807674
-Node: Option Index1845079
-Node: Concept Index1845883
+Node: Top1842
+Node: Contributing4930
+Node: Portability5671
+Node: Interface7459
+Node: Libgcc10499
+Node: Integer library routines12340
+Node: Soft float library routines19182
+Node: Decimal float library routines31119
+Node: Fixed-point fractional library routines46876
+Node: Exception handling routines147274
+Node: Miscellaneous routines148381
+Node: Languages150501
+Node: Source Tree152050
+Node: Configure Terms152632
+Node: Top Level155590
+Node: gcc Directory159164
+Node: Subdirectories160114
+Node: Configuration162281
+Node: Config Fragments163001
+Node: System Config164230
+Node: Configuration Files165166
+Node: Build167991
+Node: Makefile168403
+Ref: Makefile-Footnote-1175206
+Ref: Makefile-Footnote-2175351
+Node: Library Files175423
+Node: Headers175985
+Node: Documentation178068
+Node: Texinfo Manuals178927
+Node: Man Page Generation181260
+Node: Miscellaneous Docs183175
+Node: Front End184569
+Node: Front End Directory188262
+Node: Front End Config189582
+Node: Front End Makefile192408
+Node: Back End196190
+Node: Testsuites199987
+Node: Test Idioms200918
+Node: Test Directives204315
+Node: Directives204842
+Node: Selectors215152
+Node: Effective-Target Keywords216510
+Ref: arm_neon_ok224069
+Ref: arm_neonv2_ok224227
+Ref: arm_neon_fp16_ok224399
+Node: Add Options234770
+Node: Require Support235967
+Node: Final Actions238474
+Node: Ada Tests243641
+Node: C Tests244973
+Node: libgcj Tests249396
+Node: LTO Testing250523
+Node: gcov Testing252170
+Node: profopt Testing255157
+Node: compat Testing256872
+Node: Torture Tests261112
+Node: Options262729
+Node: Option file format263169
+Node: Option properties270159
+Node: Passes283038
+Node: Parsing pass283782
+Node: Gimplification pass287312
+Node: Pass manager289145
+Node: Tree SSA passes290939
+Node: RTL passes313411
+Node: RTL326542
+Node: RTL Objects328730
+Node: RTL Classes332604
+Node: Accessors337602
+Node: Special Accessors339996
+Node: Flags345766
+Node: Machine Modes360490
+Node: Constants372802
+Node: Regs and Memory379532
+Node: Arithmetic397433
+Node: Comparisons407523
+Node: Bit-Fields411815
+Node: Vector Operations413367
+Node: Conversions415249
+Node: RTL Declarations419747
+Node: Side Effects420568
+Node: Incdec437168
+Node: Assembler440503
+Node: Debug Information442048
+Node: Insns443246
+Node: Calls469740
+Node: Sharing472333
+Node: Reading RTL475443
+Node: GENERIC476435
+Node: Deficiencies478308
+Node: Tree overview478549
+Node: Macros and Functions482676
+Node: Identifiers483501
+Node: Containers485112
+Node: Types486269
+Node: Declarations498365
+Node: Working with declarations498860
+Node: Internal structure504466
+Node: Current structure hierarchy504850
+Node: Adding new DECL node types506944
+Node: Attributes511017
+Node: Expression trees512262
+Node: Constant expressions514015
+Node: Storage References518234
+Node: Unary and Binary Expressions521753
+Node: Vectors541615
+Node: Statements546342
+Node: Basic Statements546862
+Node: Blocks551369
+Node: Statement Sequences552773
+Node: Empty Statements553106
+Node: Jumps553680
+Node: Cleanups554333
+Node: OpenMP556101
+Node: Functions561941
+Node: Function Basics562412
+Node: Function Properties566097
+Node: Language-dependent trees568879
+Node: C and C++ Trees569765
+Node: Types for C++572669
+Node: Namespaces577647
+Node: Classes580754
+Node: Functions for C++585832
+Node: Statements for C++592085
+Node: C++ Expressions600133
+Node: Java Trees601634
+Node: GIMPLE601747
+Node: Tuple representation605368
+Node: GIMPLE instruction set613644
+Node: GIMPLE Exception Handling615312
+Node: Temporaries617226
+Ref: Temporaries-Footnote-1618541
+Node: Operands618604
+Node: Compound Expressions619366
+Node: Compound Lvalues619600
+Node: Conditional Expressions620362
+Node: Logical Operators621020
+Node: Manipulating GIMPLE statements627777
+Node: Tuple specific accessors633711
+Node: `GIMPLE_ASM'634530
+Node: `GIMPLE_ASSIGN'637163
+Node: `GIMPLE_BIND'641269
+Node: `GIMPLE_CALL'643076
+Node: `GIMPLE_CATCH'647346
+Node: `GIMPLE_COND'648490
+Node: `GIMPLE_DEBUG'651278
+Node: `GIMPLE_EH_FILTER'654661
+Node: `GIMPLE_LABEL'656149
+Node: `GIMPLE_NOP'657124
+Node: `GIMPLE_OMP_ATOMIC_LOAD'657493
+Node: `GIMPLE_OMP_ATOMIC_STORE'658403
+Node: `GIMPLE_OMP_CONTINUE'659042
+Node: `GIMPLE_OMP_CRITICAL'660392
+Node: `GIMPLE_OMP_FOR'661329
+Node: `GIMPLE_OMP_MASTER'664844
+Node: `GIMPLE_OMP_ORDERED'665227
+Node: `GIMPLE_OMP_PARALLEL'665627
+Node: `GIMPLE_OMP_RETURN'668399
+Node: `GIMPLE_OMP_SECTION'669049
+Node: `GIMPLE_OMP_SECTIONS'669715
+Node: `GIMPLE_OMP_SINGLE'671321
+Node: `GIMPLE_PHI'672258
+Node: `GIMPLE_RESX'673544
+Node: `GIMPLE_RETURN'674263
+Node: `GIMPLE_SWITCH'674831
+Node: `GIMPLE_TRY'676631
+Node: `GIMPLE_WITH_CLEANUP_EXPR'678421
+Node: GIMPLE sequences679304
+Node: Sequence iterators682510
+Node: Adding a new GIMPLE statement code690966
+Node: Statement and operand traversals692242
+Node: Tree SSA694842
+Node: Annotations696628
+Node: SSA Operands697154
+Node: SSA711685
+Node: Alias analysis723805
+Node: Memory model727585
+Node: Loop Analysis and Representation728948
+Node: Loop representation730129
+Node: Loop querying737049
+Node: Loop manipulation739882
+Node: LCSSA742250
+Node: Scalar evolutions744322
+Node: loop-iv747566
+Node: Number of iterations749492
+Node: Dependency analysis752301
+Node: Lambda758669
+Node: Omega760340
+Node: Control Flow761905
+Node: Basic Blocks763671
+Node: Edges768962
+Node: Profile information777594
+Node: Maintaining the CFG782278
+Node: Liveness information788140
+Node: Machine Desc790266
+Node: Overview792829
+Node: Patterns794870
+Node: Example798308
+Node: RTL Template799743
+Node: Output Template810398
+Node: Output Statement814363
+Node: Predicates818702
+Node: Machine-Independent Predicates821620
+Node: Defining Predicates826565
+Node: Constraints832530
+Node: Simple Constraints834012
+Node: Multi-Alternative846868
+Node: Class Preferences849709
+Node: Modifiers850601
+Node: Machine Constraints854847
+Node: Disable Insn Alternatives906156
+Node: Define Constraints909058
+Node: C Constraint Interface915845
+Node: Standard Names919486
+Ref: shift patterns942037
+Ref: prologue instruction pattern986977
+Ref: window_save instruction pattern987470
+Ref: epilogue instruction pattern987745
+Node: Pattern Ordering1005316
+Node: Dependent Patterns1006552
+Node: Jump Patterns1008172
+Ref: Jump Patterns-Footnote-11010316
+Node: Looping Patterns1010362
+Node: Insn Canonicalizations1015090
+Node: Expander Definitions1019681
+Node: Insn Splitting1027893
+Node: Including Patterns1037495
+Node: Peephole Definitions1039275
+Node: define_peephole1040528
+Node: define_peephole21046859
+Node: Insn Attributes1049926
+Node: Defining Attributes1051032
+Ref: define_enum_attr1054243
+Node: Expressions1055278
+Node: Tagging Insns1062027
+Node: Attr Example1066380
+Node: Insn Lengths1068754
+Node: Constant Attributes1071813
+Node: Delay Slots1072982
+Node: Processor pipeline description1076206
+Ref: Processor pipeline description-Footnote-11095019
+Node: Conditional Execution1095341
+Node: Define Subst1098403
+Node: Define Subst Example1100437
+Node: Define Subst Pattern Matching1103431
+Node: Define Subst Output Template1104656
+Node: Constant Definitions1106726
+Ref: define_enum1110508
+Node: Iterators1110996
+Node: Mode Iterators1111574
+Node: Defining Mode Iterators1112552
+Node: Substitutions1114046
+Node: Examples1116287
+Node: Code Iterators1117735
+Node: Int Iterators1120014
+Node: Subst Iterators1122472
+Node: Target Macros1124164
+Node: Target Structure1127252
+Node: Driver1129367
+Node: Run-time Target1148150
+Node: Per-Function Data1157303
+Node: Storage Layout1160068
+Node: Type Layout1186143
+Node: Registers1201470
+Node: Register Basics1202444
+Node: Allocation Order1207949
+Node: Values in Registers1210395
+Node: Leaf Functions1217884
+Node: Stack Registers1220742
+Node: Register Classes1222014
+Node: Old Constraints1252019
+Node: Stack and Calling1259171
+Node: Frame Layout1259705
+Node: Exception Handling1270585
+Node: Stack Checking1276807
+Node: Frame Registers1281620
+Node: Elimination1289879
+Node: Stack Arguments1294108
+Node: Register Arguments1300970
+Node: Scalar Return1321286
+Node: Aggregate Return1327372
+Node: Caller Saves1331582
+Node: Function Entry1332760
+Node: Profiling1343864
+Node: Tail Calls1345563
+Node: Stack Smashing Protection1347466
+Node: Varargs1349094
+Node: Trampolines1355790
+Node: Library Calls1361833
+Node: Addressing Modes1366772
+Node: Anchored Addresses1386806
+Node: Condition Code1389455
+Node: CC0 Condition Codes1391584
+Node: MODE_CC Condition Codes1394830
+Node: Cond Exec Macros1401351
+Node: Costs1401697
+Node: Scheduling1418166
+Node: Sections1437572
+Node: PIC1453270
+Node: Assembler Format1455330
+Node: File Framework1456468
+Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1463409
+Node: Data Output1466674
+Node: Uninitialized Data1474450
+Node: Label Output1479461
+Node: Initialization1502429
+Node: Macros for Initialization1508391
+Node: Instruction Output1515114
+Node: Dispatch Tables1525616
+Node: Exception Region Output1529994
+Node: Alignment Output1536677
+Node: Debugging Info1541222
+Node: All Debuggers1541892
+Node: DBX Options1544747
+Node: DBX Hooks1550196
+Node: File Names and DBX1551505
+Node: SDB and DWARF1553617
+Node: VMS Debug1559689
+Node: Floating Point1560276
+Node: Mode Switching1564752
+Node: Target Attributes1568748
+Node: Emulated TLS1577062
+Node: MIPS Coprocessors1580452
+Node: PCH Target1581749
+Node: C++ ABI1583591
+Node: Named Address Spaces1588383
+Node: Misc1593322
+Ref: TARGET_SHIFT_TRUNCATION_MASK1600064
+Node: Host Config1645230
+Node: Host Common1646298
+Node: Filesystem1648677
+Node: Host Misc1652792
+Node: Fragments1655241
+Node: Target Fragment1656436
+Node: Host Fragment1667069
+Node: Collect21667309
+Node: Header Dirs1669945
+Node: Type Information1671368
+Node: GTY Options1674591
+Node: User GC1688912
+Node: GGC Roots1692639
+Node: Files1693355
+Node: Invoking the garbage collector1696062
+Node: Troubleshooting1697565
+Node: Plugins1698641
+Node: Plugins loading1699759
+Node: Plugin API1700628
+Node: Plugins pass1707657
+Node: Plugins GC1709626
+Node: Plugins description1711286
+Node: Plugins attr1711821
+Node: Plugins recording1713706
+Node: Plugins gate1714556
+Node: Plugins tracking1715147
+Node: Plugins building1715735
+Node: LTO1717521
+Node: LTO Overview1718382
+Node: LTO object file layout1724214
+Node: IPA1728846
+Node: WHOPR1737811
+Node: Internal flags1742502
+Node: Funding1743714
+Node: GNU Project1746197
+Node: Copying1746846
+Node: GNU Free Documentation License1784377
+Node: Contributors1809517
+Node: Option Index1846922
+Node: Concept Index1847726

End Tag Table