comparison gcc/tree.def @ 67:f6334be47118

update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Mar 2011 17:18:12 +0900
parents b7f97abdc517
children 04ced10e8804
comparison
equal deleted inserted replaced
65:65488c3d617d 67:f6334be47118
160 160
161 /* All pointer-to-x types have code POINTER_TYPE. 161 /* All pointer-to-x types have code POINTER_TYPE.
162 The TREE_TYPE points to the node for the type pointed to. */ 162 The TREE_TYPE points to the node for the type pointed to. */
163 DEFTREECODE (POINTER_TYPE, "pointer_type", tcc_type, 0) 163 DEFTREECODE (POINTER_TYPE, "pointer_type", tcc_type, 0)
164 164
165 /* A reference is like a pointer except that it is coerced
166 automatically to the value it points to. Used in C++. */
167 DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0)
168
169 /* The C++ decltype(nullptr) type. */
170 DEFTREECODE (NULLPTR_TYPE, "nullptr_type", tcc_type, 0)
171
165 /* _Fract and _Accum types in Embedded-C. Different fixed-point types 172 /* _Fract and _Accum types in Embedded-C. Different fixed-point types
166 are distinguished by machine mode and by the TYPE_SIZE and the 173 are distinguished by machine mode and by the TYPE_SIZE and the
167 TYPE_PRECISION. */ 174 TYPE_PRECISION. */
168 DEFTREECODE (FIXED_POINT_TYPE, "fixed_point_type", tcc_type, 0) 175 DEFTREECODE (FIXED_POINT_TYPE, "fixed_point_type", tcc_type, 0)
169
170 /* A reference is like a pointer except that it is coerced
171 automatically to the value it points to. Used in C++. */
172 DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0)
173 176
174 /* The ordering of the following codes is optimized for the checking 177 /* The ordering of the following codes is optimized for the checking
175 macros in tree.h. Changing the order will degrade the speed of the 178 macros in tree.h. Changing the order will degrade the speed of the
176 compiler. COMPLEX_TYPE, VECTOR_TYPE, ARRAY_TYPE. */ 179 compiler. COMPLEX_TYPE, VECTOR_TYPE, ARRAY_TYPE. */
177 180
412 /* Likewise, except that the result is a range ("slice") of the array. The 415 /* Likewise, except that the result is a range ("slice") of the array. The
413 starting index of the resulting array is taken from operand 1 and the size 416 starting index of the resulting array is taken from operand 1 and the size
414 of the range is taken from the type of the expression. */ 417 of the range is taken from the type of the expression. */
415 DEFTREECODE (ARRAY_RANGE_REF, "array_range_ref", tcc_reference, 4) 418 DEFTREECODE (ARRAY_RANGE_REF, "array_range_ref", tcc_reference, 4)
416 419
417 /* The ordering of the following codes is optimized for the checking
418 macros in tree.h. Changing the order will degrade the speed of the
419 compiler. INDIRECT_REF, ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF. */
420
421 /* C unary `*' or Pascal `^'. One operand, an expression for a pointer. */ 420 /* C unary `*' or Pascal `^'. One operand, an expression for a pointer. */
422 DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1) 421 DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1)
423
424 /* Like above, but aligns the referenced address (i.e, if the address
425 in P is not aligned on TYPE_ALIGN boundary, then &(*P) != P). */
426 DEFTREECODE (ALIGN_INDIRECT_REF, "align_indirect_ref", tcc_reference, 1)
427
428 /* Same as INDIRECT_REF, but also specifies the alignment of the referenced
429 address:
430 Operand 0 is the referenced address (a pointer);
431 Operand 1 is an INTEGER_CST which represents the alignment of the address,
432 or 0 if the alignment is unknown. */
433 DEFTREECODE (MISALIGNED_INDIRECT_REF, "misaligned_indirect_ref", tcc_reference, 2)
434 422
435 /* Used to represent lookup in a virtual method table which is dependent on 423 /* Used to represent lookup in a virtual method table which is dependent on
436 the runtime type of an object. Operands are: 424 the runtime type of an object. Operands are:
437 OBJ_TYPE_REF_EXPR: An expression that evaluates the value to use. 425 OBJ_TYPE_REF_EXPR: An expression that evaluates the value to use.
438 OBJ_TYPE_REF_OBJECT: Is the object on whose behalf the lookup is 426 OBJ_TYPE_REF_OBJECT: Is the object on whose behalf the lookup is
954 On different targets OFF may take different forms; It can be an address, in 942 On different targets OFF may take different forms; It can be an address, in
955 which case its low log2(VS)-1 bits define the offset, or it can be a mask 943 which case its low log2(VS)-1 bits define the offset, or it can be a mask
956 generated by the builtin targetm.vectorize.mask_for_load_builtin_decl. */ 944 generated by the builtin targetm.vectorize.mask_for_load_builtin_decl. */
957 DEFTREECODE (REALIGN_LOAD_EXPR, "realign_load", tcc_expression, 3) 945 DEFTREECODE (REALIGN_LOAD_EXPR, "realign_load", tcc_expression, 3)
958 946
959 /* Low-level memory addressing. Operands are SYMBOL (static or global 947 /* Low-level memory addressing. Operands are BASE (address of static or
960 variable), BASE (register), INDEX (register), STEP (integer constant), 948 global variable or register), OFFSET (integer constant),
961 OFFSET (integer constant). Corresponding address is 949 INDEX (register), STEP (integer constant), INDEX2 (register),
962 SYMBOL + BASE + STEP * INDEX + OFFSET. Only variations and values valid on 950 The corresponding address is BASE + STEP * INDEX + INDEX2 + OFFSET.
963 the target are allowed. 951 Only variations and values valid on the target are allowed.
964 952
965 The type of STEP, INDEX and OFFSET is sizetype. The type of BASE is 953 The type of STEP, INDEX and INDEX2 is sizetype.
966 sizetype or a pointer type (if SYMBOL is NULL). 954
967 955 The type of BASE is a pointer type. If BASE is not an address of
968 The sixth argument is the reference to the original memory access, which 956 a static or global variable INDEX2 will be NULL.
969 is preserved for the purpose of alias analysis. */ 957
970 958 The type of OFFSET is a pointer type and determines TBAA the same as
971 DEFTREECODE (TARGET_MEM_REF, "target_mem_ref", tcc_reference, 6) 959 the constant offset operand in MEM_REF. */
960
961 DEFTREECODE (TARGET_MEM_REF, "target_mem_ref", tcc_reference, 5)
962
963 /* Memory addressing. Operands are a pointer and a tree constant integer
964 byte offset of the pointer type that when dereferenced yields the
965 type of the base object the pointer points into and which is used for
966 TBAA purposes.
967 The type of the MEM_REF is the type the bytes at the memory location
968 are interpreted as.
969 MEM_REF <p, c> is equivalent to ((typeof(c))p)->x... where x... is a
970 chain of component references offsetting p by c. */
971 DEFTREECODE (MEM_REF, "mem_ref", tcc_reference, 2)
972 972
973 /* The ordering of the codes between OMP_PARALLEL and OMP_CRITICAL is 973 /* The ordering of the codes between OMP_PARALLEL and OMP_CRITICAL is
974 exposed to TREE_RANGE_CHECK. */ 974 exposed to TREE_RANGE_CHECK. */
975 /* OpenMP - #pragma omp parallel [clause1 ... clauseN] 975 /* OpenMP - #pragma omp parallel [clause1 ... clauseN]
976 Operand 0: OMP_PARALLEL_BODY: Code to be executed by all threads. 976 Operand 0: OMP_PARALLEL_BODY: Code to be executed by all threads.
1078 The result is of type t2, such that t2 is at least twice 1078 The result is of type t2, such that t2 is at least twice
1079 the size of t1. WIDEN_MULT_EXPR is equivalent to first widening (promoting) 1079 the size of t1. WIDEN_MULT_EXPR is equivalent to first widening (promoting)
1080 the arguments from type t1 to type t2, and then multiplying them. */ 1080 the arguments from type t1 to type t2, and then multiplying them. */
1081 DEFTREECODE (WIDEN_MULT_EXPR, "widen_mult_expr", tcc_binary, 2) 1081 DEFTREECODE (WIDEN_MULT_EXPR, "widen_mult_expr", tcc_binary, 2)
1082 1082
1083 /* Widening multiply-accumulate.
1084 The first two arguments are of type t1.
1085 The third argument and the result are of type t2, such as t2 is at least
1086 twice the size of t1. t1 and t2 must be integral or fixed-point types.
1087 The expression is equivalent to a WIDEN_MULT_EXPR operation
1088 of the first two operands followed by an add or subtract of the third
1089 operand. */
1090 DEFTREECODE (WIDEN_MULT_PLUS_EXPR, "widen_mult_plus_expr", tcc_expression, 3)
1091 /* This is like the above, except in the final expression the multiply result
1092 is subtracted from t3. */
1093 DEFTREECODE (WIDEN_MULT_MINUS_EXPR, "widen_mult_minus_expr", tcc_expression, 3)
1094
1095 /* Fused multiply-add.
1096 All operands and the result are of the same type. No intermediate
1097 rounding is performed after multiplying operand one with operand two
1098 before adding operand three. */
1099 DEFTREECODE (FMA_EXPR, "fma_expr", tcc_expression, 3)
1100
1083 /* Whole vector left/right shift in bits. 1101 /* Whole vector left/right shift in bits.
1084 Operand 0 is a vector to be shifted. 1102 Operand 0 is a vector to be shifted.
1085 Operand 1 is an integer shift amount in bits. */ 1103 Operand 1 is an integer shift amount in bits. */
1086 DEFTREECODE (VEC_LSHIFT_EXPR, "vec_lshift_expr", tcc_binary, 2) 1104 DEFTREECODE (VEC_LSHIFT_EXPR, "vec_lshift_expr", tcc_binary, 2)
1087 DEFTREECODE (VEC_RSHIFT_EXPR, "vec_rshift_expr", tcc_binary, 2) 1105 DEFTREECODE (VEC_RSHIFT_EXPR, "vec_rshift_expr", tcc_binary, 2)