Mercurial > hg > CbC > CbC_gcc
diff gcc/tree.def @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/tree.def Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/tree.def Thu Oct 25 07:37:49 2018 +0900 @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the tree codes used in GCC. - Copyright (C) 1987-2017 Free Software Foundation, Inc. + Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GCC. @@ -31,11 +31,7 @@ These tree codes have been sorted so that the macros in tree.h that check for various tree codes are optimized into range checks. This gives a measurable performance improvement. When adding a new - code, consider its placement in relation to the other codes. - - When adding a new tree code which might appear as GIMPLE_ASSIGN RHS - code, proper handler in chkp_compute_bounds_for_assignment may - be required. */ + code, consider its placement in relation to the other codes. */ /* Any erroneous construct is parsed into a node of this type. This type of node is accepted without complaint in all contexts @@ -74,9 +70,6 @@ could either point to another BLOCK node or it could point to a FUNCTION_DECL node (e.g. in the case of a block representing the outermost scope of a particular inlining of a function). - BLOCK_ABSTRACT is nonzero if the block represents an abstract - instance of a block (i.e. one which is nested within an abstract - instance of an inline function). TREE_ASM_WRITTEN is nonzero if the block was actually referenced in the generated assembly. */ DEFTREECODE (BLOCK, "block", tcc_exceptional, 0) @@ -145,11 +138,7 @@ /* Integer types in all languages, including char in C. Also used for sub-ranges of other discrete types. Has components TYPE_MIN_VALUE, TYPE_MAX_VALUE (expressions, inclusive) - and TYPE_PRECISION (number of bits used by this type). - In the case of a subrange type in Pascal, the TREE_TYPE - of this will point at the supertype (another INTEGER_TYPE, - or an ENUMERAL_TYPE or BOOLEAN_TYPE). - Otherwise, the TREE_TYPE is zero. */ + and TYPE_PRECISION (number of bits used by this type). */ DEFTREECODE (INTEGER_TYPE, "integer_type", tcc_type, 0) /* C's float and double. Different floating types are distinguished @@ -204,16 +193,15 @@ and holds the type to coerce a value of that array type to in C. TYPE_STRING_FLAG indicates a string (in contrast to an array of chars) in languages (such as Chill) that make a distinction. */ -/* Array types in C or Pascal */ +/* Array types in C */ DEFTREECODE (ARRAY_TYPE, "array_type", tcc_type, 0) -/* Struct in C, or record in Pascal. */ +/* Struct in C. */ /* Special fields: TYPE_FIELDS chain of FIELD_DECLs for the fields of the struct, VAR_DECLs, TYPE_DECLs and CONST_DECLs for record-scope variables, types and enumerators and FUNCTION_DECLs for methods associated - with the type. - A few may need to be added for Pascal. */ + with the type. */ /* See the comment above, before ENUMERAL_TYPE, for how forward references to struct tags are handled in C. */ DEFTREECODE (RECORD_TYPE, "record_type", tcc_type, 0) @@ -237,11 +225,6 @@ /* The void type in C */ DEFTREECODE (VOID_TYPE, "void_type", tcc_type, 0) -/* Type to hold bounds for a pointer. - Has TYPE_PRECISION component to specify number of bits used - by this type. */ -DEFTREECODE (POINTER_BOUNDS_TYPE, "pointer_bounds_type", tcc_type, 0) - /* Type of functions. Special fields: TREE_TYPE type of value returned. TYPE_ARG_TYPES list of types of arguments expected. @@ -291,6 +274,9 @@ some circumstances. */ DEFTREECODE (INTEGER_CST, "integer_cst", tcc_constant, 0) +/* Contents are given by POLY_INT_CST_COEFF. */ +DEFTREECODE (POLY_INT_CST, "poly_int_cst", tcc_constant, 0) + /* Contents are in TREE_REAL_CST field. */ DEFTREECODE (REAL_CST, "real_cst", tcc_constant, 0) @@ -301,7 +287,7 @@ whose contents are other constant nodes. */ DEFTREECODE (COMPLEX_CST, "complex_cst", tcc_constant, 0) -/* Contents are in VECTOR_CST_ELTS field. */ +/* See generic.texi for details. */ DEFTREECODE (VECTOR_CST, "vector_cst", tcc_constant, 0) /* Contents are TREE_STRING_LENGTH and the actual contents of the string. */ @@ -382,6 +368,9 @@ DEBUG stmts. */ DEFTREECODE (DEBUG_EXPR_DECL, "debug_expr_decl", tcc_declaration, 0) +/* A stmt that marks the beginning of a source statement. */ +DEFTREECODE (DEBUG_BEGIN_STMT, "debug_begin_stmt", tcc_statement, 0) + /* A namespace declaration. Namespaces appear in DECL_CONTEXT of other _DECLs, providing a hierarchy of names. */ DEFTREECODE (NAMESPACE_DECL, "namespace_decl", tcc_declaration, 0) @@ -463,7 +452,7 @@ generating insns. */ DEFTREECODE (VIEW_CONVERT_EXPR, "view_convert_expr", tcc_reference, 1) -/* C unary `*' or Pascal `^'. One operand, an expression for a pointer. */ +/* C unary `*'. One operand, an expression for a pointer. */ DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1) /* Used to represent lookup in a virtual method table which is dependent on @@ -534,6 +523,19 @@ 1 and 2 are NULL. The operands are then taken from the cfg edges. */ DEFTREECODE (COND_EXPR, "cond_expr", tcc_expression, 3) +/* Represents a vector in which every element is equal to operand 0. */ +DEFTREECODE (VEC_DUPLICATE_EXPR, "vec_duplicate_expr", tcc_unary, 1) + +/* Vector series created from a start (base) value and a step. + + A = VEC_SERIES_EXPR (B, C) + + means + + for (i = 0; i < N; i++) + A[i] = B + C * i; */ +DEFTREECODE (VEC_SERIES_EXPR, "vec_series_expr", tcc_binary, 2) + /* Vector conditional expression. It is like COND_EXPR, but with vector operands. @@ -622,7 +624,7 @@ object of the same type or even for one and the same object within its scope. - Record types with discriminants in Ada or schema types in Pascal are + Record types with discriminants in Ada are examples of such types. This mechanism is also used to create "fat pointers" for unconstrained array types in Ada; the fat pointer is a structure one of whose fields is a pointer to the actual array type @@ -676,6 +678,14 @@ second operand is an integer of type sizetype. */ DEFTREECODE (POINTER_PLUS_EXPR, "pointer_plus_expr", tcc_binary, 2) +/* Pointer subtraction. The two arguments are pointers, and the result + is a signed integer of the same precision. Pointers are interpreted + as unsigned, the difference is computed as if in infinite signed + precision. Behavior is undefined if the difference does not fit in + the result type. The result does not depend on the pointer type, + it is not divided by the size of the pointed-to type. */ +DEFTREECODE (POINTER_DIFF_EXPR, "pointer_diff_expr", tcc_binary, 2) + /* Highpart multiplication. For an integral type with precision B, returns bits [2B-1, B] of the full 2*B product. */ DEFTREECODE (MULT_HIGHPART_EXPR, "mult_highpart_expr", tcc_binary, 2) @@ -734,6 +744,11 @@ operand of the ABS_EXPR must have the same type. */ DEFTREECODE (ABS_EXPR, "abs_expr", tcc_unary, 1) +/* Represents the unsigned absolute value of the operand. + An ABSU_EXPR must have unsigned INTEGER_TYPE. The operand of the ABSU_EXPR + must have the corresponding signed type. */ +DEFTREECODE (ABSU_EXPR, "absu_expr", tcc_unary, 1) + /* Shift operations for shift and rotate. Shift means logical shift if done on an unsigned type, arithmetic shift if done on a signed type. @@ -935,10 +950,8 @@ Operand 0 is the expression used to perform the branch, Operand 1 is the body of the switch, which probably contains CASE_LABEL_EXPRs. It may also be NULL, in which case operand 2 - must not be NULL. - Operand 2 is either NULL_TREE or a TREE_VEC of the CASE_LABEL_EXPRs - of all the cases. */ -DEFTREECODE (SWITCH_EXPR, "switch_expr", tcc_statement, 3) + must not be NULL. */ +DEFTREECODE (SWITCH_EXPR, "switch_expr", tcc_statement, 2) /* Used to represent a case label. @@ -1125,14 +1138,6 @@ Operands like for OMP_FOR. */ DEFTREECODE (OMP_SIMD, "omp_simd", tcc_statement, 7) -/* Cilk Plus - #pragma simd [clause1 ... clauseN] - Operands like for OMP_FOR. */ -DEFTREECODE (CILK_SIMD, "cilk_simd", tcc_statement, 7) - -/* Cilk Plus - _Cilk_for (..) - Operands like for OMP_FOR. */ -DEFTREECODE (CILK_FOR, "cilk_for", tcc_statement, 7) - /* OpenMP - #pragma omp distribute [clause1 ... clauseN] Operands like for OMP_FOR. */ DEFTREECODE (OMP_DISTRIBUTE, "omp_distribute", tcc_statement, 7) @@ -1260,18 +1265,6 @@ Operand 0: BODY: contains body of the transaction. */ DEFTREECODE (TRANSACTION_EXPR, "transaction_expr", tcc_expression, 1) -/* Reduction operations. - Operations that take a vector of elements and "reduce" it to a scalar - result (e.g. summing the elements of the vector, finding the minimum over - the vector elements, etc). - Operand 0 is a vector. - The expression returns a scalar, with type the same as the elements of the - vector, holding the result of the reduction of all elements of the operand. - */ -DEFTREECODE (REDUC_MAX_EXPR, "reduc_max_expr", tcc_unary, 1) -DEFTREECODE (REDUC_MIN_EXPR, "reduc_min_expr", tcc_unary, 1) -DEFTREECODE (REDUC_PLUS_EXPR, "reduc_plus_expr", tcc_unary, 1) - /* Widening dot-product. The first two arguments are of type t1. The third argument and the result are of type t2, such that t2 is at least @@ -1340,12 +1333,6 @@ by the second argument. */ DEFTREECODE (WIDEN_LSHIFT_EXPR, "widen_lshift_expr", tcc_binary, 2) -/* Fused multiply-add. - All operands and the result are of the same type. No intermediate - rounding is performed after multiplying operand one with operand two - before adding operand three. */ -DEFTREECODE (FMA_EXPR, "fma_expr", tcc_expression, 3) - /* Widening vector multiplication. The two operands are vectors with N elements of size S. Multiplying the elements of the two vectors will result in N products of size 2*S. @@ -1372,6 +1359,15 @@ DEFTREECODE (VEC_UNPACK_FLOAT_HI_EXPR, "vec_unpack_float_hi_expr", tcc_unary, 1) DEFTREECODE (VEC_UNPACK_FLOAT_LO_EXPR, "vec_unpack_float_lo_expr", tcc_unary, 1) +/* Unpack (extract) the high/low elements of the input vector, convert + floating point values to integer and widen elements into the output + vector. The input vector has twice as many elements as the output + vector, that are half the size of the elements of the output vector. */ +DEFTREECODE (VEC_UNPACK_FIX_TRUNC_HI_EXPR, "vec_unpack_fix_trunc_hi_expr", + tcc_unary, 1) +DEFTREECODE (VEC_UNPACK_FIX_TRUNC_LO_EXPR, "vec_unpack_fix_trunc_lo_expr", + tcc_unary, 1) + /* Pack (demote/narrow and merge) the elements of the two input vectors into the output vector using truncation/saturation. The elements of the input vectors are twice the size of the elements of the @@ -1385,6 +1381,12 @@ the output vector. */ DEFTREECODE (VEC_PACK_FIX_TRUNC_EXPR, "vec_pack_fix_trunc_expr", tcc_binary, 2) +/* Convert fixed point values of the two input vectors to floating point + and pack (narrow and merge) the elements into the output vector. The + elements of the input vector are twice the size of the elements of + the output vector. */ +DEFTREECODE (VEC_PACK_FLOAT_EXPR, "vec_pack_float_expr", tcc_binary, 2) + /* Widening vector shift left in bits. Operand 0 is a vector to be shifted with N elements of size S. Operand 1 is an integer shift amount in bits. @@ -1410,15 +1412,9 @@ /* ANNOTATE_EXPR. Operand 0 is the expression to be annotated. - Operand 1 is the annotation kind. */ -DEFTREECODE (ANNOTATE_EXPR, "annotate_expr", tcc_expression, 2) - -/* Cilk spawn statement - Operand 0 is the CALL_EXPR. */ -DEFTREECODE (CILK_SPAWN_STMT, "cilk_spawn_stmt", tcc_statement, 1) - -/* Cilk Sync statement: Does not have any operands. */ -DEFTREECODE (CILK_SYNC_STMT, "cilk_sync_stmt", tcc_statement, 0) + Operand 1 is the annotation kind. + Operand 2 is additional data. */ +DEFTREECODE (ANNOTATE_EXPR, "annotate_expr", tcc_expression, 3) /* Local variables: