Mercurial > hg > CbC > CbC_gcc
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) |