OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [doc/] [generic.texi] - Blame information for rev 293

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 284 jeremybenn
@c Copyright (c) 2004, 2005, 2007, 2008, 2010 Free Software Foundation, Inc.
2
@c Free Software Foundation, Inc.
3
@c This is part of the GCC manual.
4
@c For copying conditions, see the file gcc.texi.
5
 
6
@c ---------------------------------------------------------------------
7
@c GENERIC
8
@c ---------------------------------------------------------------------
9
 
10
@node GENERIC
11
@chapter GENERIC
12
@cindex GENERIC
13
 
14
The purpose of GENERIC is simply to provide a
15
language-independent way of representing an entire function in
16
trees.  To this end, it was necessary to add a few new tree codes
17
to the back end, but most everything was already there.  If you
18
can express it with the codes in @code{gcc/tree.def}, it's
19
GENERIC@.
20
 
21
Early on, there was a great deal of debate about how to think
22
about statements in a tree IL@.  In GENERIC, a statement is
23
defined as any expression whose value, if any, is ignored.  A
24
statement will always have @code{TREE_SIDE_EFFECTS} set (or it
25
will be discarded), but a non-statement expression may also have
26
side effects.  A @code{CALL_EXPR}, for instance.
27
 
28
It would be possible for some local optimizations to work on the
29
GENERIC form of a function; indeed, the adapted tree inliner
30
works fine on GENERIC, but the current compiler performs inlining
31
after lowering to GIMPLE (a restricted form described in the next
32
section). Indeed, currently the frontends perform this lowering
33
before handing off to @code{tree_rest_of_compilation}, but this
34
seems inelegant.
35
 
36
@menu
37
* Deficiencies::                Topics net yet covered in this document.
38
* Tree overview::               All about @code{tree}s.
39
* Types::                       Fundamental and aggregate types.
40
* Declarations::                Type declarations and variables.
41
* Attributes::                  Declaration and type attributes.
42
* Expressions: Expression trees.            Operating on data.
43
* Statements::                  Control flow and related trees.
44
* Functions::                   Function bodies, linkage, and other aspects.
45
* Language-dependent trees::    Topics and trees specific to language front ends.
46
* C and C++ Trees::             Trees specific to C and C++.
47
* Java Trees::                  Trees specific to Java.
48
@end menu
49
 
50
@c ---------------------------------------------------------------------
51
@c Deficiencies
52
@c ---------------------------------------------------------------------
53
 
54
@node Deficiencies
55
@section Deficiencies
56
 
57
There are many places in which this document is incomplet and incorrekt.
58
It is, as of yet, only @emph{preliminary} documentation.
59
 
60
@c ---------------------------------------------------------------------
61
@c Overview
62
@c ---------------------------------------------------------------------
63
 
64
@node Tree overview
65
@section Overview
66
@cindex tree
67
@findex TREE_CODE
68
 
69
The central data structure used by the internal representation is the
70
@code{tree}.  These nodes, while all of the C type @code{tree}, are of
71
many varieties.  A @code{tree} is a pointer type, but the object to
72
which it points may be of a variety of types.  From this point forward,
73
we will refer to trees in ordinary type, rather than in @code{this
74
font}, except when talking about the actual C type @code{tree}.
75
 
76
You can tell what kind of node a particular tree is by using the
77
@code{TREE_CODE} macro.  Many, many macros take trees as input and
78
return trees as output.  However, most macros require a certain kind of
79
tree node as input.  In other words, there is a type-system for trees,
80
but it is not reflected in the C type-system.
81
 
82
For safety, it is useful to configure GCC with @option{--enable-checking}.
83
Although this results in a significant performance penalty (since all
84
tree types are checked at run-time), and is therefore inappropriate in a
85
release version, it is extremely helpful during the development process.
86
 
87
Many macros behave as predicates.  Many, although not all, of these
88
predicates end in @samp{_P}.  Do not rely on the result type of these
89
macros being of any particular type.  You may, however, rely on the fact
90
that the type can be compared to @code{0}, so that statements like
91
@smallexample
92
if (TEST_P (t) && !TEST_P (y))
93
  x = 1;
94
@end smallexample
95
@noindent
96
and
97
@smallexample
98
int i = (TEST_P (t) != 0);
99
@end smallexample
100
@noindent
101
are legal.  Macros that return @code{int} values now may be changed to
102
return @code{tree} values, or other pointers in the future.  Even those
103
that continue to return @code{int} may return multiple nonzero codes
104
where previously they returned only zero and one.  Therefore, you should
105
not write code like
106
@smallexample
107
if (TEST_P (t) == 1)
108
@end smallexample
109
@noindent
110
as this code is not guaranteed to work correctly in the future.
111
 
112
You should not take the address of values returned by the macros or
113
functions described here.  In particular, no guarantee is given that the
114
values are lvalues.
115
 
116
In general, the names of macros are all in uppercase, while the names of
117
functions are entirely in lowercase.  There are rare exceptions to this
118
rule.  You should assume that any macro or function whose name is made
119
up entirely of uppercase letters may evaluate its arguments more than
120
once.  You may assume that a macro or function whose name is made up
121
entirely of lowercase letters will evaluate its arguments only once.
122
 
123
The @code{error_mark_node} is a special tree.  Its tree code is
124
@code{ERROR_MARK}, but since there is only ever one node with that code,
125
the usual practice is to compare the tree against
126
@code{error_mark_node}.  (This test is just a test for pointer
127
equality.)  If an error has occurred during front-end processing the
128
flag @code{errorcount} will be set.  If the front end has encountered
129
code it cannot handle, it will issue a message to the user and set
130
@code{sorrycount}.  When these flags are set, any macro or function
131
which normally returns a tree of a particular kind may instead return
132
the @code{error_mark_node}.  Thus, if you intend to do any processing of
133
erroneous code, you must be prepared to deal with the
134
@code{error_mark_node}.
135
 
136
Occasionally, a particular tree slot (like an operand to an expression,
137
or a particular field in a declaration) will be referred to as
138
``reserved for the back end''.  These slots are used to store RTL when
139
the tree is converted to RTL for use by the GCC back end.  However, if
140
that process is not taking place (e.g., if the front end is being hooked
141
up to an intelligent editor), then those slots may be used by the
142
back end presently in use.
143
 
144
If you encounter situations that do not match this documentation, such
145
as tree nodes of types not mentioned here, or macros documented to
146
return entities of a particular kind that instead return entities of
147
some different kind, you have found a bug, either in the front end or in
148
the documentation.  Please report these bugs as you would any other
149
bug.
150
 
151
@menu
152
* Macros and Functions::Macros and functions that can be used with all trees.
153
* Identifiers::         The names of things.
154
* Containers::          Lists and vectors.
155
@end menu
156
 
157
@c ---------------------------------------------------------------------
158
@c Trees
159
@c ---------------------------------------------------------------------
160
 
161
@node Macros and Functions
162
@subsection Trees
163
@cindex tree
164
@findex TREE_CHAIN
165
@findex TREE_TYPE
166
 
167
All GENERIC trees have two fields in common.  First, @code{TREE_CHAIN}
168
is a pointer that can be used as a singly-linked list to other trees.
169
The other is @code{TREE_TYPE}.  Many trees store the type of an
170
expression or declaration in this field.
171
 
172
These are some other functions for handling trees:
173
 
174
@ftable @code
175
 
176
@item tree_size
177
Return the number of bytes a tree takes.
178
 
179
@item build0
180
@itemx build1
181
@itemx build2
182
@itemx build3
183
@itemx build4
184
@itemx build5
185
@itemx build6
186
 
187
These functions build a tree and supply values to put in each
188
parameter.  The basic signature is @samp{@w{code, type, [operands]}}.
189
@code{code} is the @code{TREE_CODE}, and @code{type} is a tree
190
representing the @code{TREE_TYPE}.  These are followed by the
191
operands, each of which is also a tree.
192
 
193
@end ftable
194
 
195
 
196
@c ---------------------------------------------------------------------
197
@c Identifiers
198
@c ---------------------------------------------------------------------
199
 
200
@node Identifiers
201
@subsection Identifiers
202
@cindex identifier
203
@cindex name
204
@tindex IDENTIFIER_NODE
205
 
206
An @code{IDENTIFIER_NODE} represents a slightly more general concept
207
that the standard C or C++ concept of identifier.  In particular, an
208
@code{IDENTIFIER_NODE} may contain a @samp{$}, or other extraordinary
209
characters.
210
 
211
There are never two distinct @code{IDENTIFIER_NODE}s representing the
212
same identifier.  Therefore, you may use pointer equality to compare
213
@code{IDENTIFIER_NODE}s, rather than using a routine like
214
@code{strcmp}.  Use @code{get_identifier} to obtain the unique
215
@code{IDENTIFIER_NODE} for a supplied string.
216
 
217
You can use the following macros to access identifiers:
218
@ftable @code
219
@item IDENTIFIER_POINTER
220
The string represented by the identifier, represented as a
221
@code{char*}.  This string is always @code{NUL}-terminated, and contains
222
no embedded @code{NUL} characters.
223
 
224
@item IDENTIFIER_LENGTH
225
The length of the string returned by @code{IDENTIFIER_POINTER}, not
226
including the trailing @code{NUL}.  This value of
227
@code{IDENTIFIER_LENGTH (x)} is always the same as @code{strlen
228
(IDENTIFIER_POINTER (x))}.
229
 
230
@item IDENTIFIER_OPNAME_P
231
This predicate holds if the identifier represents the name of an
232
overloaded operator.  In this case, you should not depend on the
233
contents of either the @code{IDENTIFIER_POINTER} or the
234
@code{IDENTIFIER_LENGTH}.
235
 
236
@item IDENTIFIER_TYPENAME_P
237
This predicate holds if the identifier represents the name of a
238
user-defined conversion operator.  In this case, the @code{TREE_TYPE} of
239
the @code{IDENTIFIER_NODE} holds the type to which the conversion
240
operator converts.
241
 
242
@end ftable
243
 
244
@c ---------------------------------------------------------------------
245
@c Containers
246
@c ---------------------------------------------------------------------
247
 
248
@node Containers
249
@subsection Containers
250
@cindex container
251
@cindex list
252
@cindex vector
253
@tindex TREE_LIST
254
@tindex TREE_VEC
255
@findex TREE_PURPOSE
256
@findex TREE_VALUE
257
@findex TREE_VEC_LENGTH
258
@findex TREE_VEC_ELT
259
 
260
Two common container data structures can be represented directly with
261
tree nodes.  A @code{TREE_LIST} is a singly linked list containing two
262
trees per node.  These are the @code{TREE_PURPOSE} and @code{TREE_VALUE}
263
of each node.  (Often, the @code{TREE_PURPOSE} contains some kind of
264
tag, or additional information, while the @code{TREE_VALUE} contains the
265
majority of the payload.  In other cases, the @code{TREE_PURPOSE} is
266
simply @code{NULL_TREE}, while in still others both the
267
@code{TREE_PURPOSE} and @code{TREE_VALUE} are of equal stature.)  Given
268
one @code{TREE_LIST} node, the next node is found by following the
269
@code{TREE_CHAIN}.  If the @code{TREE_CHAIN} is @code{NULL_TREE}, then
270
you have reached the end of the list.
271
 
272
A @code{TREE_VEC} is a simple vector.  The @code{TREE_VEC_LENGTH} is an
273
integer (not a tree) giving the number of nodes in the vector.  The
274
nodes themselves are accessed using the @code{TREE_VEC_ELT} macro, which
275
takes two arguments.  The first is the @code{TREE_VEC} in question; the
276
second is an integer indicating which element in the vector is desired.
277
The elements are indexed from zero.
278
 
279
@c ---------------------------------------------------------------------
280
@c Types
281
@c ---------------------------------------------------------------------
282
 
283
@node Types
284
@section Types
285
@cindex type
286
@cindex pointer
287
@cindex reference
288
@cindex fundamental type
289
@cindex array
290
@tindex VOID_TYPE
291
@tindex INTEGER_TYPE
292
@tindex TYPE_MIN_VALUE
293
@tindex TYPE_MAX_VALUE
294
@tindex REAL_TYPE
295
@tindex FIXED_POINT_TYPE
296
@tindex COMPLEX_TYPE
297
@tindex ENUMERAL_TYPE
298
@tindex BOOLEAN_TYPE
299
@tindex POINTER_TYPE
300
@tindex REFERENCE_TYPE
301
@tindex FUNCTION_TYPE
302
@tindex METHOD_TYPE
303
@tindex ARRAY_TYPE
304
@tindex RECORD_TYPE
305
@tindex UNION_TYPE
306
@tindex UNKNOWN_TYPE
307
@tindex OFFSET_TYPE
308
@findex TYPE_UNQUALIFIED
309
@findex TYPE_QUAL_CONST
310
@findex TYPE_QUAL_VOLATILE
311
@findex TYPE_QUAL_RESTRICT
312
@findex TYPE_MAIN_VARIANT
313
@cindex qualified type
314
@findex TYPE_SIZE
315
@findex TYPE_ALIGN
316
@findex TYPE_PRECISION
317
@findex TYPE_ARG_TYPES
318
@findex TYPE_METHOD_BASETYPE
319
@findex TYPE_OFFSET_BASETYPE
320
@findex TREE_TYPE
321
@findex TYPE_CONTEXT
322
@findex TYPE_NAME
323
@findex TYPENAME_TYPE_FULLNAME
324
@findex TYPE_FIELDS
325
@findex TYPE_CANONICAL
326
@findex TYPE_STRUCTURAL_EQUALITY_P
327
@findex SET_TYPE_STRUCTURAL_EQUALITY
328
 
329
All types have corresponding tree nodes.  However, you should not assume
330
that there is exactly one tree node corresponding to each type.  There
331
are often multiple nodes corresponding to the same type.
332
 
333
For the most part, different kinds of types have different tree codes.
334
(For example, pointer types use a @code{POINTER_TYPE} code while arrays
335
use an @code{ARRAY_TYPE} code.)  However, pointers to member functions
336
use the @code{RECORD_TYPE} code.  Therefore, when writing a
337
@code{switch} statement that depends on the code associated with a
338
particular type, you should take care to handle pointers to member
339
functions under the @code{RECORD_TYPE} case label.
340
 
341
The following functions and macros deal with cv-qualification of types:
342
@ftable @code
343
@item TYPE_MAIN_VARIANT
344
This macro returns the unqualified version of a type.  It may be applied
345
to an unqualified type, but it is not always the identity function in
346
that case.
347
@end ftable
348
 
349
A few other macros and functions are usable with all types:
350
@ftable @code
351
@item TYPE_SIZE
352
The number of bits required to represent the type, represented as an
353
@code{INTEGER_CST}.  For an incomplete type, @code{TYPE_SIZE} will be
354
@code{NULL_TREE}.
355
 
356
@item TYPE_ALIGN
357
The alignment of the type, in bits, represented as an @code{int}.
358
 
359
@item TYPE_NAME
360
This macro returns a declaration (in the form of a @code{TYPE_DECL}) for
361
the type.  (Note this macro does @emph{not} return an
362
@code{IDENTIFIER_NODE}, as you might expect, given its name!)  You can
363
look at the @code{DECL_NAME} of the @code{TYPE_DECL} to obtain the
364
actual name of the type.  The @code{TYPE_NAME} will be @code{NULL_TREE}
365
for a type that is not a built-in type, the result of a typedef, or a
366
named class type.
367
 
368
@item TYPE_CANONICAL
369
This macro returns the ``canonical'' type for the given type
370
node. Canonical types are used to improve performance in the C++ and
371
Objective-C++ front ends by allowing efficient comparison between two
372
type nodes in @code{same_type_p}: if the @code{TYPE_CANONICAL} values
373
of the types are equal, the types are equivalent; otherwise, the types
374
are not equivalent. The notion of equivalence for canonical types is
375
the same as the notion of type equivalence in the language itself. For
376
instance,
377
 
378
When @code{TYPE_CANONICAL} is @code{NULL_TREE}, there is no canonical
379
type for the given type node. In this case, comparison between this
380
type and any other type requires the compiler to perform a deep,
381
``structural'' comparison to see if the two type nodes have the same
382
form and properties.
383
 
384
The canonical type for a node is always the most fundamental type in
385
the equivalence class of types. For instance, @code{int} is its own
386
canonical type. A typedef @code{I} of @code{int} will have @code{int}
387
as its canonical type. Similarly, @code{I*}@ and a typedef @code{IP}@
388
(defined to @code{I*}) will has @code{int*} as their canonical
389
type. When building a new type node, be sure to set
390
@code{TYPE_CANONICAL} to the appropriate canonical type. If the new
391
type is a compound type (built from other types), and any of those
392
other types require structural equality, use
393
@code{SET_TYPE_STRUCTURAL_EQUALITY} to ensure that the new type also
394
requires structural equality. Finally, if for some reason you cannot
395
guarantee that @code{TYPE_CANONICAL} will point to the canonical type,
396
use @code{SET_TYPE_STRUCTURAL_EQUALITY} to make sure that the new
397
type--and any type constructed based on it--requires structural
398
equality. If you suspect that the canonical type system is
399
miscomparing types, pass @code{--param verify-canonical-types=1} to
400
the compiler or configure with @code{--enable-checking} to force the
401
compiler to verify its canonical-type comparisons against the
402
structural comparisons; the compiler will then print any warnings if
403
the canonical types miscompare.
404
 
405
@item TYPE_STRUCTURAL_EQUALITY_P
406
This predicate holds when the node requires structural equality
407
checks, e.g., when @code{TYPE_CANONICAL} is @code{NULL_TREE}.
408
 
409
@item SET_TYPE_STRUCTURAL_EQUALITY
410
This macro states that the type node it is given requires structural
411
equality checks, e.g., it sets @code{TYPE_CANONICAL} to
412
@code{NULL_TREE}.
413
 
414
@item same_type_p
415
This predicate takes two types as input, and holds if they are the same
416
type.  For example, if one type is a @code{typedef} for the other, or
417
both are @code{typedef}s for the same type.  This predicate also holds if
418
the two trees given as input are simply copies of one another; i.e.,
419
there is no difference between them at the source level, but, for
420
whatever reason, a duplicate has been made in the representation.  You
421
should never use @code{==} (pointer equality) to compare types; always
422
use @code{same_type_p} instead.
423
@end ftable
424
 
425
Detailed below are the various kinds of types, and the macros that can
426
be used to access them.  Although other kinds of types are used
427
elsewhere in G++, the types described here are the only ones that you
428
will encounter while examining the intermediate representation.
429
 
430
@table @code
431
@item VOID_TYPE
432
Used to represent the @code{void} type.
433
 
434
@item INTEGER_TYPE
435
Used to represent the various integral types, including @code{char},
436
@code{short}, @code{int}, @code{long}, and @code{long long}.  This code
437
is not used for enumeration types, nor for the @code{bool} type.
438
The @code{TYPE_PRECISION} is the number of bits used in
439
the representation, represented as an @code{unsigned int}.  (Note that
440
in the general case this is not the same value as @code{TYPE_SIZE};
441
suppose that there were a 24-bit integer type, but that alignment
442
requirements for the ABI required 32-bit alignment.  Then,
443
@code{TYPE_SIZE} would be an @code{INTEGER_CST} for 32, while
444
@code{TYPE_PRECISION} would be 24.)  The integer type is unsigned if
445
@code{TYPE_UNSIGNED} holds; otherwise, it is signed.
446
 
447
The @code{TYPE_MIN_VALUE} is an @code{INTEGER_CST} for the smallest
448
integer that may be represented by this type.  Similarly, the
449
@code{TYPE_MAX_VALUE} is an @code{INTEGER_CST} for the largest integer
450
that may be represented by this type.
451
 
452
@item REAL_TYPE
453
Used to represent the @code{float}, @code{double}, and @code{long
454
double} types.  The number of bits in the floating-point representation
455
is given by @code{TYPE_PRECISION}, as in the @code{INTEGER_TYPE} case.
456
 
457
@item FIXED_POINT_TYPE
458
Used to represent the @code{short _Fract}, @code{_Fract}, @code{long
459
_Fract}, @code{long long _Fract}, @code{short _Accum}, @code{_Accum},
460
@code{long _Accum}, and @code{long long _Accum} types.  The number of bits
461
in the fixed-point representation is given by @code{TYPE_PRECISION},
462
as in the @code{INTEGER_TYPE} case.  There may be padding bits, fractional
463
bits and integral bits.  The number of fractional bits is given by
464
@code{TYPE_FBIT}, and the number of integral bits is given by @code{TYPE_IBIT}.
465
The fixed-point type is unsigned if @code{TYPE_UNSIGNED} holds; otherwise,
466
it is signed.
467
The fixed-point type is saturating if @code{TYPE_SATURATING} holds; otherwise,
468
it is not saturating.
469
 
470
@item COMPLEX_TYPE
471
Used to represent GCC built-in @code{__complex__} data types.  The
472
@code{TREE_TYPE} is the type of the real and imaginary parts.
473
 
474
@item ENUMERAL_TYPE
475
Used to represent an enumeration type.  The @code{TYPE_PRECISION} gives
476
(as an @code{int}), the number of bits used to represent the type.  If
477
there are no negative enumeration constants, @code{TYPE_UNSIGNED} will
478
hold.  The minimum and maximum enumeration constants may be obtained
479
with @code{TYPE_MIN_VALUE} and @code{TYPE_MAX_VALUE}, respectively; each
480
of these macros returns an @code{INTEGER_CST}.
481
 
482
The actual enumeration constants themselves may be obtained by looking
483
at the @code{TYPE_VALUES}.  This macro will return a @code{TREE_LIST},
484
containing the constants.  The @code{TREE_PURPOSE} of each node will be
485
an @code{IDENTIFIER_NODE} giving the name of the constant; the
486
@code{TREE_VALUE} will be an @code{INTEGER_CST} giving the value
487
assigned to that constant.  These constants will appear in the order in
488
which they were declared.  The @code{TREE_TYPE} of each of these
489
constants will be the type of enumeration type itself.
490
 
491
@item BOOLEAN_TYPE
492
Used to represent the @code{bool} type.
493
 
494
@item POINTER_TYPE
495
Used to represent pointer types, and pointer to data member types.  The
496
@code{TREE_TYPE} gives the type to which this type points.
497
 
498
@item REFERENCE_TYPE
499
Used to represent reference types.  The @code{TREE_TYPE} gives the type
500
to which this type refers.
501
 
502
@item FUNCTION_TYPE
503
Used to represent the type of non-member functions and of static member
504
functions.  The @code{TREE_TYPE} gives the return type of the function.
505
The @code{TYPE_ARG_TYPES} are a @code{TREE_LIST} of the argument types.
506
The @code{TREE_VALUE} of each node in this list is the type of the
507
corresponding argument; the @code{TREE_PURPOSE} is an expression for the
508
default argument value, if any.  If the last node in the list is
509
@code{void_list_node} (a @code{TREE_LIST} node whose @code{TREE_VALUE}
510
is the @code{void_type_node}), then functions of this type do not take
511
variable arguments.  Otherwise, they do take a variable number of
512
arguments.
513
 
514
Note that in C (but not in C++) a function declared like @code{void f()}
515
is an unprototyped function taking a variable number of arguments; the
516
@code{TYPE_ARG_TYPES} of such a function will be @code{NULL}.
517
 
518
@item METHOD_TYPE
519
Used to represent the type of a non-static member function.  Like a
520
@code{FUNCTION_TYPE}, the return type is given by the @code{TREE_TYPE}.
521
The type of @code{*this}, i.e., the class of which functions of this
522
type are a member, is given by the @code{TYPE_METHOD_BASETYPE}.  The
523
@code{TYPE_ARG_TYPES} is the parameter list, as for a
524
@code{FUNCTION_TYPE}, and includes the @code{this} argument.
525
 
526
@item ARRAY_TYPE
527
Used to represent array types.  The @code{TREE_TYPE} gives the type of
528
the elements in the array.  If the array-bound is present in the type,
529
the @code{TYPE_DOMAIN} is an @code{INTEGER_TYPE} whose
530
@code{TYPE_MIN_VALUE} and @code{TYPE_MAX_VALUE} will be the lower and
531
upper bounds of the array, respectively.  The @code{TYPE_MIN_VALUE} will
532
always be an @code{INTEGER_CST} for zero, while the
533
@code{TYPE_MAX_VALUE} will be one less than the number of elements in
534
the array, i.e., the highest value which may be used to index an element
535
in the array.
536
 
537
@item RECORD_TYPE
538
Used to represent @code{struct} and @code{class} types, as well as
539
pointers to member functions and similar constructs in other languages.
540
@code{TYPE_FIELDS} contains the items contained in this type, each of
541
which can be a @code{FIELD_DECL}, @code{VAR_DECL}, @code{CONST_DECL}, or
542
@code{TYPE_DECL}.  You may not make any assumptions about the ordering
543
of the fields in the type or whether one or more of them overlap.
544
 
545
@item UNION_TYPE
546
Used to represent @code{union} types.  Similar to @code{RECORD_TYPE}
547
except that all @code{FIELD_DECL} nodes in @code{TYPE_FIELD} start at
548
bit position zero.
549
 
550
@item QUAL_UNION_TYPE
551
Used to represent part of a variant record in Ada.  Similar to
552
@code{UNION_TYPE} except that each @code{FIELD_DECL} has a
553
@code{DECL_QUALIFIER} field, which contains a boolean expression that
554
indicates whether the field is present in the object.  The type will only
555
have one field, so each field's @code{DECL_QUALIFIER} is only evaluated
556
if none of the expressions in the previous fields in @code{TYPE_FIELDS}
557
are nonzero.  Normally these expressions will reference a field in the
558
outer object using a @code{PLACEHOLDER_EXPR}.
559
 
560
@item LANG_TYPE
561
This node is used to represent a language-specific type.  The front
562
end must handle it.
563
 
564
@item OFFSET_TYPE
565
This node is used to represent a pointer-to-data member.  For a data
566
member @code{X::m} the @code{TYPE_OFFSET_BASETYPE} is @code{X} and the
567
@code{TREE_TYPE} is the type of @code{m}.
568
 
569
@end table
570
 
571
There are variables whose values represent some of the basic types.
572
These include:
573
@table @code
574
@item void_type_node
575
A node for @code{void}.
576
 
577
@item integer_type_node
578
A node for @code{int}.
579
 
580
@item unsigned_type_node.
581
A node for @code{unsigned int}.
582
 
583
@item char_type_node.
584
A node for @code{char}.
585
@end table
586
@noindent
587
It may sometimes be useful to compare one of these variables with a type
588
in hand, using @code{same_type_p}.
589
 
590
@c ---------------------------------------------------------------------
591
@c Declarations
592
@c ---------------------------------------------------------------------
593
 
594
@node Declarations
595
@section Declarations
596
@cindex declaration
597
@cindex variable
598
@cindex type declaration
599
@tindex LABEL_DECL
600
@tindex CONST_DECL
601
@tindex TYPE_DECL
602
@tindex VAR_DECL
603
@tindex PARM_DECL
604
@tindex DEBUG_EXPR_DECL
605
@tindex FIELD_DECL
606
@tindex NAMESPACE_DECL
607
@tindex RESULT_DECL
608
@tindex TEMPLATE_DECL
609
@tindex THUNK_DECL
610
@findex THUNK_DELTA
611
@findex DECL_INITIAL
612
@findex DECL_SIZE
613
@findex DECL_ALIGN
614
@findex DECL_EXTERNAL
615
 
616
This section covers the various kinds of declarations that appear in the
617
internal representation, except for declarations of functions
618
(represented by @code{FUNCTION_DECL} nodes), which are described in
619
@ref{Functions}.
620
 
621
@menu
622
* Working with declarations::  Macros and functions that work on
623
declarations.
624
* Internal structure:: How declaration nodes are represented.
625
@end menu
626
 
627
@node Working with declarations
628
@subsection Working with declarations
629
 
630
Some macros can be used with any kind of declaration.  These include:
631
@ftable @code
632
@item DECL_NAME
633
This macro returns an @code{IDENTIFIER_NODE} giving the name of the
634
entity.
635
 
636
@item TREE_TYPE
637
This macro returns the type of the entity declared.
638
 
639
@item EXPR_FILENAME
640
This macro returns the name of the file in which the entity was
641
declared, as a @code{char*}.  For an entity declared implicitly by the
642
compiler (like @code{__builtin_memcpy}), this will be the string
643
@code{"<internal>"}.
644
 
645
@item EXPR_LINENO
646
This macro returns the line number at which the entity was declared, as
647
an @code{int}.
648
 
649
@item DECL_ARTIFICIAL
650
This predicate holds if the declaration was implicitly generated by the
651
compiler.  For example, this predicate will hold of an implicitly
652
declared member function, or of the @code{TYPE_DECL} implicitly
653
generated for a class type.  Recall that in C++ code like:
654
@smallexample
655
struct S @{@};
656
@end smallexample
657
@noindent
658
is roughly equivalent to C code like:
659
@smallexample
660
struct S @{@};
661
typedef struct S S;
662
@end smallexample
663
The implicitly generated @code{typedef} declaration is represented by a
664
@code{TYPE_DECL} for which @code{DECL_ARTIFICIAL} holds.
665
 
666
@end ftable
667
 
668
The various kinds of declarations include:
669
@table @code
670
@item LABEL_DECL
671
These nodes are used to represent labels in function bodies.  For more
672
information, see @ref{Functions}.  These nodes only appear in block
673
scopes.
674
 
675
@item CONST_DECL
676
These nodes are used to represent enumeration constants.  The value of
677
the constant is given by @code{DECL_INITIAL} which will be an
678
@code{INTEGER_CST} with the same type as the @code{TREE_TYPE} of the
679
@code{CONST_DECL}, i.e., an @code{ENUMERAL_TYPE}.
680
 
681
@item RESULT_DECL
682
These nodes represent the value returned by a function.  When a value is
683
assigned to a @code{RESULT_DECL}, that indicates that the value should
684
be returned, via bitwise copy, by the function.  You can use
685
@code{DECL_SIZE} and @code{DECL_ALIGN} on a @code{RESULT_DECL}, just as
686
with a @code{VAR_DECL}.
687
 
688
@item TYPE_DECL
689
These nodes represent @code{typedef} declarations.  The @code{TREE_TYPE}
690
is the type declared to have the name given by @code{DECL_NAME}.  In
691
some cases, there is no associated name.
692
 
693
@item VAR_DECL
694
These nodes represent variables with namespace or block scope, as well
695
as static data members.  The @code{DECL_SIZE} and @code{DECL_ALIGN} are
696
analogous to @code{TYPE_SIZE} and @code{TYPE_ALIGN}.  For a declaration,
697
you should always use the @code{DECL_SIZE} and @code{DECL_ALIGN} rather
698
than the @code{TYPE_SIZE} and @code{TYPE_ALIGN} given by the
699
@code{TREE_TYPE}, since special attributes may have been applied to the
700
variable to give it a particular size and alignment.  You may use the
701
predicates @code{DECL_THIS_STATIC} or @code{DECL_THIS_EXTERN} to test
702
whether the storage class specifiers @code{static} or @code{extern} were
703
used to declare a variable.
704
 
705
If this variable is initialized (but does not require a constructor),
706
the @code{DECL_INITIAL} will be an expression for the initializer.  The
707
initializer should be evaluated, and a bitwise copy into the variable
708
performed.  If the @code{DECL_INITIAL} is the @code{error_mark_node},
709
there is an initializer, but it is given by an explicit statement later
710
in the code; no bitwise copy is required.
711
 
712
GCC provides an extension that allows either automatic variables, or
713
global variables, to be placed in particular registers.  This extension
714
is being used for a particular @code{VAR_DECL} if @code{DECL_REGISTER}
715
holds for the @code{VAR_DECL}, and if @code{DECL_ASSEMBLER_NAME} is not
716
equal to @code{DECL_NAME}.  In that case, @code{DECL_ASSEMBLER_NAME} is
717
the name of the register into which the variable will be placed.
718
 
719
@item PARM_DECL
720
Used to represent a parameter to a function.  Treat these nodes
721
similarly to @code{VAR_DECL} nodes.  These nodes only appear in the
722
@code{DECL_ARGUMENTS} for a @code{FUNCTION_DECL}.
723
 
724
The @code{DECL_ARG_TYPE} for a @code{PARM_DECL} is the type that will
725
actually be used when a value is passed to this function.  It may be a
726
wider type than the @code{TREE_TYPE} of the parameter; for example, the
727
ordinary type might be @code{short} while the @code{DECL_ARG_TYPE} is
728
@code{int}.
729
 
730
@item DEBUG_EXPR_DECL
731
Used to represent an anonymous debug-information temporary created to
732
hold an expression as it is optimized away, so that its value can be
733
referenced in debug bind statements.
734
 
735
@item FIELD_DECL
736
These nodes represent non-static data members.  The @code{DECL_SIZE} and
737
@code{DECL_ALIGN} behave as for @code{VAR_DECL} nodes.
738
The position of the field within the parent record is specified by a
739
combination of three attributes.  @code{DECL_FIELD_OFFSET} is the position,
740
counting in bytes, of the @code{DECL_OFFSET_ALIGN}-bit sized word containing
741
the bit of the field closest to the beginning of the structure.
742
@code{DECL_FIELD_BIT_OFFSET} is the bit offset of the first bit of the field
743
within this word; this may be nonzero even for fields that are not bit-fields,
744
since @code{DECL_OFFSET_ALIGN} may be greater than the natural alignment
745
of the field's type.
746
 
747
If @code{DECL_C_BIT_FIELD} holds, this field is a bit-field.  In a bit-field,
748
@code{DECL_BIT_FIELD_TYPE} also contains the type that was originally
749
specified for it, while DECL_TYPE may be a modified type with lesser precision,
750
according to the size of the bit field.
751
 
752
@item NAMESPACE_DECL
753
Namespaces provide a name hierarchy for other declarations.  They
754
appear in the @code{DECL_CONTEXT} of other @code{_DECL} nodes.
755
 
756
@end table
757
 
758
@node Internal structure
759
@subsection Internal structure
760
 
761
@code{DECL} nodes are represented internally as a hierarchy of
762
structures.
763
 
764
@menu
765
* Current structure hierarchy::  The current DECL node structure
766
hierarchy.
767
* Adding new DECL node types:: How to add a new DECL node to a
768
frontend.
769
@end menu
770
 
771
@node Current structure hierarchy
772
@subsubsection Current structure hierarchy
773
 
774
@table @code
775
 
776
@item struct tree_decl_minimal
777
This is the minimal structure to inherit from in order for common
778
@code{DECL} macros to work.  The fields it contains are a unique ID,
779
source location, context, and name.
780
 
781
@item struct tree_decl_common
782
This structure inherits from @code{struct tree_decl_minimal}.  It
783
contains fields that most @code{DECL} nodes need, such as a field to
784
store alignment, machine mode, size, and attributes.
785
 
786
@item struct tree_field_decl
787
This structure inherits from @code{struct tree_decl_common}.  It is
788
used to represent @code{FIELD_DECL}.
789
 
790
@item struct tree_label_decl
791
This structure inherits from @code{struct tree_decl_common}.  It is
792
used to represent @code{LABEL_DECL}.
793
 
794
@item struct tree_translation_unit_decl
795
This structure inherits from @code{struct tree_decl_common}.  It is
796
used to represent @code{TRANSLATION_UNIT_DECL}.
797
 
798
@item struct tree_decl_with_rtl
799
This structure inherits from @code{struct tree_decl_common}.  It
800
contains a field to store the low-level RTL associated with a
801
@code{DECL} node.
802
 
803
@item struct tree_result_decl
804
This structure inherits from @code{struct tree_decl_with_rtl}.  It is
805
used to represent @code{RESULT_DECL}.
806
 
807
@item struct tree_const_decl
808
This structure inherits from @code{struct tree_decl_with_rtl}.  It is
809
used to represent @code{CONST_DECL}.
810
 
811
@item struct tree_parm_decl
812
This structure inherits from @code{struct tree_decl_with_rtl}.  It is
813
used to represent @code{PARM_DECL}.
814
 
815
@item struct tree_decl_with_vis
816
This structure inherits from @code{struct tree_decl_with_rtl}.  It
817
contains fields necessary to store visibility information, as well as
818
a section name and assembler name.
819
 
820
@item struct tree_var_decl
821
This structure inherits from @code{struct tree_decl_with_vis}.  It is
822
used to represent @code{VAR_DECL}.
823
 
824
@item struct tree_function_decl
825
This structure inherits from @code{struct tree_decl_with_vis}.  It is
826
used to represent @code{FUNCTION_DECL}.
827
 
828
@end table
829
@node Adding new DECL node types
830
@subsubsection Adding new DECL node types
831
 
832
Adding a new @code{DECL} tree consists of the following steps
833
 
834
@table @asis
835
 
836
@item Add a new tree code for the @code{DECL} node
837
For language specific @code{DECL} nodes, there is a @file{.def} file
838
in each frontend directory where the tree code should be added.
839
For @code{DECL} nodes that are part of the middle-end, the code should
840
be added to @file{tree.def}.
841
 
842
@item Create a new structure type for the @code{DECL} node
843
These structures should inherit from one of the existing structures in
844
the language hierarchy by using that structure as the first member.
845
 
846
@smallexample
847
struct tree_foo_decl
848
@{
849
   struct tree_decl_with_vis common;
850
@}
851
@end smallexample
852
 
853
Would create a structure name @code{tree_foo_decl} that inherits from
854
@code{struct tree_decl_with_vis}.
855
 
856
For language specific @code{DECL} nodes, this new structure type
857
should go in the appropriate @file{.h} file.
858
For @code{DECL} nodes that are part of the middle-end, the structure
859
type should go in @file{tree.h}.
860
 
861
@item Add a member to the tree structure enumerator for the node
862
For garbage collection and dynamic checking purposes, each @code{DECL}
863
node structure type is required to have a unique enumerator value
864
specified with it.
865
For language specific @code{DECL} nodes, this new enumerator value
866
should go in the appropriate @file{.def} file.
867
For @code{DECL} nodes that are part of the middle-end, the enumerator
868
values are specified in @file{treestruct.def}.
869
 
870
@item Update @code{union tree_node}
871
In order to make your new structure type usable, it must be added to
872
@code{union tree_node}.
873
For language specific @code{DECL} nodes, a new entry should be added
874
to the appropriate @file{.h} file of the form
875
@smallexample
876
  struct tree_foo_decl GTY ((tag ("TS_VAR_DECL"))) foo_decl;
877
@end smallexample
878
For @code{DECL} nodes that are part of the middle-end, the additional
879
member goes directly into @code{union tree_node} in @file{tree.h}.
880
 
881
@item Update dynamic checking info
882
In order to be able to check whether accessing a named portion of
883
@code{union tree_node} is legal, and whether a certain @code{DECL} node
884
contains one of the enumerated @code{DECL} node structures in the
885
hierarchy, a simple lookup table is used.
886
This lookup table needs to be kept up to date with the tree structure
887
hierarchy, or else checking and containment macros will fail
888
inappropriately.
889
 
890
For language specific @code{DECL} nodes, their is an @code{init_ts}
891
function in an appropriate @file{.c} file, which initializes the lookup
892
table.
893
Code setting up the table for new @code{DECL} nodes should be added
894
there.
895
For each @code{DECL} tree code and enumerator value representing a
896
member of the inheritance  hierarchy, the table should contain 1 if
897
that tree code inherits (directly or indirectly) from that member.
898
Thus, a @code{FOO_DECL} node derived from @code{struct decl_with_rtl},
899
and enumerator value @code{TS_FOO_DECL}, would be set up as follows
900
@smallexample
901
tree_contains_struct[FOO_DECL][TS_FOO_DECL] = 1;
902
tree_contains_struct[FOO_DECL][TS_DECL_WRTL] = 1;
903
tree_contains_struct[FOO_DECL][TS_DECL_COMMON] = 1;
904
tree_contains_struct[FOO_DECL][TS_DECL_MINIMAL] = 1;
905
@end smallexample
906
 
907
For @code{DECL} nodes that are part of the middle-end, the setup code
908
goes into @file{tree.c}.
909
 
910
@item Add macros to access any new fields and flags
911
 
912
Each added field or flag should have a macro that is used to access
913
it, that performs appropriate checking to ensure only the right type of
914
@code{DECL} nodes access the field.
915
 
916
These macros generally take the following form
917
@smallexample
918
#define FOO_DECL_FIELDNAME(NODE) FOO_DECL_CHECK(NODE)->foo_decl.fieldname
919
@end smallexample
920
However, if the structure is simply a base class for further
921
structures, something like the following should be used
922
@smallexample
923
#define BASE_STRUCT_CHECK(T) CONTAINS_STRUCT_CHECK(T, TS_BASE_STRUCT)
924
#define BASE_STRUCT_FIELDNAME(NODE) \
925
   (BASE_STRUCT_CHECK(NODE)->base_struct.fieldname
926
@end smallexample
927
 
928
@end table
929
 
930
 
931
@c ---------------------------------------------------------------------
932
@c Attributes
933
@c ---------------------------------------------------------------------
934
@node Attributes
935
@section Attributes in trees
936
@cindex attributes
937
 
938
Attributes, as specified using the @code{__attribute__} keyword, are
939
represented internally as a @code{TREE_LIST}.  The @code{TREE_PURPOSE}
940
is the name of the attribute, as an @code{IDENTIFIER_NODE}.  The
941
@code{TREE_VALUE} is a @code{TREE_LIST} of the arguments of the
942
attribute, if any, or @code{NULL_TREE} if there are no arguments; the
943
arguments are stored as the @code{TREE_VALUE} of successive entries in
944
the list, and may be identifiers or expressions.  The @code{TREE_CHAIN}
945
of the attribute is the next attribute in a list of attributes applying
946
to the same declaration or type, or @code{NULL_TREE} if there are no
947
further attributes in the list.
948
 
949
Attributes may be attached to declarations and to types; these
950
attributes may be accessed with the following macros.  All attributes
951
are stored in this way, and many also cause other changes to the
952
declaration or type or to other internal compiler data structures.
953
 
954
@deftypefn {Tree Macro} tree DECL_ATTRIBUTES (tree @var{decl})
955
This macro returns the attributes on the declaration @var{decl}.
956
@end deftypefn
957
 
958
@deftypefn {Tree Macro} tree TYPE_ATTRIBUTES (tree @var{type})
959
This macro returns the attributes on the type @var{type}.
960
@end deftypefn
961
 
962
 
963
@c ---------------------------------------------------------------------
964
@c Expressions
965
@c ---------------------------------------------------------------------
966
 
967
@node Expression trees
968
@section Expressions
969
@cindex expression
970
@findex TREE_TYPE
971
@findex TREE_OPERAND
972
 
973
The internal representation for expressions is for the most part quite
974
straightforward.  However, there are a few facts that one must bear in
975
mind.  In particular, the expression ``tree'' is actually a directed
976
acyclic graph.  (For example there may be many references to the integer
977
constant zero throughout the source program; many of these will be
978
represented by the same expression node.)  You should not rely on
979
certain kinds of node being shared, nor should you rely on certain kinds of
980
nodes being unshared.
981
 
982
The following macros can be used with all expression nodes:
983
 
984
@ftable @code
985
@item TREE_TYPE
986
Returns the type of the expression.  This value may not be precisely the
987
same type that would be given the expression in the original program.
988
@end ftable
989
 
990
In what follows, some nodes that one might expect to always have type
991
@code{bool} are documented to have either integral or boolean type.  At
992
some point in the future, the C front end may also make use of this same
993
intermediate representation, and at this point these nodes will
994
certainly have integral type.  The previous sentence is not meant to
995
imply that the C++ front end does not or will not give these nodes
996
integral type.
997
 
998
Below, we list the various kinds of expression nodes.  Except where
999
noted otherwise, the operands to an expression are accessed using the
1000
@code{TREE_OPERAND} macro.  For example, to access the first operand to
1001
a binary plus expression @code{expr}, use:
1002
 
1003
@smallexample
1004
TREE_OPERAND (expr, 0)
1005
@end smallexample
1006
@noindent
1007
 
1008
As this example indicates, the operands are zero-indexed.
1009
 
1010
 
1011
@menu
1012
* Constants: Constant expressions.
1013
* Storage References::
1014
* Unary and Binary Expressions::
1015
* Vectors::
1016
@end menu
1017
 
1018
@node Constant expressions
1019
@subsection Constant expressions
1020
@tindex INTEGER_CST
1021
@findex TREE_INT_CST_HIGH
1022
@findex TREE_INT_CST_LOW
1023
@findex tree_int_cst_lt
1024
@findex tree_int_cst_equal
1025
@tindex REAL_CST
1026
@tindex FIXED_CST
1027
@tindex COMPLEX_CST
1028
@tindex VECTOR_CST
1029
@tindex STRING_CST
1030
@findex TREE_STRING_LENGTH
1031
@findex TREE_STRING_POINTER
1032
 
1033
The table below begins with constants, moves on to unary expressions,
1034
then proceeds to binary expressions, and concludes with various other
1035
kinds of expressions:
1036
 
1037
@table @code
1038
@item INTEGER_CST
1039
These nodes represent integer constants.  Note that the type of these
1040
constants is obtained with @code{TREE_TYPE}; they are not always of type
1041
@code{int}.  In particular, @code{char} constants are represented with
1042
@code{INTEGER_CST} nodes.  The value of the integer constant @code{e} is
1043
given by
1044
@smallexample
1045
((TREE_INT_CST_HIGH (e) << HOST_BITS_PER_WIDE_INT)
1046
+ TREE_INST_CST_LOW (e))
1047
@end smallexample
1048
@noindent
1049
HOST_BITS_PER_WIDE_INT is at least thirty-two on all platforms.  Both
1050
@code{TREE_INT_CST_HIGH} and @code{TREE_INT_CST_LOW} return a
1051
@code{HOST_WIDE_INT}.  The value of an @code{INTEGER_CST} is interpreted
1052
as a signed or unsigned quantity depending on the type of the constant.
1053
In general, the expression given above will overflow, so it should not
1054
be used to calculate the value of the constant.
1055
 
1056
The variable @code{integer_zero_node} is an integer constant with value
1057
zero.  Similarly, @code{integer_one_node} is an integer constant with
1058
value one.  The @code{size_zero_node} and @code{size_one_node} variables
1059
are analogous, but have type @code{size_t} rather than @code{int}.
1060
 
1061
The function @code{tree_int_cst_lt} is a predicate which holds if its
1062
first argument is less than its second.  Both constants are assumed to
1063
have the same signedness (i.e., either both should be signed or both
1064
should be unsigned.)  The full width of the constant is used when doing
1065
the comparison; the usual rules about promotions and conversions are
1066
ignored.  Similarly, @code{tree_int_cst_equal} holds if the two
1067
constants are equal.  The @code{tree_int_cst_sgn} function returns the
1068
sign of a constant.  The value is @code{1}, @code{0}, or @code{-1}
1069
according on whether the constant is greater than, equal to, or less
1070
than zero.  Again, the signedness of the constant's type is taken into
1071
account; an unsigned constant is never less than zero, no matter what
1072
its bit-pattern.
1073
 
1074
@item REAL_CST
1075
 
1076
FIXME: Talk about how to obtain representations of this constant, do
1077
comparisons, and so forth.
1078
 
1079
@item FIXED_CST
1080
 
1081
These nodes represent fixed-point constants.  The type of these constants
1082
is obtained with @code{TREE_TYPE}.  @code{TREE_FIXED_CST_PTR} points to
1083
a @code{struct fixed_value};  @code{TREE_FIXED_CST} returns the structure
1084
itself.  @code{struct fixed_value} contains @code{data} with the size of two
1085
@code{HOST_BITS_PER_WIDE_INT} and @code{mode} as the associated fixed-point
1086
machine mode for @code{data}.
1087
 
1088
@item COMPLEX_CST
1089
These nodes are used to represent complex number constants, that is a
1090
@code{__complex__} whose parts are constant nodes.  The
1091
@code{TREE_REALPART} and @code{TREE_IMAGPART} return the real and the
1092
imaginary parts respectively.
1093
 
1094
@item VECTOR_CST
1095
These nodes are used to represent vector constants, whose parts are
1096
constant nodes.  Each individual constant node is either an integer or a
1097
double constant node.  The first operand is a @code{TREE_LIST} of the
1098
constant nodes and is accessed through @code{TREE_VECTOR_CST_ELTS}.
1099
 
1100
@item STRING_CST
1101
These nodes represent string-constants.  The @code{TREE_STRING_LENGTH}
1102
returns the length of the string, as an @code{int}.  The
1103
@code{TREE_STRING_POINTER} is a @code{char*} containing the string
1104
itself.  The string may not be @code{NUL}-terminated, and it may contain
1105
embedded @code{NUL} characters.  Therefore, the
1106
@code{TREE_STRING_LENGTH} includes the trailing @code{NUL} if it is
1107
present.
1108
 
1109
For wide string constants, the @code{TREE_STRING_LENGTH} is the number
1110
of bytes in the string, and the @code{TREE_STRING_POINTER}
1111
points to an array of the bytes of the string, as represented on the
1112
target system (that is, as integers in the target endianness).  Wide and
1113
non-wide string constants are distinguished only by the @code{TREE_TYPE}
1114
of the @code{STRING_CST}.
1115
 
1116
FIXME: The formats of string constants are not well-defined when the
1117
target system bytes are not the same width as host system bytes.
1118
 
1119
@end table
1120
 
1121
@node Storage References
1122
@subsection References to storage
1123
@tindex ADDR_EXPR
1124
@tindex INDIRECT_REF
1125
@tindex ARRAY_REF
1126
@tindex ARRAY_RANGE_REF
1127
@tindex TARGET_MEM_REF
1128
@tindex COMPONENT_REF
1129
 
1130
@table @code
1131
@item ARRAY_REF
1132
These nodes represent array accesses.  The first operand is the array;
1133
the second is the index.  To calculate the address of the memory
1134
accessed, you must scale the index by the size of the type of the array
1135
elements.  The type of these expressions must be the type of a component of
1136
the array.  The third and fourth operands are used after gimplification
1137
to represent the lower bound and component size but should not be used
1138
directly; call @code{array_ref_low_bound} and @code{array_ref_element_size}
1139
instead.
1140
 
1141
@item ARRAY_RANGE_REF
1142
These nodes represent access to a range (or ``slice'') of an array.  The
1143
operands are the same as that for @code{ARRAY_REF} and have the same
1144
meanings.  The type of these expressions must be an array whose component
1145
type is the same as that of the first operand.  The range of that array
1146
type determines the amount of data these expressions access.
1147
 
1148
@item TARGET_MEM_REF
1149
These nodes represent memory accesses whose address directly map to
1150
an addressing mode of the target architecture.  The first argument
1151
is @code{TMR_SYMBOL} and must be a @code{VAR_DECL} of an object with
1152
a fixed address.  The second argument is @code{TMR_BASE} and the
1153
third one is @code{TMR_INDEX}.  The fourth argument is
1154
@code{TMR_STEP} and must be an @code{INTEGER_CST}.  The fifth
1155
argument is @code{TMR_OFFSET} and must be an @code{INTEGER_CST}.
1156
Any of the arguments may be NULL if the appropriate component
1157
does not appear in the address.  Address of the @code{TARGET_MEM_REF}
1158
is determined in the following way.
1159
 
1160
@smallexample
1161
&TMR_SYMBOL + TMR_BASE + TMR_INDEX * TMR_STEP + TMR_OFFSET
1162
@end smallexample
1163
 
1164
The sixth argument is the reference to the original memory access, which
1165
is preserved for the purposes of the RTL alias analysis.  The seventh
1166
argument is a tag representing the results of tree level alias analysis.
1167
 
1168
@item ADDR_EXPR
1169
These nodes are used to represent the address of an object.  (These
1170
expressions will always have pointer or reference type.)  The operand may
1171
be another expression, or it may be a declaration.
1172
 
1173
As an extension, GCC allows users to take the address of a label.  In
1174
this case, the operand of the @code{ADDR_EXPR} will be a
1175
@code{LABEL_DECL}.  The type of such an expression is @code{void*}.
1176
 
1177
If the object addressed is not an lvalue, a temporary is created, and
1178
the address of the temporary is used.
1179
 
1180
@item INDIRECT_REF
1181
These nodes are used to represent the object pointed to by a pointer.
1182
The operand is the pointer being dereferenced; it will always have
1183
pointer or reference type.
1184
 
1185
@item COMPONENT_REF
1186
These nodes represent non-static data member accesses.  The first
1187
operand is the object (rather than a pointer to it); the second operand
1188
is the @code{FIELD_DECL} for the data member.  The third operand represents
1189
the byte offset of the field, but should not be used directly; call
1190
@code{component_ref_field_offset} instead.
1191
 
1192
 
1193
@end table
1194
 
1195
@node Unary and Binary Expressions
1196
@subsection Unary and Binary Expressions
1197
@tindex NEGATE_EXPR
1198
@tindex ABS_EXPR
1199
@tindex BIT_NOT_EXPR
1200
@tindex TRUTH_NOT_EXPR
1201
@tindex PREDECREMENT_EXPR
1202
@tindex PREINCREMENT_EXPR
1203
@tindex POSTDECREMENT_EXPR
1204
@tindex POSTINCREMENT_EXPR
1205
@tindex FIX_TRUNC_EXPR
1206
@tindex FLOAT_EXPR
1207
@tindex COMPLEX_EXPR
1208
@tindex CONJ_EXPR
1209
@tindex REALPART_EXPR
1210
@tindex IMAGPART_EXPR
1211
@tindex NON_LVALUE_EXPR
1212
@tindex NOP_EXPR
1213
@tindex CONVERT_EXPR
1214
@tindex FIXED_CONVERT_EXPR
1215
@tindex THROW_EXPR
1216
@tindex LSHIFT_EXPR
1217
@tindex RSHIFT_EXPR
1218
@tindex BIT_IOR_EXPR
1219
@tindex BIT_XOR_EXPR
1220
@tindex BIT_AND_EXPR
1221
@tindex TRUTH_ANDIF_EXPR
1222
@tindex TRUTH_ORIF_EXPR
1223
@tindex TRUTH_AND_EXPR
1224
@tindex TRUTH_OR_EXPR
1225
@tindex TRUTH_XOR_EXPR
1226
@tindex POINTER_PLUS_EXPR
1227
@tindex PLUS_EXPR
1228
@tindex MINUS_EXPR
1229
@tindex MULT_EXPR
1230
@tindex RDIV_EXPR
1231
@tindex TRUNC_DIV_EXPR
1232
@tindex FLOOR_DIV_EXPR
1233
@tindex CEIL_DIV_EXPR
1234
@tindex ROUND_DIV_EXPR
1235
@tindex TRUNC_MOD_EXPR
1236
@tindex FLOOR_MOD_EXPR
1237
@tindex CEIL_MOD_EXPR
1238
@tindex ROUND_MOD_EXPR
1239
@tindex EXACT_DIV_EXPR
1240
@tindex LT_EXPR
1241
@tindex LE_EXPR
1242
@tindex GT_EXPR
1243
@tindex GE_EXPR
1244
@tindex EQ_EXPR
1245
@tindex NE_EXPR
1246
@tindex ORDERED_EXPR
1247
@tindex UNORDERED_EXPR
1248
@tindex UNLT_EXPR
1249
@tindex UNLE_EXPR
1250
@tindex UNGT_EXPR
1251
@tindex UNGE_EXPR
1252
@tindex UNEQ_EXPR
1253
@tindex LTGT_EXPR
1254
@tindex MODIFY_EXPR
1255
@tindex INIT_EXPR
1256
@tindex COMPOUND_EXPR
1257
@tindex COND_EXPR
1258
@tindex CALL_EXPR
1259
@tindex STMT_EXPR
1260
@tindex BIND_EXPR
1261
@tindex LOOP_EXPR
1262
@tindex EXIT_EXPR
1263
@tindex CLEANUP_POINT_EXPR
1264
@tindex CONSTRUCTOR
1265
@tindex COMPOUND_LITERAL_EXPR
1266
@tindex SAVE_EXPR
1267
@tindex TARGET_EXPR
1268
@tindex VA_ARG_EXPR
1269
 
1270
@table @code
1271
@item NEGATE_EXPR
1272
These nodes represent unary negation of the single operand, for both
1273
integer and floating-point types.  The type of negation can be
1274
determined by looking at the type of the expression.
1275
 
1276
The behavior of this operation on signed arithmetic overflow is
1277
controlled by the @code{flag_wrapv} and @code{flag_trapv} variables.
1278
 
1279
@item ABS_EXPR
1280
These nodes represent the absolute value of the single operand, for
1281
both integer and floating-point types.  This is typically used to
1282
implement the @code{abs}, @code{labs} and @code{llabs} builtins for
1283
integer types, and the @code{fabs}, @code{fabsf} and @code{fabsl}
1284
builtins for floating point types.  The type of abs operation can
1285
be determined by looking at the type of the expression.
1286
 
1287
This node is not used for complex types.  To represent the modulus
1288
or complex abs of a complex value, use the @code{BUILT_IN_CABS},
1289
@code{BUILT_IN_CABSF} or @code{BUILT_IN_CABSL} builtins, as used
1290
to implement the C99 @code{cabs}, @code{cabsf} and @code{cabsl}
1291
built-in functions.
1292
 
1293
@item BIT_NOT_EXPR
1294
These nodes represent bitwise complement, and will always have integral
1295
type.  The only operand is the value to be complemented.
1296
 
1297
@item TRUTH_NOT_EXPR
1298
These nodes represent logical negation, and will always have integral
1299
(or boolean) type.  The operand is the value being negated.  The type
1300
of the operand and that of the result are always of @code{BOOLEAN_TYPE}
1301
or @code{INTEGER_TYPE}.
1302
 
1303
@item PREDECREMENT_EXPR
1304
@itemx PREINCREMENT_EXPR
1305
@itemx POSTDECREMENT_EXPR
1306
@itemx POSTINCREMENT_EXPR
1307
These nodes represent increment and decrement expressions.  The value of
1308
the single operand is computed, and the operand incremented or
1309
decremented.  In the case of @code{PREDECREMENT_EXPR} and
1310
@code{PREINCREMENT_EXPR}, the value of the expression is the value
1311
resulting after the increment or decrement; in the case of
1312
@code{POSTDECREMENT_EXPR} and @code{POSTINCREMENT_EXPR} is the value
1313
before the increment or decrement occurs.  The type of the operand, like
1314
that of the result, will be either integral, boolean, or floating-point.
1315
 
1316
@item FIX_TRUNC_EXPR
1317
These nodes represent conversion of a floating-point value to an
1318
integer.  The single operand will have a floating-point type, while
1319
the complete expression will have an integral (or boolean) type.  The
1320
operand is rounded towards zero.
1321
 
1322
@item FLOAT_EXPR
1323
These nodes represent conversion of an integral (or boolean) value to a
1324
floating-point value.  The single operand will have integral type, while
1325
the complete expression will have a floating-point type.
1326
 
1327
FIXME: How is the operand supposed to be rounded?  Is this dependent on
1328
@option{-mieee}?
1329
 
1330
@item COMPLEX_EXPR
1331
These nodes are used to represent complex numbers constructed from two
1332
expressions of the same (integer or real) type.  The first operand is the
1333
real part and the second operand is the imaginary part.
1334
 
1335
@item CONJ_EXPR
1336
These nodes represent the conjugate of their operand.
1337
 
1338
@item REALPART_EXPR
1339
@itemx IMAGPART_EXPR
1340
These nodes represent respectively the real and the imaginary parts
1341
of complex numbers (their sole argument).
1342
 
1343
@item NON_LVALUE_EXPR
1344
These nodes indicate that their one and only operand is not an lvalue.
1345
A back end can treat these identically to the single operand.
1346
 
1347
@item NOP_EXPR
1348
These nodes are used to represent conversions that do not require any
1349
code-generation.  For example, conversion of a @code{char*} to an
1350
@code{int*} does not require any code be generated; such a conversion is
1351
represented by a @code{NOP_EXPR}.  The single operand is the expression
1352
to be converted.  The conversion from a pointer to a reference is also
1353
represented with a @code{NOP_EXPR}.
1354
 
1355
@item CONVERT_EXPR
1356
These nodes are similar to @code{NOP_EXPR}s, but are used in those
1357
situations where code may need to be generated.  For example, if an
1358
@code{int*} is converted to an @code{int} code may need to be generated
1359
on some platforms.  These nodes are never used for C++-specific
1360
conversions, like conversions between pointers to different classes in
1361
an inheritance hierarchy.  Any adjustments that need to be made in such
1362
cases are always indicated explicitly.  Similarly, a user-defined
1363
conversion is never represented by a @code{CONVERT_EXPR}; instead, the
1364
function calls are made explicit.
1365
 
1366
@item FIXED_CONVERT_EXPR
1367
These nodes are used to represent conversions that involve fixed-point
1368
values.  For example, from a fixed-point value to another fixed-point value,
1369
from an integer to a fixed-point value, from a fixed-point value to an
1370
integer, from a floating-point value to a fixed-point value, or from
1371
a fixed-point value to a floating-point value.
1372
 
1373
@item LSHIFT_EXPR
1374
@itemx RSHIFT_EXPR
1375
These nodes represent left and right shifts, respectively.  The first
1376
operand is the value to shift; it will always be of integral type.  The
1377
second operand is an expression for the number of bits by which to
1378
shift.  Right shift should be treated as arithmetic, i.e., the
1379
high-order bits should be zero-filled when the expression has unsigned
1380
type and filled with the sign bit when the expression has signed type.
1381
Note that the result is undefined if the second operand is larger
1382
than or equal to the first operand's type size.
1383
 
1384
 
1385
@item BIT_IOR_EXPR
1386
@itemx BIT_XOR_EXPR
1387
@itemx BIT_AND_EXPR
1388
These nodes represent bitwise inclusive or, bitwise exclusive or, and
1389
bitwise and, respectively.  Both operands will always have integral
1390
type.
1391
 
1392
@item TRUTH_ANDIF_EXPR
1393
@itemx TRUTH_ORIF_EXPR
1394
These nodes represent logical ``and'' and logical ``or'', respectively.
1395
These operators are not strict; i.e., the second operand is evaluated
1396
only if the value of the expression is not determined by evaluation of
1397
the first operand.  The type of the operands and that of the result are
1398
always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}.
1399
 
1400
@item TRUTH_AND_EXPR
1401
@itemx TRUTH_OR_EXPR
1402
@itemx TRUTH_XOR_EXPR
1403
These nodes represent logical and, logical or, and logical exclusive or.
1404
They are strict; both arguments are always evaluated.  There are no
1405
corresponding operators in C or C++, but the front end will sometimes
1406
generate these expressions anyhow, if it can tell that strictness does
1407
not matter.  The type of the operands and that of the result are
1408
always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}.
1409
 
1410
@itemx POINTER_PLUS_EXPR
1411
This node represents pointer arithmetic.  The first operand is always
1412
a pointer/reference type.  The second operand is always an unsigned
1413
integer type compatible with sizetype.  This is the only binary
1414
arithmetic operand that can operate on pointer types.
1415
 
1416
@itemx PLUS_EXPR
1417
@itemx MINUS_EXPR
1418
@itemx MULT_EXPR
1419
These nodes represent various binary arithmetic operations.
1420
Respectively, these operations are addition, subtraction (of the second
1421
operand from the first) and multiplication.  Their operands may have
1422
either integral or floating type, but there will never be case in which
1423
one operand is of floating type and the other is of integral type.
1424
 
1425
The behavior of these operations on signed arithmetic overflow is
1426
controlled by the @code{flag_wrapv} and @code{flag_trapv} variables.
1427
 
1428
@item RDIV_EXPR
1429
This node represents a floating point division operation.
1430
 
1431
@item TRUNC_DIV_EXPR
1432
@itemx FLOOR_DIV_EXPR
1433
@itemx CEIL_DIV_EXPR
1434
@itemx ROUND_DIV_EXPR
1435
These nodes represent integer division operations that return an integer
1436
result.  @code{TRUNC_DIV_EXPR} rounds towards zero, @code{FLOOR_DIV_EXPR}
1437
rounds towards negative infinity, @code{CEIL_DIV_EXPR} rounds towards
1438
positive infinity and @code{ROUND_DIV_EXPR} rounds to the closest integer.
1439
Integer division in C and C++ is truncating, i.e.@: @code{TRUNC_DIV_EXPR}.
1440
 
1441
The behavior of these operations on signed arithmetic overflow, when
1442
dividing the minimum signed integer by minus one, is controlled by the
1443
@code{flag_wrapv} and @code{flag_trapv} variables.
1444
 
1445
@item TRUNC_MOD_EXPR
1446
@itemx FLOOR_MOD_EXPR
1447
@itemx CEIL_MOD_EXPR
1448
@itemx ROUND_MOD_EXPR
1449
These nodes represent the integer remainder or modulus operation.
1450
The integer modulus of two operands @code{a} and @code{b} is
1451
defined as @code{a - (a/b)*b} where the division calculated using
1452
the corresponding division operator.  Hence for @code{TRUNC_MOD_EXPR}
1453
this definition assumes division using truncation towards zero, i.e.@:
1454
@code{TRUNC_DIV_EXPR}.  Integer remainder in C and C++ uses truncating
1455
division, i.e.@: @code{TRUNC_MOD_EXPR}.
1456
 
1457
@item EXACT_DIV_EXPR
1458
The @code{EXACT_DIV_EXPR} code is used to represent integer divisions where
1459
the numerator is known to be an exact multiple of the denominator.  This
1460
allows the backend to choose between the faster of @code{TRUNC_DIV_EXPR},
1461
@code{CEIL_DIV_EXPR} and @code{FLOOR_DIV_EXPR} for the current target.
1462
 
1463
@item LT_EXPR
1464
@itemx LE_EXPR
1465
@itemx GT_EXPR
1466
@itemx GE_EXPR
1467
@itemx EQ_EXPR
1468
@itemx NE_EXPR
1469
These nodes represent the less than, less than or equal to, greater
1470
than, greater than or equal to, equal, and not equal comparison
1471
operators.  The first and second operand with either be both of integral
1472
type or both of floating type.  The result type of these expressions
1473
will always be of integral or boolean type.  These operations return
1474
the result type's zero value for false, and the result type's one value
1475
for true.
1476
 
1477
For floating point comparisons, if we honor IEEE NaNs and either operand
1478
is NaN, then @code{NE_EXPR} always returns true and the remaining operators
1479
always return false.  On some targets, comparisons against an IEEE NaN,
1480
other than equality and inequality, may generate a floating point exception.
1481
 
1482
@item ORDERED_EXPR
1483
@itemx UNORDERED_EXPR
1484
These nodes represent non-trapping ordered and unordered comparison
1485
operators.  These operations take two floating point operands and
1486
determine whether they are ordered or unordered relative to each other.
1487
If either operand is an IEEE NaN, their comparison is defined to be
1488
unordered, otherwise the comparison is defined to be ordered.  The
1489
result type of these expressions will always be of integral or boolean
1490
type.  These operations return the result type's zero value for false,
1491
and the result type's one value for true.
1492
 
1493
@item UNLT_EXPR
1494
@itemx UNLE_EXPR
1495
@itemx UNGT_EXPR
1496
@itemx UNGE_EXPR
1497
@itemx UNEQ_EXPR
1498
@itemx LTGT_EXPR
1499
These nodes represent the unordered comparison operators.
1500
These operations take two floating point operands and determine whether
1501
the operands are unordered or are less than, less than or equal to,
1502
greater than, greater than or equal to, or equal respectively.  For
1503
example, @code{UNLT_EXPR} returns true if either operand is an IEEE
1504
NaN or the first operand is less than the second.  With the possible
1505
exception of @code{LTGT_EXPR}, all of these operations are guaranteed
1506
not to generate a floating point exception.  The result
1507
type of these expressions will always be of integral or boolean type.
1508
These operations return the result type's zero value for false,
1509
and the result type's one value for true.
1510
 
1511
@item MODIFY_EXPR
1512
These nodes represent assignment.  The left-hand side is the first
1513
operand; the right-hand side is the second operand.  The left-hand side
1514
will be a @code{VAR_DECL}, @code{INDIRECT_REF}, @code{COMPONENT_REF}, or
1515
other lvalue.
1516
 
1517
These nodes are used to represent not only assignment with @samp{=} but
1518
also compound assignments (like @samp{+=}), by reduction to @samp{=}
1519
assignment.  In other words, the representation for @samp{i += 3} looks
1520
just like that for @samp{i = i + 3}.
1521
 
1522
@item INIT_EXPR
1523
These nodes are just like @code{MODIFY_EXPR}, but are used only when a
1524
variable is initialized, rather than assigned to subsequently.  This
1525
means that we can assume that the target of the initialization is not
1526
used in computing its own value; any reference to the lhs in computing
1527
the rhs is undefined.
1528
 
1529
@item COMPOUND_EXPR
1530
These nodes represent comma-expressions.  The first operand is an
1531
expression whose value is computed and thrown away prior to the
1532
evaluation of the second operand.  The value of the entire expression is
1533
the value of the second operand.
1534
 
1535
@item COND_EXPR
1536
These nodes represent @code{?:} expressions.  The first operand
1537
is of boolean or integral type.  If it evaluates to a nonzero value,
1538
the second operand should be evaluated, and returned as the value of the
1539
expression.  Otherwise, the third operand is evaluated, and returned as
1540
the value of the expression.
1541
 
1542
The second operand must have the same type as the entire expression,
1543
unless it unconditionally throws an exception or calls a noreturn
1544
function, in which case it should have void type.  The same constraints
1545
apply to the third operand.  This allows array bounds checks to be
1546
represented conveniently as @code{(i >= 0 && i < 10) ? i : abort()}.
1547
 
1548
As a GNU extension, the C language front-ends allow the second
1549
operand of the @code{?:} operator may be omitted in the source.
1550
For example, @code{x ? : 3} is equivalent to @code{x ? x : 3},
1551
assuming that @code{x} is an expression without side-effects.
1552
In the tree representation, however, the second operand is always
1553
present, possibly protected by @code{SAVE_EXPR} if the first
1554
argument does cause side-effects.
1555
 
1556
@item CALL_EXPR
1557
These nodes are used to represent calls to functions, including
1558
non-static member functions.  @code{CALL_EXPR}s are implemented as
1559
expression nodes with a variable number of operands.  Rather than using
1560
@code{TREE_OPERAND} to extract them, it is preferable to use the
1561
specialized accessor macros and functions that operate specifically on
1562
@code{CALL_EXPR} nodes.
1563
 
1564
@code{CALL_EXPR_FN} returns a pointer to the
1565
function to call; it is always an expression whose type is a
1566
@code{POINTER_TYPE}.
1567
 
1568
The number of arguments to the call is returned by @code{call_expr_nargs},
1569
while the arguments themselves can be accessed with the @code{CALL_EXPR_ARG}
1570
macro.  The arguments are zero-indexed and numbered left-to-right.
1571
You can iterate over the arguments using @code{FOR_EACH_CALL_EXPR_ARG}, as in:
1572
 
1573
@smallexample
1574
tree call, arg;
1575
call_expr_arg_iterator iter;
1576
FOR_EACH_CALL_EXPR_ARG (arg, iter, call)
1577
  /* arg is bound to successive arguments of call.  */
1578
  @dots{};
1579
@end smallexample
1580
 
1581
For non-static
1582
member functions, there will be an operand corresponding to the
1583
@code{this} pointer.  There will always be expressions corresponding to
1584
all of the arguments, even if the function is declared with default
1585
arguments and some arguments are not explicitly provided at the call
1586
sites.
1587
 
1588
@code{CALL_EXPR}s also have a @code{CALL_EXPR_STATIC_CHAIN} operand that
1589
is used to implement nested functions.  This operand is otherwise null.
1590
 
1591
@item CLEANUP_POINT_EXPR
1592
These nodes represent full-expressions.  The single operand is an
1593
expression to evaluate.  Any destructor calls engendered by the creation
1594
of temporaries during the evaluation of that expression should be
1595
performed immediately after the expression is evaluated.
1596
 
1597
@item CONSTRUCTOR
1598
These nodes represent the brace-enclosed initializers for a structure or
1599
array.  The first operand is reserved for use by the back end.  The
1600
second operand is a @code{TREE_LIST}.  If the @code{TREE_TYPE} of the
1601
@code{CONSTRUCTOR} is a @code{RECORD_TYPE} or @code{UNION_TYPE}, then
1602
the @code{TREE_PURPOSE} of each node in the @code{TREE_LIST} will be a
1603
@code{FIELD_DECL} and the @code{TREE_VALUE} of each node will be the
1604
expression used to initialize that field.
1605
 
1606
If the @code{TREE_TYPE} of the @code{CONSTRUCTOR} is an
1607
@code{ARRAY_TYPE}, then the @code{TREE_PURPOSE} of each element in the
1608
@code{TREE_LIST} will be an @code{INTEGER_CST} or a @code{RANGE_EXPR} of
1609
two @code{INTEGER_CST}s.  A single @code{INTEGER_CST} indicates which
1610
element of the array (indexed from zero) is being assigned to.  A
1611
@code{RANGE_EXPR} indicates an inclusive range of elements to
1612
initialize.  In both cases the @code{TREE_VALUE} is the corresponding
1613
initializer.  It is re-evaluated for each element of a
1614
@code{RANGE_EXPR}.  If the @code{TREE_PURPOSE} is @code{NULL_TREE}, then
1615
the initializer is for the next available array element.
1616
 
1617
In the front end, you should not depend on the fields appearing in any
1618
particular order.  However, in the middle end, fields must appear in
1619
declaration order.  You should not assume that all fields will be
1620
represented.  Unrepresented fields will be set to zero.
1621
 
1622
@item COMPOUND_LITERAL_EXPR
1623
@findex COMPOUND_LITERAL_EXPR_DECL_EXPR
1624
@findex COMPOUND_LITERAL_EXPR_DECL
1625
These nodes represent ISO C99 compound literals.  The
1626
@code{COMPOUND_LITERAL_EXPR_DECL_EXPR} is a @code{DECL_EXPR}
1627
containing an anonymous @code{VAR_DECL} for
1628
the unnamed object represented by the compound literal; the
1629
@code{DECL_INITIAL} of that @code{VAR_DECL} is a @code{CONSTRUCTOR}
1630
representing the brace-enclosed list of initializers in the compound
1631
literal.  That anonymous @code{VAR_DECL} can also be accessed directly
1632
by the @code{COMPOUND_LITERAL_EXPR_DECL} macro.
1633
 
1634
@item SAVE_EXPR
1635
 
1636
A @code{SAVE_EXPR} represents an expression (possibly involving
1637
side-effects) that is used more than once.  The side-effects should
1638
occur only the first time the expression is evaluated.  Subsequent uses
1639
should just reuse the computed value.  The first operand to the
1640
@code{SAVE_EXPR} is the expression to evaluate.  The side-effects should
1641
be executed where the @code{SAVE_EXPR} is first encountered in a
1642
depth-first preorder traversal of the expression tree.
1643
 
1644
@item TARGET_EXPR
1645
A @code{TARGET_EXPR} represents a temporary object.  The first operand
1646
is a @code{VAR_DECL} for the temporary variable.  The second operand is
1647
the initializer for the temporary.  The initializer is evaluated and,
1648
if non-void, copied (bitwise) into the temporary.  If the initializer
1649
is void, that means that it will perform the initialization itself.
1650
 
1651
Often, a @code{TARGET_EXPR} occurs on the right-hand side of an
1652
assignment, or as the second operand to a comma-expression which is
1653
itself the right-hand side of an assignment, etc.  In this case, we say
1654
that the @code{TARGET_EXPR} is ``normal''; otherwise, we say it is
1655
``orphaned''.  For a normal @code{TARGET_EXPR} the temporary variable
1656
should be treated as an alias for the left-hand side of the assignment,
1657
rather than as a new temporary variable.
1658
 
1659
The third operand to the @code{TARGET_EXPR}, if present, is a
1660
cleanup-expression (i.e., destructor call) for the temporary.  If this
1661
expression is orphaned, then this expression must be executed when the
1662
statement containing this expression is complete.  These cleanups must
1663
always be executed in the order opposite to that in which they were
1664
encountered.  Note that if a temporary is created on one branch of a
1665
conditional operator (i.e., in the second or third operand to a
1666
@code{COND_EXPR}), the cleanup must be run only if that branch is
1667
actually executed.
1668
 
1669
@item VA_ARG_EXPR
1670
This node is used to implement support for the C/C++ variable argument-list
1671
mechanism.  It represents expressions like @code{va_arg (ap, type)}.
1672
Its @code{TREE_TYPE} yields the tree representation for @code{type} and
1673
its sole argument yields the representation for @code{ap}.
1674
 
1675
@end table
1676
 
1677
@node Vectors
1678
@subsection Vectors
1679
@tindex VEC_LSHIFT_EXPR
1680
@tindex VEC_RSHIFT_EXPR
1681
@tindex VEC_WIDEN_MULT_HI_EXPR
1682
@tindex VEC_WIDEN_MULT_LO_EXPR
1683
@tindex VEC_UNPACK_HI_EXPR
1684
@tindex VEC_UNPACK_LO_EXPR
1685
@tindex VEC_UNPACK_FLOAT_HI_EXPR
1686
@tindex VEC_UNPACK_FLOAT_LO_EXPR
1687
@tindex VEC_PACK_TRUNC_EXPR
1688
@tindex VEC_PACK_SAT_EXPR
1689
@tindex VEC_PACK_FIX_TRUNC_EXPR
1690
@tindex VEC_EXTRACT_EVEN_EXPR
1691
@tindex VEC_EXTRACT_ODD_EXPR
1692
@tindex VEC_INTERLEAVE_HIGH_EXPR
1693
@tindex VEC_INTERLEAVE_LOW_EXPR
1694
 
1695
@table @code
1696
@item VEC_LSHIFT_EXPR
1697
@itemx VEC_RSHIFT_EXPR
1698
These nodes represent whole vector left and right shifts, respectively.
1699
The first operand is the vector to shift; it will always be of vector type.
1700
The second operand is an expression for the number of bits by which to
1701
shift.  Note that the result is undefined if the second operand is larger
1702
than or equal to the first operand's type size.
1703
 
1704
@item VEC_WIDEN_MULT_HI_EXPR
1705
@itemx VEC_WIDEN_MULT_LO_EXPR
1706
These nodes represent widening vector multiplication of the high and low
1707
parts of the two input vectors, respectively.  Their operands are vectors
1708
that contain the same number of elements (@code{N}) of the same integral type.
1709
The result is a vector that contains half as many elements, of an integral type
1710
whose size is twice as wide.  In the case of @code{VEC_WIDEN_MULT_HI_EXPR} the
1711
high @code{N/2} elements of the two vector are multiplied to produce the
1712
vector of @code{N/2} products. In the case of @code{VEC_WIDEN_MULT_LO_EXPR} the
1713
low @code{N/2} elements of the two vector are multiplied to produce the
1714
vector of @code{N/2} products.
1715
 
1716
@item VEC_UNPACK_HI_EXPR
1717
@itemx VEC_UNPACK_LO_EXPR
1718
These nodes represent unpacking of the high and low parts of the input vector,
1719
respectively.  The single operand is a vector that contains @code{N} elements
1720
of the same integral or floating point type.  The result is a vector
1721
that contains half as many elements, of an integral or floating point type
1722
whose size is twice as wide.  In the case of @code{VEC_UNPACK_HI_EXPR} the
1723
high @code{N/2} elements of the vector are extracted and widened (promoted).
1724
In the case of @code{VEC_UNPACK_LO_EXPR} the low @code{N/2} elements of the
1725
vector are extracted and widened (promoted).
1726
 
1727
@item VEC_UNPACK_FLOAT_HI_EXPR
1728
@itemx VEC_UNPACK_FLOAT_LO_EXPR
1729
These nodes represent unpacking of the high and low parts of the input vector,
1730
where the values are converted from fixed point to floating point.  The
1731
single operand is a vector that contains @code{N} elements of the same
1732
integral type.  The result is a vector that contains half as many elements
1733
of a floating point type whose size is twice as wide.  In the case of
1734
@code{VEC_UNPACK_HI_EXPR} the high @code{N/2} elements of the vector are
1735
extracted, converted and widened.  In the case of @code{VEC_UNPACK_LO_EXPR}
1736
the low @code{N/2} elements of the vector are extracted, converted and widened.
1737
 
1738
@item VEC_PACK_TRUNC_EXPR
1739
This node represents packing of truncated elements of the two input vectors
1740
into the output vector.  Input operands are vectors that contain the same
1741
number of elements of the same integral or floating point type.  The result
1742
is a vector that contains twice as many elements of an integral or floating
1743
point type whose size is half as wide. The elements of the two vectors are
1744
demoted and merged (concatenated) to form the output vector.
1745
 
1746
@item VEC_PACK_SAT_EXPR
1747
This node represents packing of elements of the two input vectors into the
1748
output vector using saturation.  Input operands are vectors that contain
1749
the same number of elements of the same integral type.  The result is a
1750
vector that contains twice as many elements of an integral type whose size
1751
is half as wide.  The elements of the two vectors are demoted and merged
1752
(concatenated) to form the output vector.
1753
 
1754
@item VEC_PACK_FIX_TRUNC_EXPR
1755
This node represents packing of elements of the two input vectors into the
1756
output vector, where the values are converted from floating point
1757
to fixed point.  Input operands are vectors that contain the same number
1758
of elements of a floating point type.  The result is a vector that contains
1759
twice as many elements of an integral type whose size is half as wide.  The
1760
elements of the two vectors are merged (concatenated) to form the output
1761
vector.
1762
 
1763
@item VEC_EXTRACT_EVEN_EXPR
1764
@itemx VEC_EXTRACT_ODD_EXPR
1765
These nodes represent extracting of the even/odd elements of the two input
1766
vectors, respectively. Their operands and result are vectors that contain the
1767
same number of elements of the same type.
1768
 
1769
@item VEC_INTERLEAVE_HIGH_EXPR
1770
@itemx VEC_INTERLEAVE_LOW_EXPR
1771
These nodes represent merging and interleaving of the high/low elements of the
1772
two input vectors, respectively. The operands and the result are vectors that
1773
contain the same number of elements (@code{N}) of the same type.
1774
In the case of @code{VEC_INTERLEAVE_HIGH_EXPR}, the high @code{N/2} elements of
1775
the first input vector are interleaved with the high @code{N/2} elements of the
1776
second input vector. In the case of @code{VEC_INTERLEAVE_LOW_EXPR}, the low
1777
@code{N/2} elements of the first input vector are interleaved with the low
1778
@code{N/2} elements of the second input vector.
1779
 
1780
@end table
1781
 
1782
 
1783
@c ---------------------------------------------------------------------
1784
@c Statements
1785
@c ---------------------------------------------------------------------
1786
 
1787
@node Statements
1788
@section Statements
1789
@cindex Statements
1790
 
1791
Most statements in GIMPLE are assignment statements, represented by
1792
@code{GIMPLE_ASSIGN}.  No other C expressions can appear at statement level;
1793
a reference to a volatile object is converted into a
1794
@code{GIMPLE_ASSIGN}.
1795
 
1796
There are also several varieties of complex statements.
1797
 
1798
@menu
1799
* Basic Statements::
1800
* Blocks::
1801
* Statement Sequences::
1802
* Empty Statements::
1803
* Jumps::
1804
* Cleanups::
1805
* OpenMP::
1806
@end menu
1807
 
1808
@node Basic Statements
1809
@subsection Basic Statements
1810
@cindex Basic Statements
1811
 
1812
@table @code
1813
@item ASM_EXPR
1814
 
1815
Used to represent an inline assembly statement.  For an inline assembly
1816
statement like:
1817
@smallexample
1818
asm ("mov x, y");
1819
@end smallexample
1820
The @code{ASM_STRING} macro will return a @code{STRING_CST} node for
1821
@code{"mov x, y"}.  If the original statement made use of the
1822
extended-assembly syntax, then @code{ASM_OUTPUTS},
1823
@code{ASM_INPUTS}, and @code{ASM_CLOBBERS} will be the outputs, inputs,
1824
and clobbers for the statement, represented as @code{STRING_CST} nodes.
1825
The extended-assembly syntax looks like:
1826
@smallexample
1827
asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
1828
@end smallexample
1829
The first string is the @code{ASM_STRING}, containing the instruction
1830
template.  The next two strings are the output and inputs, respectively;
1831
this statement has no clobbers.  As this example indicates, ``plain''
1832
assembly statements are merely a special case of extended assembly
1833
statements; they have no cv-qualifiers, outputs, inputs, or clobbers.
1834
All of the strings will be @code{NUL}-terminated, and will contain no
1835
embedded @code{NUL}-characters.
1836
 
1837
If the assembly statement is declared @code{volatile}, or if the
1838
statement was not an extended assembly statement, and is therefore
1839
implicitly volatile, then the predicate @code{ASM_VOLATILE_P} will hold
1840
of the @code{ASM_EXPR}.
1841
 
1842
@item DECL_EXPR
1843
 
1844
Used to represent a local declaration.  The @code{DECL_EXPR_DECL} macro
1845
can be used to obtain the entity declared.  This declaration may be a
1846
@code{LABEL_DECL}, indicating that the label declared is a local label.
1847
(As an extension, GCC allows the declaration of labels with scope.)  In
1848
C, this declaration may be a @code{FUNCTION_DECL}, indicating the
1849
use of the GCC nested function extension.  For more information,
1850
@pxref{Functions}.
1851
 
1852
@item LABEL_EXPR
1853
 
1854
Used to represent a label.  The @code{LABEL_DECL} declared by this
1855
statement can be obtained with the @code{LABEL_EXPR_LABEL} macro.  The
1856
@code{IDENTIFIER_NODE} giving the name of the label can be obtained from
1857
the @code{LABEL_DECL} with @code{DECL_NAME}.
1858
 
1859
@item GOTO_EXPR
1860
 
1861
Used to represent a @code{goto} statement.  The @code{GOTO_DESTINATION} will
1862
usually be a @code{LABEL_DECL}.  However, if the ``computed goto'' extension
1863
has been used, the @code{GOTO_DESTINATION} will be an arbitrary expression
1864
indicating the destination.  This expression will always have pointer type.
1865
 
1866
@item RETURN_EXPR
1867
 
1868
Used to represent a @code{return} statement.  Operand 0 represents the
1869
value to return.  It should either be the @code{RESULT_DECL} for the
1870
containing function, or a @code{MODIFY_EXPR} or @code{INIT_EXPR}
1871
setting the function's @code{RESULT_DECL}.  It will be
1872
@code{NULL_TREE} if the statement was just
1873
@smallexample
1874
return;
1875
@end smallexample
1876
 
1877
@item LOOP_EXPR
1878
These nodes represent ``infinite'' loops.  The @code{LOOP_EXPR_BODY}
1879
represents the body of the loop.  It should be executed forever, unless
1880
an @code{EXIT_EXPR} is encountered.
1881
 
1882
@item EXIT_EXPR
1883
These nodes represent conditional exits from the nearest enclosing
1884
@code{LOOP_EXPR}.  The single operand is the condition; if it is
1885
nonzero, then the loop should be exited.  An @code{EXIT_EXPR} will only
1886
appear within a @code{LOOP_EXPR}.
1887
 
1888
@item SWITCH_STMT
1889
 
1890
Used to represent a @code{switch} statement.  The @code{SWITCH_STMT_COND}
1891
is the expression on which the switch is occurring.  See the documentation
1892
for an @code{IF_STMT} for more information on the representation used
1893
for the condition.  The @code{SWITCH_STMT_BODY} is the body of the switch
1894
statement.   The @code{SWITCH_STMT_TYPE} is the original type of switch
1895
expression as given in the source, before any compiler conversions.
1896
 
1897
@item CASE_LABEL_EXPR
1898
 
1899
Use to represent a @code{case} label, range of @code{case} labels, or a
1900
@code{default} label.  If @code{CASE_LOW} is @code{NULL_TREE}, then this is a
1901
@code{default} label.  Otherwise, if @code{CASE_HIGH} is @code{NULL_TREE}, then
1902
this is an ordinary @code{case} label.  In this case, @code{CASE_LOW} is
1903
an expression giving the value of the label.  Both @code{CASE_LOW} and
1904
@code{CASE_HIGH} are @code{INTEGER_CST} nodes.  These values will have
1905
the same type as the condition expression in the switch statement.
1906
 
1907
Otherwise, if both @code{CASE_LOW} and @code{CASE_HIGH} are defined, the
1908
statement is a range of case labels.  Such statements originate with the
1909
extension that allows users to write things of the form:
1910
@smallexample
1911
case 2 ... 5:
1912
@end smallexample
1913
The first value will be @code{CASE_LOW}, while the second will be
1914
@code{CASE_HIGH}.
1915
 
1916
@end table
1917
 
1918
 
1919
@node Blocks
1920
@subsection Blocks
1921
@cindex Blocks
1922
 
1923
Block scopes and the variables they declare in GENERIC are
1924
expressed using the @code{BIND_EXPR} code, which in previous
1925
versions of GCC was primarily used for the C statement-expression
1926
extension.
1927
 
1928
Variables in a block are collected into @code{BIND_EXPR_VARS} in
1929
declaration order through their @code{TREE_CHAIN} field.  Any runtime
1930
initialization is moved out of @code{DECL_INITIAL} and into a
1931
statement in the controlled block.  When gimplifying from C or C++,
1932
this initialization replaces the @code{DECL_STMT}.  These variables
1933
will never require cleanups.  The scope of these variables is just the
1934
body
1935
 
1936
Variable-length arrays (VLAs) complicate this process, as their
1937
size often refers to variables initialized earlier in the block.
1938
To handle this, we currently split the block at that point, and
1939
move the VLA into a new, inner @code{BIND_EXPR}.  This strategy
1940
may change in the future.
1941
 
1942
A C++ program will usually contain more @code{BIND_EXPR}s than
1943
there are syntactic blocks in the source code, since several C++
1944
constructs have implicit scopes associated with them.  On the
1945
other hand, although the C++ front end uses pseudo-scopes to
1946
handle cleanups for objects with destructors, these don't
1947
translate into the GIMPLE form; multiple declarations at the same
1948
level use the same @code{BIND_EXPR}.
1949
 
1950
@node Statement Sequences
1951
@subsection Statement Sequences
1952
@cindex Statement Sequences
1953
 
1954
Multiple statements at the same nesting level are collected into
1955
a @code{STATEMENT_LIST}.  Statement lists are modified and
1956
traversed using the interface in @samp{tree-iterator.h}.
1957
 
1958
@node Empty Statements
1959
@subsection Empty Statements
1960
@cindex Empty Statements
1961
 
1962
Whenever possible, statements with no effect are discarded.  But
1963
if they are nested within another construct which cannot be
1964
discarded for some reason, they are instead replaced with an
1965
empty statement, generated by @code{build_empty_stmt}.
1966
Initially, all empty statements were shared, after the pattern of
1967
the Java front end, but this caused a lot of trouble in practice.
1968
 
1969
An empty statement is represented as @code{(void)0}.
1970
 
1971
@node Jumps
1972
@subsection Jumps
1973
@cindex Jumps
1974
 
1975
Other jumps are expressed by either @code{GOTO_EXPR} or
1976
@code{RETURN_EXPR}.
1977
 
1978
The operand of a @code{GOTO_EXPR} must be either a label or a
1979
variable containing the address to jump to.
1980
 
1981
The operand of a @code{RETURN_EXPR} is either @code{NULL_TREE},
1982
@code{RESULT_DECL}, or a @code{MODIFY_EXPR} which sets the return
1983
value.  It would be nice to move the @code{MODIFY_EXPR} into a
1984
separate statement, but the special return semantics in
1985
@code{expand_return} make that difficult.  It may still happen in
1986
the future, perhaps by moving most of that logic into
1987
@code{expand_assignment}.
1988
 
1989
@node Cleanups
1990
@subsection Cleanups
1991
@cindex Cleanups
1992
 
1993
Destructors for local C++ objects and similar dynamic cleanups are
1994
represented in GIMPLE by a @code{TRY_FINALLY_EXPR}.
1995
@code{TRY_FINALLY_EXPR} has two operands, both of which are a sequence
1996
of statements to execute.  The first sequence is executed.  When it
1997
completes the second sequence is executed.
1998
 
1999
The first sequence may complete in the following ways:
2000
 
2001
@enumerate
2002
 
2003
@item Execute the last statement in the sequence and fall off the
2004
end.
2005
 
2006
@item Execute a goto statement (@code{GOTO_EXPR}) to an ordinary
2007
label outside the sequence.
2008
 
2009
@item Execute a return statement (@code{RETURN_EXPR}).
2010
 
2011
@item Throw an exception.  This is currently not explicitly represented in
2012
GIMPLE.
2013
 
2014
@end enumerate
2015
 
2016
The second sequence is not executed if the first sequence completes by
2017
calling @code{setjmp} or @code{exit} or any other function that does
2018
not return.  The second sequence is also not executed if the first
2019
sequence completes via a non-local goto or a computed goto (in general
2020
the compiler does not know whether such a goto statement exits the
2021
first sequence or not, so we assume that it doesn't).
2022
 
2023
After the second sequence is executed, if it completes normally by
2024
falling off the end, execution continues wherever the first sequence
2025
would have continued, by falling off the end, or doing a goto, etc.
2026
 
2027
@code{TRY_FINALLY_EXPR} complicates the flow graph, since the cleanup
2028
needs to appear on every edge out of the controlled block; this
2029
reduces the freedom to move code across these edges.  Therefore, the
2030
EH lowering pass which runs before most of the optimization passes
2031
eliminates these expressions by explicitly adding the cleanup to each
2032
edge.  Rethrowing the exception is represented using @code{RESX_EXPR}.
2033
 
2034
@node OpenMP
2035
@subsection OpenMP
2036
@tindex OMP_PARALLEL
2037
@tindex OMP_FOR
2038
@tindex OMP_SECTIONS
2039
@tindex OMP_SINGLE
2040
@tindex OMP_SECTION
2041
@tindex OMP_MASTER
2042
@tindex OMP_ORDERED
2043
@tindex OMP_CRITICAL
2044
@tindex OMP_RETURN
2045
@tindex OMP_CONTINUE
2046
@tindex OMP_ATOMIC
2047
@tindex OMP_CLAUSE
2048
 
2049
All the statements starting with @code{OMP_} represent directives and
2050
clauses used by the OpenMP API @w{@uref{http://www.openmp.org/}}.
2051
 
2052
@table @code
2053
@item OMP_PARALLEL
2054
 
2055
Represents @code{#pragma omp parallel [clause1 @dots{} clauseN]}. It
2056
has four operands:
2057
 
2058
Operand @code{OMP_PARALLEL_BODY} is valid while in GENERIC and
2059
High GIMPLE forms.  It contains the body of code to be executed
2060
by all the threads.  During GIMPLE lowering, this operand becomes
2061
@code{NULL} and the body is emitted linearly after
2062
@code{OMP_PARALLEL}.
2063
 
2064
Operand @code{OMP_PARALLEL_CLAUSES} is the list of clauses
2065
associated with the directive.
2066
 
2067
Operand @code{OMP_PARALLEL_FN} is created by
2068
@code{pass_lower_omp}, it contains the @code{FUNCTION_DECL}
2069
for the function that will contain the body of the parallel
2070
region.
2071
 
2072
Operand @code{OMP_PARALLEL_DATA_ARG} is also created by
2073
@code{pass_lower_omp}. If there are shared variables to be
2074
communicated to the children threads, this operand will contain
2075
the @code{VAR_DECL} that contains all the shared values and
2076
variables.
2077
 
2078
@item OMP_FOR
2079
 
2080
Represents @code{#pragma omp for [clause1 @dots{} clauseN]}.  It
2081
has 5 operands:
2082
 
2083
Operand @code{OMP_FOR_BODY} contains the loop body.
2084
 
2085
Operand @code{OMP_FOR_CLAUSES} is the list of clauses
2086
associated with the directive.
2087
 
2088
Operand @code{OMP_FOR_INIT} is the loop initialization code of
2089
the form @code{VAR = N1}.
2090
 
2091
Operand @code{OMP_FOR_COND} is the loop conditional expression
2092
of the form @code{VAR @{<,>,<=,>=@} N2}.
2093
 
2094
Operand @code{OMP_FOR_INCR} is the loop index increment of the
2095
form @code{VAR @{+=,-=@} INCR}.
2096
 
2097
Operand @code{OMP_FOR_PRE_BODY} contains side-effect code from
2098
operands @code{OMP_FOR_INIT}, @code{OMP_FOR_COND} and
2099
@code{OMP_FOR_INC}.  These side-effects are part of the
2100
@code{OMP_FOR} block but must be evaluated before the start of
2101
loop body.
2102
 
2103
The loop index variable @code{VAR} must be a signed integer variable,
2104
which is implicitly private to each thread.  Bounds
2105
@code{N1} and @code{N2} and the increment expression
2106
@code{INCR} are required to be loop invariant integer
2107
expressions that are evaluated without any synchronization. The
2108
evaluation order, frequency of evaluation and side-effects are
2109
unspecified by the standard.
2110
 
2111
@item OMP_SECTIONS
2112
 
2113
Represents @code{#pragma omp sections [clause1 @dots{} clauseN]}.
2114
 
2115
Operand @code{OMP_SECTIONS_BODY} contains the sections body,
2116
which in turn contains a set of @code{OMP_SECTION} nodes for
2117
each of the concurrent sections delimited by @code{#pragma omp
2118
section}.
2119
 
2120
Operand @code{OMP_SECTIONS_CLAUSES} is the list of clauses
2121
associated with the directive.
2122
 
2123
@item OMP_SECTION
2124
 
2125
Section delimiter for @code{OMP_SECTIONS}.
2126
 
2127
@item OMP_SINGLE
2128
 
2129
Represents @code{#pragma omp single}.
2130
 
2131
Operand @code{OMP_SINGLE_BODY} contains the body of code to be
2132
executed by a single thread.
2133
 
2134
Operand @code{OMP_SINGLE_CLAUSES} is the list of clauses
2135
associated with the directive.
2136
 
2137
@item OMP_MASTER
2138
 
2139
Represents @code{#pragma omp master}.
2140
 
2141
Operand @code{OMP_MASTER_BODY} contains the body of code to be
2142
executed by the master thread.
2143
 
2144
@item OMP_ORDERED
2145
 
2146
Represents @code{#pragma omp ordered}.
2147
 
2148
Operand @code{OMP_ORDERED_BODY} contains the body of code to be
2149
executed in the sequential order dictated by the loop index
2150
variable.
2151
 
2152
@item OMP_CRITICAL
2153
 
2154
Represents @code{#pragma omp critical [name]}.
2155
 
2156
Operand @code{OMP_CRITICAL_BODY} is the critical section.
2157
 
2158
Operand @code{OMP_CRITICAL_NAME} is an optional identifier to
2159
label the critical section.
2160
 
2161
@item OMP_RETURN
2162
 
2163
This does not represent any OpenMP directive, it is an artificial
2164
marker to indicate the end of the body of an OpenMP@. It is used
2165
by the flow graph (@code{tree-cfg.c}) and OpenMP region
2166
building code (@code{omp-low.c}).
2167
 
2168
@item OMP_CONTINUE
2169
 
2170
Similarly, this instruction does not represent an OpenMP
2171
directive, it is used by @code{OMP_FOR} and
2172
@code{OMP_SECTIONS} to mark the place where the code needs to
2173
loop to the next iteration (in the case of @code{OMP_FOR}) or
2174
the next section (in the case of @code{OMP_SECTIONS}).
2175
 
2176
In some cases, @code{OMP_CONTINUE} is placed right before
2177
@code{OMP_RETURN}.  But if there are cleanups that need to
2178
occur right after the looping body, it will be emitted between
2179
@code{OMP_CONTINUE} and @code{OMP_RETURN}.
2180
 
2181
@item OMP_ATOMIC
2182
 
2183
Represents @code{#pragma omp atomic}.
2184
 
2185
Operand 0 is the address at which the atomic operation is to be
2186
performed.
2187
 
2188
Operand 1 is the expression to evaluate.  The gimplifier tries
2189
three alternative code generation strategies.  Whenever possible,
2190
an atomic update built-in is used.  If that fails, a
2191
compare-and-swap loop is attempted.  If that also fails, a
2192
regular critical section around the expression is used.
2193
 
2194
@item OMP_CLAUSE
2195
 
2196
Represents clauses associated with one of the @code{OMP_} directives.
2197
Clauses are represented by separate sub-codes defined in
2198
@file{tree.h}.  Clauses codes can be one of:
2199
@code{OMP_CLAUSE_PRIVATE}, @code{OMP_CLAUSE_SHARED},
2200
@code{OMP_CLAUSE_FIRSTPRIVATE},
2201
@code{OMP_CLAUSE_LASTPRIVATE}, @code{OMP_CLAUSE_COPYIN},
2202
@code{OMP_CLAUSE_COPYPRIVATE}, @code{OMP_CLAUSE_IF},
2203
@code{OMP_CLAUSE_NUM_THREADS}, @code{OMP_CLAUSE_SCHEDULE},
2204
@code{OMP_CLAUSE_NOWAIT}, @code{OMP_CLAUSE_ORDERED},
2205
@code{OMP_CLAUSE_DEFAULT}, and @code{OMP_CLAUSE_REDUCTION}.  Each code
2206
represents the corresponding OpenMP clause.
2207
 
2208
Clauses associated with the same directive are chained together
2209
via @code{OMP_CLAUSE_CHAIN}. Those clauses that accept a list
2210
of variables are restricted to exactly one, accessed with
2211
@code{OMP_CLAUSE_VAR}.  Therefore, multiple variables under the
2212
same clause @code{C} need to be represented as multiple @code{C} clauses
2213
chained together.  This facilitates adding new clauses during
2214
compilation.
2215
 
2216
@end table
2217
 
2218
@c ---------------------------------------------------------------------
2219
@c Functions
2220
@c ---------------------------------------------------------------------
2221
 
2222
@node Functions
2223
@section Functions
2224
@cindex function
2225
@tindex FUNCTION_DECL
2226
 
2227
A function is represented by a @code{FUNCTION_DECL} node.  It stores
2228
the basic pieces of the function such as body, parameters, and return
2229
type as well as information on the surrounding context, visibility,
2230
and linkage.
2231
 
2232
@menu
2233
* Function Basics::     Function names, body, and parameters.
2234
* Function Properties:: Context, linkage, etc.
2235
@end menu
2236
 
2237
@c ---------------------------------------------------------------------
2238
@c Function Basics
2239
@c ---------------------------------------------------------------------
2240
 
2241
@node Function Basics
2242
@subsection Function Basics
2243
@findex DECL_NAME
2244
@findex DECL_ASSEMBLER_NAME
2245
@findex TREE_PUBLIC
2246
@findex DECL_ARTIFICIAL
2247
@findex DECL_FUNCTION_SPECIFIC_TARGET
2248
@findex DECL_FUNCTION_SPECIFIC_OPTIMIZATION
2249
 
2250
A function has four core parts: the name, the parameters, the result,
2251
and the body.  The following macros and functions access these parts
2252
of a @code{FUNCTION_DECL} as well as other basic features:
2253
@ftable @code
2254
@item DECL_NAME
2255
This macro returns the unqualified name of the function, as an
2256
@code{IDENTIFIER_NODE}.  For an instantiation of a function template,
2257
the @code{DECL_NAME} is the unqualified name of the template, not
2258
something like @code{f<int>}.  The value of @code{DECL_NAME} is
2259
undefined when used on a constructor, destructor, overloaded operator,
2260
or type-conversion operator, or any function that is implicitly
2261
generated by the compiler.  See below for macros that can be used to
2262
distinguish these cases.
2263
 
2264
@item DECL_ASSEMBLER_NAME
2265
This macro returns the mangled name of the function, also an
2266
@code{IDENTIFIER_NODE}.  This name does not contain leading underscores
2267
on systems that prefix all identifiers with underscores.  The mangled
2268
name is computed in the same way on all platforms; if special processing
2269
is required to deal with the object file format used on a particular
2270
platform, it is the responsibility of the back end to perform those
2271
modifications.  (Of course, the back end should not modify
2272
@code{DECL_ASSEMBLER_NAME} itself.)
2273
 
2274
Using @code{DECL_ASSEMBLER_NAME} will cause additional memory to be
2275
allocated (for the mangled name of the entity) so it should be used
2276
only when emitting assembly code.  It should not be used within the
2277
optimizers to determine whether or not two declarations are the same,
2278
even though some of the existing optimizers do use it in that way.
2279
These uses will be removed over time.
2280
 
2281
@item DECL_ARGUMENTS
2282
This macro returns the @code{PARM_DECL} for the first argument to the
2283
function.  Subsequent @code{PARM_DECL} nodes can be obtained by
2284
following the @code{TREE_CHAIN} links.
2285
 
2286
@item DECL_RESULT
2287
This macro returns the @code{RESULT_DECL} for the function.
2288
 
2289
@item DECL_SAVED_TREE
2290
This macro returns the complete body of the function.
2291
 
2292
@item TREE_TYPE
2293
This macro returns the @code{FUNCTION_TYPE} or @code{METHOD_TYPE} for
2294
the function.
2295
 
2296
@item DECL_INITIAL
2297
A function that has a definition in the current translation unit will
2298
have a non-@code{NULL} @code{DECL_INITIAL}.  However, back ends should not make
2299
use of the particular value given by @code{DECL_INITIAL}.
2300
 
2301
It should contain a tree of @code{BLOCK} nodes that mirrors the scopes
2302
that variables are bound in the function.  Each block contains a list
2303
of decls declared in a basic block, a pointer to a chain of blocks at
2304
the next lower scope level, then a pointer to the next block at the
2305
same level and a backpointer to the parent @code{BLOCK} or
2306
@code{FUNCTION_DECL}.  So given a function as follows:
2307
 
2308
@smallexample
2309
void foo()
2310
@{
2311
  int a;
2312
  @{
2313
    int b;
2314
  @}
2315
  int c;
2316
@}
2317
@end smallexample
2318
 
2319
you would get the following:
2320
 
2321
@smallexample
2322
tree foo = FUNCTION_DECL;
2323
tree decl_a = VAR_DECL;
2324
tree decl_b = VAR_DECL;
2325
tree decl_c = VAR_DECL;
2326
tree block_a = BLOCK;
2327
tree block_b = BLOCK;
2328
tree block_c = BLOCK;
2329
BLOCK_VARS(block_a) = decl_a;
2330
BLOCK_SUBBLOCKS(block_a) = block_b;
2331
BLOCK_CHAIN(block_a) = block_c;
2332
BLOCK_SUPERCONTEXT(block_a) = foo;
2333
BLOCK_VARS(block_b) = decl_b;
2334
BLOCK_SUPERCONTEXT(block_b) = block_a;
2335
BLOCK_VARS(block_c) = decl_c;
2336
BLOCK_SUPERCONTEXT(block_c) = foo;
2337
DECL_INITIAL(foo) = block_a;
2338
@end smallexample
2339
 
2340
@end ftable
2341
 
2342
@c ---------------------------------------------------------------------
2343
@c Function Properties
2344
@c ---------------------------------------------------------------------
2345
 
2346
@node Function Properties
2347
@subsection Function Properties
2348
@cindex function properties
2349
@cindex statements
2350
 
2351
To determine the scope of a function, you can use the
2352
@code{DECL_CONTEXT} macro.  This macro will return the class
2353
(either a @code{RECORD_TYPE} or a @code{UNION_TYPE}) or namespace (a
2354
@code{NAMESPACE_DECL}) of which the function is a member.  For a virtual
2355
function, this macro returns the class in which the function was
2356
actually defined, not the base class in which the virtual declaration
2357
occurred.
2358
 
2359
In C, the @code{DECL_CONTEXT} for a function maybe another function.
2360
This representation indicates that the GNU nested function extension
2361
is in use.  For details on the semantics of nested functions, see the
2362
GCC Manual.  The nested function can refer to local variables in its
2363
containing function.  Such references are not explicitly marked in the
2364
tree structure; back ends must look at the @code{DECL_CONTEXT} for the
2365
referenced @code{VAR_DECL}.  If the @code{DECL_CONTEXT} for the
2366
referenced @code{VAR_DECL} is not the same as the function currently
2367
being processed, and neither @code{DECL_EXTERNAL} nor
2368
@code{TREE_STATIC} hold, then the reference is to a local variable in
2369
a containing function, and the back end must take appropriate action.
2370
 
2371
@ftable @code
2372
@item DECL_EXTERNAL
2373
This predicate holds if the function is undefined.
2374
 
2375
@item TREE_PUBLIC
2376
This predicate holds if the function has external linkage.
2377
 
2378
@item TREE_STATIC
2379
This predicate holds if the function has been defined.
2380
 
2381
@item TREE_THIS_VOLATILE
2382
This predicate holds if the function does not return normally.
2383
 
2384
@item TREE_READONLY
2385
This predicate holds if the function can only read its arguments.
2386
 
2387
@item DECL_PURE_P
2388
This predicate holds if the function can only read its arguments, but
2389
may also read global memory.
2390
 
2391
@item DECL_VIRTUAL_P
2392
This predicate holds if the function is virtual.
2393
 
2394
@item DECL_ARTIFICIAL
2395
This macro holds if the function was implicitly generated by the
2396
compiler, rather than explicitly declared.  In addition to implicitly
2397
generated class member functions, this macro holds for the special
2398
functions created to implement static initialization and destruction, to
2399
compute run-time type information, and so forth.
2400
 
2401
@item DECL_FUNCTION_SPECIFIC_TARGET
2402
This macro returns a tree node that holds the target options that are
2403
to be used to compile this particular function or @code{NULL_TREE} if
2404
the function is to be compiled with the target options specified on
2405
the command line.
2406
 
2407
@item DECL_FUNCTION_SPECIFIC_OPTIMIZATION
2408
This macro returns a tree node that holds the optimization options
2409
that are to be used to compile this particular function or
2410
@code{NULL_TREE} if the function is to be compiled with the
2411
optimization options specified on the command line.
2412
 
2413
@end ftable
2414
 
2415
@subsubsection Statements
2416
 
2417
There are tree nodes corresponding to all of the source-level
2418
statement constructs, used within the C and C++ frontends.  These are
2419
enumerated here, together with a list of the various macros that can
2420
be used to obtain information about them.  There are a few macros that
2421
can be used with all statements:
2422
 
2423
@c ---------------------------------------------------------------------
2424
@c Language-dependent trees
2425
@c ---------------------------------------------------------------------
2426
 
2427
@node Language-dependent trees
2428
@section Language-dependent trees
2429
@cindex language-dependent trees
2430
 
2431
Front ends may wish to keep some state associated with various GENERIC
2432
trees while parsing.  To support this, trees provide a set of flags
2433
that may be used by the front end.  They are accessed using
2434
@code{TREE_LANG_FLAG_n} where @samp{n} is currently 0 through 6.
2435
 
2436
If necessary, a front end can use some language-dependent tree
2437
codes in its GENERIC representation, so long as it provides a
2438
hook for converting them to GIMPLE and doesn't expect them to
2439
work with any (hypothetical) optimizers that run before the
2440
conversion to GIMPLE@. The intermediate representation used while
2441
parsing C and C++ looks very little like GENERIC, but the C and
2442
C++ gimplifier hooks are perfectly happy to take it as input and
2443
spit out GIMPLE@.
2444
 
2445
 
2446
 
2447
@node C and C++ Trees
2448
@section C and C++ Trees
2449
 
2450
This section documents the internal representation used by GCC to
2451
represent C and C++ source programs.  When presented with a C or C++
2452
source program, GCC parses the program, performs semantic analysis
2453
(including the generation of error messages), and then produces the
2454
internal representation described here.  This representation contains a
2455
complete representation for the entire translation unit provided as
2456
input to the front end.  This representation is then typically processed
2457
by a code-generator in order to produce machine code, but could also be
2458
used in the creation of source browsers, intelligent editors, automatic
2459
documentation generators, interpreters, and any other programs needing
2460
the ability to process C or C++ code.
2461
 
2462
This section explains the internal representation.  In particular, it
2463
documents the internal representation for C and C++ source
2464
constructs, and the macros, functions, and variables that can be used to
2465
access these constructs.  The C++ representation is largely a superset
2466
of the representation used in the C front end.  There is only one
2467
construct used in C that does not appear in the C++ front end and that
2468
is the GNU ``nested function'' extension.  Many of the macros documented
2469
here do not apply in C because the corresponding language constructs do
2470
not appear in C@.
2471
 
2472
The C and C++ front ends generate a mix of GENERIC trees and ones
2473
specific to C and C++.  These language-specific trees are higher-level
2474
constructs than the ones in GENERIC to make the parser's job easier.
2475
This section describes those trees that aren't part of GENERIC as well
2476
as aspects of GENERIC trees that are treated in a language-specific
2477
manner.
2478
 
2479
If you are developing a ``back end'', be it is a code-generator or some
2480
other tool, that uses this representation, you may occasionally find
2481
that you need to ask questions not easily answered by the functions and
2482
macros available here.  If that situation occurs, it is quite likely
2483
that GCC already supports the functionality you desire, but that the
2484
interface is simply not documented here.  In that case, you should ask
2485
the GCC maintainers (via mail to @email{gcc@@gcc.gnu.org}) about
2486
documenting the functionality you require.  Similarly, if you find
2487
yourself writing functions that do not deal directly with your back end,
2488
but instead might be useful to other people using the GCC front end, you
2489
should submit your patches for inclusion in GCC@.
2490
 
2491
@menu
2492
* Types for C++::               Fundamental and aggregate types.
2493
* Namespaces::                  Namespaces.
2494
* Classes::                     Classes.
2495
* Functions for C++::           Overloading and accessors for C++.
2496
* Statements for C++::          Statements specific to C and C++.
2497
* C++ Expressions::    From @code{typeid} to @code{throw}.
2498
@end menu
2499
 
2500
@node Types for C++
2501
@subsection Types for C++
2502
@tindex UNKNOWN_TYPE
2503
@tindex TYPENAME_TYPE
2504
@tindex TYPEOF_TYPE
2505
@findex CP_TYPE_QUALS
2506
@findex TYPE_UNQUALIFIED
2507
@findex TYPE_QUAL_CONST
2508
@findex TYPE_QUAL_VOLATILE
2509
@findex TYPE_QUAL_RESTRICT
2510
@findex TYPE_MAIN_VARIANT
2511
@cindex qualified type
2512
@findex TYPE_SIZE
2513
@findex TYPE_ALIGN
2514
@findex TYPE_PRECISION
2515
@findex TYPE_ARG_TYPES
2516
@findex TYPE_METHOD_BASETYPE
2517
@findex TYPE_PTRMEM_P
2518
@findex TYPE_OFFSET_BASETYPE
2519
@findex TREE_TYPE
2520
@findex TYPE_CONTEXT
2521
@findex TYPE_NAME
2522
@findex TYPENAME_TYPE_FULLNAME
2523
@findex TYPE_FIELDS
2524
@findex TYPE_PTROBV_P
2525
 
2526
In C++, an array type is not qualified; rather the type of the array
2527
elements is qualified.  This situation is reflected in the intermediate
2528
representation.  The macros described here will always examine the
2529
qualification of the underlying element type when applied to an array
2530
type.  (If the element type is itself an array, then the recursion
2531
continues until a non-array type is found, and the qualification of this
2532
type is examined.)  So, for example, @code{CP_TYPE_CONST_P} will hold of
2533
the type @code{const int ()[7]}, denoting an array of seven @code{int}s.
2534
 
2535
The following functions and macros deal with cv-qualification of types:
2536
@ftable @code
2537
@item CP_TYPE_QUALS
2538
This macro returns the set of type qualifiers applied to this type.
2539
This value is @code{TYPE_UNQUALIFIED} if no qualifiers have been
2540
applied.  The @code{TYPE_QUAL_CONST} bit is set if the type is
2541
@code{const}-qualified.  The @code{TYPE_QUAL_VOLATILE} bit is set if the
2542
type is @code{volatile}-qualified.  The @code{TYPE_QUAL_RESTRICT} bit is
2543
set if the type is @code{restrict}-qualified.
2544
 
2545
@item CP_TYPE_CONST_P
2546
This macro holds if the type is @code{const}-qualified.
2547
 
2548
@item CP_TYPE_VOLATILE_P
2549
This macro holds if the type is @code{volatile}-qualified.
2550
 
2551
@item CP_TYPE_RESTRICT_P
2552
This macro holds if the type is @code{restrict}-qualified.
2553
 
2554
@item CP_TYPE_CONST_NON_VOLATILE_P
2555
This predicate holds for a type that is @code{const}-qualified, but
2556
@emph{not} @code{volatile}-qualified; other cv-qualifiers are ignored as
2557
well: only the @code{const}-ness is tested.
2558
 
2559
@end ftable
2560
 
2561
A few other macros and functions are usable with all types:
2562
@ftable @code
2563
@item TYPE_SIZE
2564
The number of bits required to represent the type, represented as an
2565
@code{INTEGER_CST}.  For an incomplete type, @code{TYPE_SIZE} will be
2566
@code{NULL_TREE}.
2567
 
2568
@item TYPE_ALIGN
2569
The alignment of the type, in bits, represented as an @code{int}.
2570
 
2571
@item TYPE_NAME
2572
This macro returns a declaration (in the form of a @code{TYPE_DECL}) for
2573
the type.  (Note this macro does @emph{not} return an
2574
@code{IDENTIFIER_NODE}, as you might expect, given its name!)  You can
2575
look at the @code{DECL_NAME} of the @code{TYPE_DECL} to obtain the
2576
actual name of the type.  The @code{TYPE_NAME} will be @code{NULL_TREE}
2577
for a type that is not a built-in type, the result of a typedef, or a
2578
named class type.
2579
 
2580
@item CP_INTEGRAL_TYPE
2581
This predicate holds if the type is an integral type.  Notice that in
2582
C++, enumerations are @emph{not} integral types.
2583
 
2584
@item ARITHMETIC_TYPE_P
2585
This predicate holds if the type is an integral type (in the C++ sense)
2586
or a floating point type.
2587
 
2588
@item CLASS_TYPE_P
2589
This predicate holds for a class-type.
2590
 
2591
@item TYPE_BUILT_IN
2592
This predicate holds for a built-in type.
2593
 
2594
@item TYPE_PTRMEM_P
2595
This predicate holds if the type is a pointer to data member.
2596
 
2597
@item TYPE_PTR_P
2598
This predicate holds if the type is a pointer type, and the pointee is
2599
not a data member.
2600
 
2601
@item TYPE_PTRFN_P
2602
This predicate holds for a pointer to function type.
2603
 
2604
@item TYPE_PTROB_P
2605
This predicate holds for a pointer to object type.  Note however that it
2606
does not hold for the generic pointer to object type @code{void *}.  You
2607
may use @code{TYPE_PTROBV_P} to test for a pointer to object type as
2608
well as @code{void *}.
2609
 
2610
@end ftable
2611
 
2612
The table below describes types specific to C and C++ as well as
2613
language-dependent info about GENERIC types.
2614
 
2615
@table @code
2616
 
2617
@item POINTER_TYPE
2618
Used to represent pointer types, and pointer to data member types.  If
2619
@code{TREE_TYPE}
2620
is a pointer to data member type, then @code{TYPE_PTRMEM_P} will hold.
2621
For a pointer to data member type of the form @samp{T X::*},
2622
@code{TYPE_PTRMEM_CLASS_TYPE} will be the type @code{X}, while
2623
@code{TYPE_PTRMEM_POINTED_TO_TYPE} will be the type @code{T}.
2624
 
2625
@item RECORD_TYPE
2626
Used to represent @code{struct} and @code{class} types in C and C++.  If
2627
@code{TYPE_PTRMEMFUNC_P} holds, then this type is a pointer-to-member
2628
type.  In that case, the @code{TYPE_PTRMEMFUNC_FN_TYPE} is a
2629
@code{POINTER_TYPE} pointing to a @code{METHOD_TYPE}.  The
2630
@code{METHOD_TYPE} is the type of a function pointed to by the
2631
pointer-to-member function.  If @code{TYPE_PTRMEMFUNC_P} does not hold,
2632
this type is a class type.  For more information, see @pxref{Classes}.
2633
 
2634
@item UNKNOWN_TYPE
2635
This node is used to represent a type the knowledge of which is
2636
insufficient for a sound processing.
2637
 
2638
@item TYPENAME_TYPE
2639
Used to represent a construct of the form @code{typename T::A}.  The
2640
@code{TYPE_CONTEXT} is @code{T}; the @code{TYPE_NAME} is an
2641
@code{IDENTIFIER_NODE} for @code{A}.  If the type is specified via a
2642
template-id, then @code{TYPENAME_TYPE_FULLNAME} yields a
2643
@code{TEMPLATE_ID_EXPR}.  The @code{TREE_TYPE} is non-@code{NULL} if the
2644
node is implicitly generated in support for the implicit typename
2645
extension; in which case the @code{TREE_TYPE} is a type node for the
2646
base-class.
2647
 
2648
@item TYPEOF_TYPE
2649
Used to represent the @code{__typeof__} extension.  The
2650
@code{TYPE_FIELDS} is the expression the type of which is being
2651
represented.
2652
 
2653
@end table
2654
 
2655
 
2656
@c ---------------------------------------------------------------------
2657
@c Namespaces
2658
@c ---------------------------------------------------------------------
2659
 
2660
@node Namespaces
2661
@subsection Namespaces
2662
@cindex namespace, scope
2663
@tindex NAMESPACE_DECL
2664
 
2665
The root of the entire intermediate representation is the variable
2666
@code{global_namespace}.  This is the namespace specified with @code{::}
2667
in C++ source code.  All other namespaces, types, variables, functions,
2668
and so forth can be found starting with this namespace.
2669
 
2670
However, except for the fact that it is distinguished as the root of the
2671
representation, the global namespace is no different from any other
2672
namespace.  Thus, in what follows, we describe namespaces generally,
2673
rather than the global namespace in particular.
2674
 
2675
A namespace is represented by a @code{NAMESPACE_DECL} node.
2676
 
2677
The following macros and functions can be used on a @code{NAMESPACE_DECL}:
2678
 
2679
@ftable @code
2680
@item DECL_NAME
2681
This macro is used to obtain the @code{IDENTIFIER_NODE} corresponding to
2682
the unqualified name of the name of the namespace (@pxref{Identifiers}).
2683
The name of the global namespace is @samp{::}, even though in C++ the
2684
global namespace is unnamed.  However, you should use comparison with
2685
@code{global_namespace}, rather than @code{DECL_NAME} to determine
2686
whether or not a namespace is the global one.  An unnamed namespace
2687
will have a @code{DECL_NAME} equal to @code{anonymous_namespace_name}.
2688
Within a single translation unit, all unnamed namespaces will have the
2689
same name.
2690
 
2691
@item DECL_CONTEXT
2692
This macro returns the enclosing namespace.  The @code{DECL_CONTEXT} for
2693
the @code{global_namespace} is @code{NULL_TREE}.
2694
 
2695
@item DECL_NAMESPACE_ALIAS
2696
If this declaration is for a namespace alias, then
2697
@code{DECL_NAMESPACE_ALIAS} is the namespace for which this one is an
2698
alias.
2699
 
2700
Do not attempt to use @code{cp_namespace_decls} for a namespace which is
2701
an alias.  Instead, follow @code{DECL_NAMESPACE_ALIAS} links until you
2702
reach an ordinary, non-alias, namespace, and call
2703
@code{cp_namespace_decls} there.
2704
 
2705
@item DECL_NAMESPACE_STD_P
2706
This predicate holds if the namespace is the special @code{::std}
2707
namespace.
2708
 
2709
@item cp_namespace_decls
2710
This function will return the declarations contained in the namespace,
2711
including types, overloaded functions, other namespaces, and so forth.
2712
If there are no declarations, this function will return
2713
@code{NULL_TREE}.  The declarations are connected through their
2714
@code{TREE_CHAIN} fields.
2715
 
2716
Although most entries on this list will be declarations,
2717
@code{TREE_LIST} nodes may also appear.  In this case, the
2718
@code{TREE_VALUE} will be an @code{OVERLOAD}.  The value of the
2719
@code{TREE_PURPOSE} is unspecified; back ends should ignore this value.
2720
As with the other kinds of declarations returned by
2721
@code{cp_namespace_decls}, the @code{TREE_CHAIN} will point to the next
2722
declaration in this list.
2723
 
2724
For more information on the kinds of declarations that can occur on this
2725
list, @xref{Declarations}.  Some declarations will not appear on this
2726
list.  In particular, no @code{FIELD_DECL}, @code{LABEL_DECL}, or
2727
@code{PARM_DECL} nodes will appear here.
2728
 
2729
This function cannot be used with namespaces that have
2730
@code{DECL_NAMESPACE_ALIAS} set.
2731
 
2732
@end ftable
2733
 
2734
@c ---------------------------------------------------------------------
2735
@c Classes
2736
@c ---------------------------------------------------------------------
2737
 
2738
@node Classes
2739
@subsection Classes
2740
@cindex class, scope
2741
@tindex RECORD_TYPE
2742
@tindex UNION_TYPE
2743
@findex CLASSTYPE_DECLARED_CLASS
2744
@findex TYPE_BINFO
2745
@findex BINFO_TYPE
2746
@findex TYPE_FIELDS
2747
@findex TYPE_VFIELD
2748
@findex TYPE_METHODS
2749
 
2750
Besides namespaces, the other high-level scoping construct in C++ is the
2751
class.  (Throughout this manual the term @dfn{class} is used to mean the
2752
types referred to in the ANSI/ISO C++ Standard as classes; these include
2753
types defined with the @code{class}, @code{struct}, and @code{union}
2754
keywords.)
2755
 
2756
A class type is represented by either a @code{RECORD_TYPE} or a
2757
@code{UNION_TYPE}.  A class declared with the @code{union} tag is
2758
represented by a @code{UNION_TYPE}, while classes declared with either
2759
the @code{struct} or the @code{class} tag are represented by
2760
@code{RECORD_TYPE}s.  You can use the @code{CLASSTYPE_DECLARED_CLASS}
2761
macro to discern whether or not a particular type is a @code{class} as
2762
opposed to a @code{struct}.  This macro will be true only for classes
2763
declared with the @code{class} tag.
2764
 
2765
Almost all non-function members are available on the @code{TYPE_FIELDS}
2766
list.  Given one member, the next can be found by following the
2767
@code{TREE_CHAIN}.  You should not depend in any way on the order in
2768
which fields appear on this list.  All nodes on this list will be
2769
@samp{DECL} nodes.  A @code{FIELD_DECL} is used to represent a non-static
2770
data member, a @code{VAR_DECL} is used to represent a static data
2771
member, and a @code{TYPE_DECL} is used to represent a type.  Note that
2772
the @code{CONST_DECL} for an enumeration constant will appear on this
2773
list, if the enumeration type was declared in the class.  (Of course,
2774
the @code{TYPE_DECL} for the enumeration type will appear here as well.)
2775
There are no entries for base classes on this list.  In particular,
2776
there is no @code{FIELD_DECL} for the ``base-class portion'' of an
2777
object.
2778
 
2779
The @code{TYPE_VFIELD} is a compiler-generated field used to point to
2780
virtual function tables.  It may or may not appear on the
2781
@code{TYPE_FIELDS} list.  However, back ends should handle the
2782
@code{TYPE_VFIELD} just like all the entries on the @code{TYPE_FIELDS}
2783
list.
2784
 
2785
The function members are available on the @code{TYPE_METHODS} list.
2786
Again, subsequent members are found by following the @code{TREE_CHAIN}
2787
field.  If a function is overloaded, each of the overloaded functions
2788
appears; no @code{OVERLOAD} nodes appear on the @code{TYPE_METHODS}
2789
list.  Implicitly declared functions (including default constructors,
2790
copy constructors, assignment operators, and destructors) will appear on
2791
this list as well.
2792
 
2793
Every class has an associated @dfn{binfo}, which can be obtained with
2794
@code{TYPE_BINFO}.  Binfos are used to represent base-classes.  The
2795
binfo given by @code{TYPE_BINFO} is the degenerate case, whereby every
2796
class is considered to be its own base-class.  The base binfos for a
2797
particular binfo are held in a vector, whose length is obtained with
2798
@code{BINFO_N_BASE_BINFOS}.  The base binfos themselves are obtained
2799
with @code{BINFO_BASE_BINFO} and @code{BINFO_BASE_ITERATE}.  To add a
2800
new binfo, use @code{BINFO_BASE_APPEND}.  The vector of base binfos can
2801
be obtained with @code{BINFO_BASE_BINFOS}, but normally you do not need
2802
to use that.  The class type associated with a binfo is given by
2803
@code{BINFO_TYPE}.  It is not always the case that @code{BINFO_TYPE
2804
(TYPE_BINFO (x))}, because of typedefs and qualified types.  Neither is
2805
it the case that @code{TYPE_BINFO (BINFO_TYPE (y))} is the same binfo as
2806
@code{y}.  The reason is that if @code{y} is a binfo representing a
2807
base-class @code{B} of a derived class @code{D}, then @code{BINFO_TYPE
2808
(y)} will be @code{B}, and @code{TYPE_BINFO (BINFO_TYPE (y))} will be
2809
@code{B} as its own base-class, rather than as a base-class of @code{D}.
2810
 
2811
The access to a base type can be found with @code{BINFO_BASE_ACCESS}.
2812
This will produce @code{access_public_node}, @code{access_private_node}
2813
or @code{access_protected_node}.  If bases are always public,
2814
@code{BINFO_BASE_ACCESSES} may be @code{NULL}.
2815
 
2816
@code{BINFO_VIRTUAL_P} is used to specify whether the binfo is inherited
2817
virtually or not.  The other flags, @code{BINFO_MARKED_P} and
2818
@code{BINFO_FLAG_1} to @code{BINFO_FLAG_6} can be used for language
2819
specific use.
2820
 
2821
The following macros can be used on a tree node representing a class-type.
2822
 
2823
@ftable @code
2824
@item LOCAL_CLASS_P
2825
This predicate holds if the class is local class @emph{i.e.}@: declared
2826
inside a function body.
2827
 
2828
@item TYPE_POLYMORPHIC_P
2829
This predicate holds if the class has at least one virtual function
2830
(declared or inherited).
2831
 
2832
@item TYPE_HAS_DEFAULT_CONSTRUCTOR
2833
This predicate holds whenever its argument represents a class-type with
2834
default constructor.
2835
 
2836
@item CLASSTYPE_HAS_MUTABLE
2837
@itemx TYPE_HAS_MUTABLE_P
2838
These predicates hold for a class-type having a mutable data member.
2839
 
2840
@item CLASSTYPE_NON_POD_P
2841
This predicate holds only for class-types that are not PODs.
2842
 
2843
@item TYPE_HAS_NEW_OPERATOR
2844
This predicate holds for a class-type that defines
2845
@code{operator new}.
2846
 
2847
@item TYPE_HAS_ARRAY_NEW_OPERATOR
2848
This predicate holds for a class-type for which
2849
@code{operator new[]} is defined.
2850
 
2851
@item TYPE_OVERLOADS_CALL_EXPR
2852
This predicate holds for class-type for which the function call
2853
@code{operator()} is overloaded.
2854
 
2855
@item TYPE_OVERLOADS_ARRAY_REF
2856
This predicate holds for a class-type that overloads
2857
@code{operator[]}
2858
 
2859
@item TYPE_OVERLOADS_ARROW
2860
This predicate holds for a class-type for which @code{operator->} is
2861
overloaded.
2862
 
2863
@end ftable
2864
 
2865
@node Functions for C++
2866
@subsection Functions for C++
2867
@cindex function
2868
@tindex FUNCTION_DECL
2869
@tindex OVERLOAD
2870
@findex OVL_CURRENT
2871
@findex OVL_NEXT
2872
 
2873
A function is represented by a @code{FUNCTION_DECL} node.  A set of
2874
overloaded functions is sometimes represented by an @code{OVERLOAD} node.
2875
 
2876
An @code{OVERLOAD} node is not a declaration, so none of the
2877
@samp{DECL_} macros should be used on an @code{OVERLOAD}.  An
2878
@code{OVERLOAD} node is similar to a @code{TREE_LIST}.  Use
2879
@code{OVL_CURRENT} to get the function associated with an
2880
@code{OVERLOAD} node; use @code{OVL_NEXT} to get the next
2881
@code{OVERLOAD} node in the list of overloaded functions.  The macros
2882
@code{OVL_CURRENT} and @code{OVL_NEXT} are actually polymorphic; you can
2883
use them to work with @code{FUNCTION_DECL} nodes as well as with
2884
overloads.  In the case of a @code{FUNCTION_DECL}, @code{OVL_CURRENT}
2885
will always return the function itself, and @code{OVL_NEXT} will always
2886
be @code{NULL_TREE}.
2887
 
2888
To determine the scope of a function, you can use the
2889
@code{DECL_CONTEXT} macro.  This macro will return the class
2890
(either a @code{RECORD_TYPE} or a @code{UNION_TYPE}) or namespace (a
2891
@code{NAMESPACE_DECL}) of which the function is a member.  For a virtual
2892
function, this macro returns the class in which the function was
2893
actually defined, not the base class in which the virtual declaration
2894
occurred.
2895
 
2896
If a friend function is defined in a class scope, the
2897
@code{DECL_FRIEND_CONTEXT} macro can be used to determine the class in
2898
which it was defined.  For example, in
2899
@smallexample
2900
class C @{ friend void f() @{@} @};
2901
@end smallexample
2902
@noindent
2903
the @code{DECL_CONTEXT} for @code{f} will be the
2904
@code{global_namespace}, but the @code{DECL_FRIEND_CONTEXT} will be the
2905
@code{RECORD_TYPE} for @code{C}.
2906
 
2907
 
2908
The following macros and functions can be used on a @code{FUNCTION_DECL}:
2909
@ftable @code
2910
@item DECL_MAIN_P
2911
This predicate holds for a function that is the program entry point
2912
@code{::code}.
2913
 
2914
@item DECL_LOCAL_FUNCTION_P
2915
This predicate holds if the function was declared at block scope, even
2916
though it has a global scope.
2917
 
2918
@item DECL_ANTICIPATED
2919
This predicate holds if the function is a built-in function but its
2920
prototype is not yet explicitly declared.
2921
 
2922
@item DECL_EXTERN_C_FUNCTION_P
2923
This predicate holds if the function is declared as an
2924
`@code{extern "C"}' function.
2925
 
2926
@item DECL_LINKONCE_P
2927
This macro holds if multiple copies of this function may be emitted in
2928
various translation units.  It is the responsibility of the linker to
2929
merge the various copies.  Template instantiations are the most common
2930
example of functions for which @code{DECL_LINKONCE_P} holds; G++
2931
instantiates needed templates in all translation units which require them,
2932
and then relies on the linker to remove duplicate instantiations.
2933
 
2934
FIXME: This macro is not yet implemented.
2935
 
2936
@item DECL_FUNCTION_MEMBER_P
2937
This macro holds if the function is a member of a class, rather than a
2938
member of a namespace.
2939
 
2940
@item DECL_STATIC_FUNCTION_P
2941
This predicate holds if the function a static member function.
2942
 
2943
@item DECL_NONSTATIC_MEMBER_FUNCTION_P
2944
This macro holds for a non-static member function.
2945
 
2946
@item DECL_CONST_MEMFUNC_P
2947
This predicate holds for a @code{const}-member function.
2948
 
2949
@item DECL_VOLATILE_MEMFUNC_P
2950
This predicate holds for a @code{volatile}-member function.
2951
 
2952
@item DECL_CONSTRUCTOR_P
2953
This macro holds if the function is a constructor.
2954
 
2955
@item DECL_NONCONVERTING_P
2956
This predicate holds if the constructor is a non-converting constructor.
2957
 
2958
@item DECL_COMPLETE_CONSTRUCTOR_P
2959
This predicate holds for a function which is a constructor for an object
2960
of a complete type.
2961
 
2962
@item DECL_BASE_CONSTRUCTOR_P
2963
This predicate holds for a function which is a constructor for a base
2964
class sub-object.
2965
 
2966
@item DECL_COPY_CONSTRUCTOR_P
2967
This predicate holds for a function which is a copy-constructor.
2968
 
2969
@item DECL_DESTRUCTOR_P
2970
This macro holds if the function is a destructor.
2971
 
2972
@item DECL_COMPLETE_DESTRUCTOR_P
2973
This predicate holds if the function is the destructor for an object a
2974
complete type.
2975
 
2976
@item DECL_OVERLOADED_OPERATOR_P
2977
This macro holds if the function is an overloaded operator.
2978
 
2979
@item DECL_CONV_FN_P
2980
This macro holds if the function is a type-conversion operator.
2981
 
2982
@item DECL_GLOBAL_CTOR_P
2983
This predicate holds if the function is a file-scope initialization
2984
function.
2985
 
2986
@item DECL_GLOBAL_DTOR_P
2987
This predicate holds if the function is a file-scope finalization
2988
function.
2989
 
2990
@item DECL_THUNK_P
2991
This predicate holds if the function is a thunk.
2992
 
2993
These functions represent stub code that adjusts the @code{this} pointer
2994
and then jumps to another function.  When the jumped-to function
2995
returns, control is transferred directly to the caller, without
2996
returning to the thunk.  The first parameter to the thunk is always the
2997
@code{this} pointer; the thunk should add @code{THUNK_DELTA} to this
2998
value.  (The @code{THUNK_DELTA} is an @code{int}, not an
2999
@code{INTEGER_CST}.)
3000
 
3001
Then, if @code{THUNK_VCALL_OFFSET} (an @code{INTEGER_CST}) is nonzero
3002
the adjusted @code{this} pointer must be adjusted again.  The complete
3003
calculation is given by the following pseudo-code:
3004
 
3005
@smallexample
3006
this += THUNK_DELTA
3007
if (THUNK_VCALL_OFFSET)
3008
  this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET]
3009
@end smallexample
3010
 
3011
Finally, the thunk should jump to the location given
3012
by @code{DECL_INITIAL}; this will always be an expression for the
3013
address of a function.
3014
 
3015
@item DECL_NON_THUNK_FUNCTION_P
3016
This predicate holds if the function is @emph{not} a thunk function.
3017
 
3018
@item GLOBAL_INIT_PRIORITY
3019
If either @code{DECL_GLOBAL_CTOR_P} or @code{DECL_GLOBAL_DTOR_P} holds,
3020
then this gives the initialization priority for the function.  The
3021
linker will arrange that all functions for which
3022
@code{DECL_GLOBAL_CTOR_P} holds are run in increasing order of priority
3023
before @code{main} is called.  When the program exits, all functions for
3024
which @code{DECL_GLOBAL_DTOR_P} holds are run in the reverse order.
3025
 
3026
@item TYPE_RAISES_EXCEPTIONS
3027
This macro returns the list of exceptions that a (member-)function can
3028
raise.  The returned list, if non @code{NULL}, is comprised of nodes
3029
whose @code{TREE_VALUE} represents a type.
3030
 
3031
@item TYPE_NOTHROW_P
3032
This predicate holds when the exception-specification of its arguments
3033
is of the form `@code{()}'.
3034
 
3035
@item DECL_ARRAY_DELETE_OPERATOR_P
3036
This predicate holds if the function an overloaded
3037
@code{operator delete[]}.
3038
 
3039
@end ftable
3040
 
3041
@c ---------------------------------------------------------------------
3042
@c Function Bodies
3043
@c ---------------------------------------------------------------------
3044
 
3045
@node Statements for C++
3046
@subsection Statements for C++
3047
@cindex statements
3048
@tindex BREAK_STMT
3049
@tindex CLEANUP_STMT
3050
@findex CLEANUP_DECL
3051
@findex CLEANUP_EXPR
3052
@tindex CONTINUE_STMT
3053
@tindex DECL_STMT
3054
@findex DECL_STMT_DECL
3055
@tindex DO_STMT
3056
@findex DO_BODY
3057
@findex DO_COND
3058
@tindex EMPTY_CLASS_EXPR
3059
@tindex EXPR_STMT
3060
@findex EXPR_STMT_EXPR
3061
@tindex FOR_STMT
3062
@findex FOR_INIT_STMT
3063
@findex FOR_COND
3064
@findex FOR_EXPR
3065
@findex FOR_BODY
3066
@tindex HANDLER
3067
@tindex IF_STMT
3068
@findex IF_COND
3069
@findex THEN_CLAUSE
3070
@findex ELSE_CLAUSE
3071
@tindex RETURN_STMT
3072
@findex RETURN_EXPR
3073
@tindex SUBOBJECT
3074
@findex SUBOBJECT_CLEANUP
3075
@tindex SWITCH_STMT
3076
@findex SWITCH_COND
3077
@findex SWITCH_BODY
3078
@tindex TRY_BLOCK
3079
@findex TRY_STMTS
3080
@findex TRY_HANDLERS
3081
@findex HANDLER_PARMS
3082
@findex HANDLER_BODY
3083
@findex USING_STMT
3084
@tindex WHILE_STMT
3085
@findex WHILE_BODY
3086
@findex WHILE_COND
3087
 
3088
A function that has a definition in the current translation unit will
3089
have a non-@code{NULL} @code{DECL_INITIAL}.  However, back ends should not make
3090
use of the particular value given by @code{DECL_INITIAL}.
3091
 
3092
The @code{DECL_SAVED_TREE} macro will give the complete body of the
3093
function.
3094
 
3095
@subsubsection Statements
3096
 
3097
There are tree nodes corresponding to all of the source-level
3098
statement constructs, used within the C and C++ frontends.  These are
3099
enumerated here, together with a list of the various macros that can
3100
be used to obtain information about them.  There are a few macros that
3101
can be used with all statements:
3102
 
3103
@ftable @code
3104
@item STMT_IS_FULL_EXPR_P
3105
In C++, statements normally constitute ``full expressions''; temporaries
3106
created during a statement are destroyed when the statement is complete.
3107
However, G++ sometimes represents expressions by statements; these
3108
statements will not have @code{STMT_IS_FULL_EXPR_P} set.  Temporaries
3109
created during such statements should be destroyed when the innermost
3110
enclosing statement with @code{STMT_IS_FULL_EXPR_P} set is exited.
3111
 
3112
@end ftable
3113
 
3114
Here is the list of the various statement nodes, and the macros used to
3115
access them.  This documentation describes the use of these nodes in
3116
non-template functions (including instantiations of template functions).
3117
In template functions, the same nodes are used, but sometimes in
3118
slightly different ways.
3119
 
3120
Many of the statements have substatements.  For example, a @code{while}
3121
loop will have a body, which is itself a statement.  If the substatement
3122
is @code{NULL_TREE}, it is considered equivalent to a statement
3123
consisting of a single @code{;}, i.e., an expression statement in which
3124
the expression has been omitted.  A substatement may in fact be a list
3125
of statements, connected via their @code{TREE_CHAIN}s.  So, you should
3126
always process the statement tree by looping over substatements, like
3127
this:
3128
@smallexample
3129
void process_stmt (stmt)
3130
     tree stmt;
3131
@{
3132
  while (stmt)
3133
    @{
3134
      switch (TREE_CODE (stmt))
3135
        @{
3136
        case IF_STMT:
3137
          process_stmt (THEN_CLAUSE (stmt));
3138
          /* @r{More processing here.}  */
3139
          break;
3140
 
3141
        @dots{}
3142
        @}
3143
 
3144
      stmt = TREE_CHAIN (stmt);
3145
    @}
3146
@}
3147
@end smallexample
3148
In other words, while the @code{then} clause of an @code{if} statement
3149
in C++ can be only one statement (although that one statement may be a
3150
compound statement), the intermediate representation will sometimes use
3151
several statements chained together.
3152
 
3153
@table @code
3154
@item BREAK_STMT
3155
 
3156
Used to represent a @code{break} statement.  There are no additional
3157
fields.
3158
 
3159
@item CLEANUP_STMT
3160
 
3161
Used to represent an action that should take place upon exit from the
3162
enclosing scope.  Typically, these actions are calls to destructors for
3163
local objects, but back ends cannot rely on this fact.  If these nodes
3164
are in fact representing such destructors, @code{CLEANUP_DECL} will be
3165
the @code{VAR_DECL} destroyed.  Otherwise, @code{CLEANUP_DECL} will be
3166
@code{NULL_TREE}.  In any case, the @code{CLEANUP_EXPR} is the
3167
expression to execute.  The cleanups executed on exit from a scope
3168
should be run in the reverse order of the order in which the associated
3169
@code{CLEANUP_STMT}s were encountered.
3170
 
3171
@item CONTINUE_STMT
3172
 
3173
Used to represent a @code{continue} statement.  There are no additional
3174
fields.
3175
 
3176
@item CTOR_STMT
3177
 
3178
Used to mark the beginning (if @code{CTOR_BEGIN_P} holds) or end (if
3179
@code{CTOR_END_P} holds of the main body of a constructor.  See also
3180
@code{SUBOBJECT} for more information on how to use these nodes.
3181
 
3182
@item DO_STMT
3183
 
3184
Used to represent a @code{do} loop.  The body of the loop is given by
3185
@code{DO_BODY} while the termination condition for the loop is given by
3186
@code{DO_COND}.  The condition for a @code{do}-statement is always an
3187
expression.
3188
 
3189
@item EMPTY_CLASS_EXPR
3190
 
3191
Used to represent a temporary object of a class with no data whose
3192
address is never taken.  (All such objects are interchangeable.)  The
3193
@code{TREE_TYPE} represents the type of the object.
3194
 
3195
@item EXPR_STMT
3196
 
3197
Used to represent an expression statement.  Use @code{EXPR_STMT_EXPR} to
3198
obtain the expression.
3199
 
3200
@item FOR_STMT
3201
 
3202
Used to represent a @code{for} statement.  The @code{FOR_INIT_STMT} is
3203
the initialization statement for the loop.  The @code{FOR_COND} is the
3204
termination condition.  The @code{FOR_EXPR} is the expression executed
3205
right before the @code{FOR_COND} on each loop iteration; often, this
3206
expression increments a counter.  The body of the loop is given by
3207
@code{FOR_BODY}.  Note that @code{FOR_INIT_STMT} and @code{FOR_BODY}
3208
return statements, while @code{FOR_COND} and @code{FOR_EXPR} return
3209
expressions.
3210
 
3211
@item HANDLER
3212
 
3213
Used to represent a C++ @code{catch} block.  The @code{HANDLER_TYPE}
3214
is the type of exception that will be caught by this handler; it is
3215
equal (by pointer equality) to @code{NULL} if this handler is for all
3216
types.  @code{HANDLER_PARMS} is the @code{DECL_STMT} for the catch
3217
parameter, and @code{HANDLER_BODY} is the code for the block itself.
3218
 
3219
@item IF_STMT
3220
 
3221
Used to represent an @code{if} statement.  The @code{IF_COND} is the
3222
expression.
3223
 
3224
If the condition is a @code{TREE_LIST}, then the @code{TREE_PURPOSE} is
3225
a statement (usually a @code{DECL_STMT}).  Each time the condition is
3226
evaluated, the statement should be executed.  Then, the
3227
@code{TREE_VALUE} should be used as the conditional expression itself.
3228
This representation is used to handle C++ code like this:
3229
 
3230
C++ distinguishes between this and @code{COND_EXPR} for handling templates.
3231
 
3232
@smallexample
3233
if (int i = 7) @dots{}
3234
@end smallexample
3235
 
3236
where there is a new local variable (or variables) declared within the
3237
condition.
3238
 
3239
The @code{THEN_CLAUSE} represents the statement given by the @code{then}
3240
condition, while the @code{ELSE_CLAUSE} represents the statement given
3241
by the @code{else} condition.
3242
 
3243
@item SUBOBJECT
3244
 
3245
In a constructor, these nodes are used to mark the point at which a
3246
subobject of @code{this} is fully constructed.  If, after this point, an
3247
exception is thrown before a @code{CTOR_STMT} with @code{CTOR_END_P} set
3248
is encountered, the @code{SUBOBJECT_CLEANUP} must be executed.  The
3249
cleanups must be executed in the reverse order in which they appear.
3250
 
3251
@item SWITCH_STMT
3252
 
3253
Used to represent a @code{switch} statement.  The @code{SWITCH_STMT_COND}
3254
is the expression on which the switch is occurring.  See the documentation
3255
for an @code{IF_STMT} for more information on the representation used
3256
for the condition.  The @code{SWITCH_STMT_BODY} is the body of the switch
3257
statement.   The @code{SWITCH_STMT_TYPE} is the original type of switch
3258
expression as given in the source, before any compiler conversions.
3259
 
3260
@item TRY_BLOCK
3261
Used to represent a @code{try} block.  The body of the try block is
3262
given by @code{TRY_STMTS}.  Each of the catch blocks is a @code{HANDLER}
3263
node.  The first handler is given by @code{TRY_HANDLERS}.  Subsequent
3264
handlers are obtained by following the @code{TREE_CHAIN} link from one
3265
handler to the next.  The body of the handler is given by
3266
@code{HANDLER_BODY}.
3267
 
3268
If @code{CLEANUP_P} holds of the @code{TRY_BLOCK}, then the
3269
@code{TRY_HANDLERS} will not be a @code{HANDLER} node.  Instead, it will
3270
be an expression that should be executed if an exception is thrown in
3271
the try block.  It must rethrow the exception after executing that code.
3272
And, if an exception is thrown while the expression is executing,
3273
@code{terminate} must be called.
3274
 
3275
@item USING_STMT
3276
Used to represent a @code{using} directive.  The namespace is given by
3277
@code{USING_STMT_NAMESPACE}, which will be a NAMESPACE_DECL@.  This node
3278
is needed inside template functions, to implement using directives
3279
during instantiation.
3280
 
3281
@item WHILE_STMT
3282
 
3283
Used to represent a @code{while} loop.  The @code{WHILE_COND} is the
3284
termination condition for the loop.  See the documentation for an
3285
@code{IF_STMT} for more information on the representation used for the
3286
condition.
3287
 
3288
The @code{WHILE_BODY} is the body of the loop.
3289
 
3290
@end table
3291
 
3292
@node C++ Expressions
3293
@subsection C++ Expressions
3294
 
3295
This section describes expressions specific to the C and C++ front
3296
ends.
3297
 
3298
@table @code
3299
@item TYPEID_EXPR
3300
 
3301
Used to represent a @code{typeid} expression.
3302
 
3303
@item NEW_EXPR
3304
@itemx VEC_NEW_EXPR
3305
 
3306
Used to represent a call to @code{new} and @code{new[]} respectively.
3307
 
3308
@item DELETE_EXPR
3309
@itemx VEC_DELETE_EXPR
3310
 
3311
Used to represent a call to @code{delete} and @code{delete[]} respectively.
3312
 
3313
@item MEMBER_REF
3314
 
3315
Represents a reference to a member of a class.
3316
 
3317
@item THROW_EXPR
3318
 
3319
Represents an instance of @code{throw} in the program.  Operand 0,
3320
which is the expression to throw, may be @code{NULL_TREE}.
3321
 
3322
 
3323
@item AGGR_INIT_EXPR
3324
An @code{AGGR_INIT_EXPR} represents the initialization as the return
3325
value of a function call, or as the result of a constructor.  An
3326
@code{AGGR_INIT_EXPR} will only appear as a full-expression, or as the
3327
second operand of a @code{TARGET_EXPR}.  @code{AGGR_INIT_EXPR}s have
3328
a representation similar to that of @code{CALL_EXPR}s.  You can use
3329
the @code{AGGR_INIT_EXPR_FN} and @code{AGGR_INIT_EXPR_ARG} macros to access
3330
the function to call and the arguments to pass.
3331
 
3332
If @code{AGGR_INIT_VIA_CTOR_P} holds of the @code{AGGR_INIT_EXPR}, then
3333
the initialization is via a constructor call.  The address of the
3334
@code{AGGR_INIT_EXPR_SLOT} operand, which is always a @code{VAR_DECL},
3335
is taken, and this value replaces the first argument in the argument
3336
list.
3337
 
3338
In either case, the expression is void.
3339
 
3340
 
3341
@end table
3342
 
3343
 
3344
@node Java Trees
3345
@section Java Trees

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.