X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftree.def;h=89c18dfd16cab36446cf6308543df8bd5ae54d4d;hb=f63eb5d36d7d12fc7f0703dfc6fa5cbbf7315f18;hp=d46499ab1e64716da393050d5cea17c23cd07d53;hpb=0de36bdb2d7fa28a41b67b7ab3f8ccb92e1d2e03;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/tree.def b/gcc/tree.def index d46499ab1e6..89c18dfd16c 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -7,7 +7,7 @@ This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later +Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY @@ -16,9 +16,8 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to the Free -Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. */ +along with GCC; see the file COPYING3. If not see +. */ /* For tcc_references, tcc_expression, tcc_comparison, tcc_unary, @@ -173,6 +172,11 @@ DEFTREECODE (REAL_TYPE, "real_type", tcc_type, 0) The TREE_TYPE points to the node for the type pointed to. */ DEFTREECODE (POINTER_TYPE, "pointer_type", tcc_type, 0) +/* _Fract and _Accum types in Embedded-C. Different fixed-point types + are distinguished by machine mode and by the TYPE_SIZE and the + TYPE_PRECISION. */ +DEFTREECODE (FIXED_POINT_TYPE, "fixed_point_type", tcc_type, 0) + /* A reference is like a pointer except that it is coerced automatically to the value it points to. Used in C++. */ DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0) @@ -273,6 +277,9 @@ DEFTREECODE (INTEGER_CST, "integer_cst", tcc_constant, 0) /* Contents are in TREE_REAL_CST field. */ DEFTREECODE (REAL_CST, "real_cst", tcc_constant, 0) +/* Contents are in TREE_FIXED_CST field. */ +DEFTREECODE (FIXED_CST, "fixed_cst", tcc_constant, 0) + /* Contents are in TREE_REALPART and TREE_IMAGPART fields, whose contents are other constant nodes. */ DEFTREECODE (COMPLEX_CST, "complex_cst", tcc_constant, 0) @@ -382,10 +389,11 @@ DEFTREECODE (COMPONENT_REF, "component_ref", tcc_reference, 3) /* Reference to a group of bits within an object. Similar to COMPONENT_REF except the position is given explicitly rather than via a FIELD_DECL. Operand 0 is the structure or union expression; - operand 1 is a tree giving the number of bits being referenced; - operand 2 is a tree giving the position of the first referenced bit. - The field can be either a signed or unsigned field; - BIT_FIELD_REF_UNSIGNED says which. */ + operand 1 is a tree giving the constant number of bits being referenced; + operand 2 is a tree giving the constant position of the first referenced bit. + The result type width has to match the number of bits referenced. + If the result type is integral, its signedness specifies how it is extended + to its mode width. */ DEFTREECODE (BIT_FIELD_REF, "bit_field_ref", tcc_reference, 3) /* The ordering of the following codes is optimized for the checking @@ -485,7 +493,8 @@ DEFTREECODE (TARGET_EXPR, "target_expr", tcc_expression, 4) Operand 0 may be of any type. Operand 1 must have the same type as the entire expression, unless it unconditionally throws an exception, in which case it should - have VOID_TYPE. The same constraints apply to operand 2. */ + have VOID_TYPE. The same constraints apply to operand 2. The + condition in operand 0 must be of integral type. */ DEFTREECODE (COND_EXPR, "cond_expr", tcc_expression, 3) /* Vector conditional expression. It is like COND_EXPR, but with @@ -725,11 +734,20 @@ DEFTREECODE (LTGT_EXPR, "ltgt_expr", tcc_comparison, 2) DEFTREECODE (RANGE_EXPR, "range_expr", tcc_binary, 2) +/* Represents a re-association barrier for floating point expressions + like explicit parenthesis in fortran. */ +DEFTREECODE (PAREN_EXPR, "paren_expr", tcc_unary, 1) + /* Represents a conversion of type of a value. All conversions, including implicit ones, must be represented by CONVERT_EXPR or NOP_EXPR nodes. */ DEFTREECODE (CONVERT_EXPR, "convert_expr", tcc_unary, 1) +/* Conversion of a fixed-point value to an integer, a real, or a fixed-point + value. Or conversion of a fixed-point value from an integer, a real, or + a fixed-point value. */ +DEFTREECODE (FIXED_CONVERT_EXPR, "fixed_convert_expr", tcc_unary, 1) + /* Represents a conversion expected to require no code to be generated. */ DEFTREECODE (NOP_EXPR, "nop_expr", tcc_unary, 1) @@ -884,7 +902,7 @@ DEFTREECODE (EH_FILTER_EXPR, "eh_filter_expr", tcc_statement, 2) has no value and generates no executable code. It is only used for type based alias analysis. This is generated by C++ placement new. CHANGE_DYNAMIC_TYPE_NEW_TYPE, the first operand, is the new type. - CHNAGE_DYNAMIC_TYPE_LOCATION, the second operand, is the location + CHANGE_DYNAMIC_TYPE_LOCATION, the second operand, is the location whose type is being changed. */ DEFTREECODE (CHANGE_DYNAMIC_TYPE_EXPR, "change_dynamic_type_expr", tcc_statement, 2) @@ -999,8 +1017,14 @@ DEFTREECODE (OMP_FOR, "omp_for", tcc_statement, 6) /* OpenMP - #pragma omp sections [clause1 ... clauseN] Operand 0: OMP_SECTIONS_BODY: Sections body. - Operand 1: OMP_SECTIONS_CLAUSES: List of clauses. */ -DEFTREECODE (OMP_SECTIONS, "omp_sections", tcc_statement, 2) + Operand 1: OMP_SECTIONS_CLAUSES: List of clauses. + Operand 2: OMP_SECTIONS_CONTROL: The control variable used for deciding + which of the sections to execute. */ +DEFTREECODE (OMP_SECTIONS, "omp_sections", tcc_statement, 3) + +/* This tree immediately follows OMP_SECTIONS, and represents the switch + used to decide which branch is taken. */ +DEFTREECODE (OMP_SECTIONS_SWITCH, "omp_sections_switch", tcc_statement, 0) /* OpenMP - #pragma omp single Operand 0: OMP_SINGLE_BODY: Single section body. @@ -1028,8 +1052,9 @@ DEFTREECODE (OMP_CRITICAL, "omp_critical", tcc_statement, 2) DEFTREECODE (OMP_RETURN, "omp_return", tcc_statement, 0) /* OpenMP - An intermediate tree code to mark the location of the - loop or sections iteration in the partially lowered code. */ -DEFTREECODE (OMP_CONTINUE, "omp_continue", tcc_statement, 0) + loop or sections iteration in the partially lowered code. + The arguments are definition and use of the control variable. */ +DEFTREECODE (OMP_CONTINUE, "omp_continue", tcc_statement, 2) /* OpenMP - #pragma omp atomic Operand 0: The address at which the atomic operation is to be performed. @@ -1039,6 +1064,18 @@ DEFTREECODE (OMP_CONTINUE, "omp_continue", tcc_statement, 0) build_fold_indirect_ref of the address. */ DEFTREECODE (OMP_ATOMIC, "omp_atomic", tcc_statement, 2) +/* Codes used for lowering of OMP_ATOMIC. Although the form of the OMP_ATOMIC + statement is very simple (just in form mem op= expr), various implicit + conversions may cause the expression become more complex, so that it does + not fit the gimple grammar very well. To overcome this problem, OMP_ATOMIC + is rewritten as a sequence of two codes in gimplification: + + OMP_LOAD (tmp, mem) + val = some computations involving tmp; + OMP_STORE (val) */ +DEFTREECODE (OMP_ATOMIC_LOAD, "omp_atomic_load", tcc_statement, 2) +DEFTREECODE (OMP_ATOMIC_STORE, "omp_atomic_store", tcc_statement, 1) + /* OpenMP clauses. */ DEFTREECODE (OMP_CLAUSE, "omp_clause", tcc_exceptional, 0) @@ -1096,7 +1133,7 @@ DEFTREECODE (GIMPLE_MODIFY_STMT, "gimple_modify_stmt", tcc_gimple_stmt, 2) VEC_WIDEN_MULT_HI_EXPR computes the N/2 high products. VEC_WIDEN_MULT_LO_EXPR computes the N/2 low products. */ DEFTREECODE (VEC_WIDEN_MULT_HI_EXPR, "widen_mult_hi_expr", tcc_binary, 2) -DEFTREECODE (VEC_WIDEN_MULT_LO_EXPR, "widen_mult_hi_expr", tcc_binary, 2) +DEFTREECODE (VEC_WIDEN_MULT_LO_EXPR, "widen_mult_lo_expr", tcc_binary, 2) /* Unpack (extract and promote/widen) the high/low elements of the input vector into the output vector. The input vector has twice as many @@ -1133,6 +1170,12 @@ DEFTREECODE (VEC_EXTRACT_ODD_EXPR, "vec_extractodd_expr", tcc_binary, 2) DEFTREECODE (VEC_INTERLEAVE_HIGH_EXPR, "vec_interleavehigh_expr", tcc_binary, 2) DEFTREECODE (VEC_INTERLEAVE_LOW_EXPR, "vec_interleavelow_expr", tcc_binary, 2) +/* PREDICT_EXPR. Specify hint for branch prediction. The + PREDICT_EXPR_PREDICTOR specify predictor and PREDICT_EXPR_OUTCOME the + outcome (0 for not taken and 1 for taken). Once the profile is guessed + all conditional branches leading to execution paths executing the + PREDICT_EXPR will get predicted by the specified predictor. */ +DEFTREECODE (PREDICT_EXPR, "predict_expr", tcc_unary, 1) /* Local variables: mode:c