X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftree.def;h=791d699a0c55acad06cab49e66d025e0c1b15963;hb=f3f03d1ef01ae945da02a8d1fc3972459b1df5c3;hp=493c75e79af70a3c54d905349ebd7b6bfb704109;hpb=86638c2ef3b5ed40e2c8f19e5ce0cdbf86593413;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/tree.def b/gcc/tree.def index 493c75e79af..791d699a0c5 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -162,15 +162,18 @@ 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) +/* 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) + +/* The C++ decltype(nullptr) type. */ +DEFTREECODE (NULLPTR_TYPE, "nullptr_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) - /* The ordering of the following codes is optimized for the checking macros in tree.h. Changing the order will degrade the speed of the compiler. COMPLEX_TYPE, VECTOR_TYPE, ARRAY_TYPE. */ @@ -414,20 +417,9 @@ DEFTREECODE (ARRAY_REF, "array_ref", tcc_reference, 4) of the range is taken from the type of the expression. */ DEFTREECODE (ARRAY_RANGE_REF, "array_range_ref", tcc_reference, 4) -/* The ordering of the following codes is optimized for the checking - macros in tree.h. Changing the order will degrade the speed of the - compiler. INDIRECT_REF, MISALIGNED_INDIRECT_REF. */ - /* C unary `*' or Pascal `^'. One operand, an expression for a pointer. */ DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1) -/* Same as INDIRECT_REF, but also specifies the alignment of the referenced - address: - Operand 0 is the referenced address (a pointer); - Operand 1 is an INTEGER_CST which represents the alignment of the address, - or 0 if the alignment is unknown. */ -DEFTREECODE (MISALIGNED_INDIRECT_REF, "misaligned_indirect_ref", tcc_reference, 2) - /* Used to represent lookup in a virtual method table which is dependent on the runtime type of an object. Operands are: OBJ_TYPE_REF_EXPR: An expression that evaluates the value to use. @@ -952,19 +944,21 @@ DEFTREECODE (WITH_SIZE_EXPR, "with_size_expr", tcc_expression, 2) generated by the builtin targetm.vectorize.mask_for_load_builtin_decl. */ DEFTREECODE (REALIGN_LOAD_EXPR, "realign_load", tcc_expression, 3) -/* Low-level memory addressing. Operands are SYMBOL (static or global - variable), BASE (register), INDEX (register), STEP (integer constant), - OFFSET (integer constant). Corresponding address is - SYMBOL + BASE + STEP * INDEX + OFFSET. Only variations and values valid on - the target are allowed. +/* Low-level memory addressing. Operands are BASE (address of static or + global variable or register), OFFSET (integer constant), + INDEX (register), STEP (integer constant), INDEX2 (register), + The corresponding address is BASE + STEP * INDEX + INDEX2 + OFFSET. + Only variations and values valid on the target are allowed. + + The type of STEP, INDEX and INDEX2 is sizetype. - The type of STEP, INDEX and OFFSET is sizetype. The type of BASE is - sizetype or a pointer type (if SYMBOL is NULL). + The type of BASE is a pointer type. If BASE is not an address of + a static or global variable INDEX2 will be NULL. - The sixth argument is the reference to the original memory access, which - is preserved for the purpose of alias analysis. */ + The type of OFFSET is a pointer type and determines TBAA the same as + the constant offset operand in MEM_REF. */ -DEFTREECODE (TARGET_MEM_REF, "target_mem_ref", tcc_reference, 6) +DEFTREECODE (TARGET_MEM_REF, "target_mem_ref", tcc_reference, 5) /* Memory addressing. Operands are a pointer and a tree constant integer byte offset of the pointer type that when dereferenced yields the @@ -1098,6 +1092,12 @@ DEFTREECODE (WIDEN_MULT_PLUS_EXPR, "widen_mult_plus_expr", tcc_expression, 3) is subtracted from t3. */ DEFTREECODE (WIDEN_MULT_MINUS_EXPR, "widen_mult_plus_expr", tcc_expression, 3) +/* 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) + /* Whole vector left/right shift in bits. Operand 0 is a vector to be shifted. Operand 1 is an integer shift amount in bits. */