comparison gcc/doc/c-tree.texi @ 55:77e2b8dfacca gcc-4.4.5

update it from 4.4.3 to 4.5.0
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 23:39:51 +0900
parents a06113de4d67
children
comparison
equal deleted inserted replaced
52:c156f1bd5cd9 55:77e2b8dfacca
371 @item TYPE_ALIGN 371 @item TYPE_ALIGN
372 The alignment of the type, in bits, represented as an @code{int}. 372 The alignment of the type, in bits, represented as an @code{int}.
373 373
374 @item TYPE_NAME 374 @item TYPE_NAME
375 This macro returns a declaration (in the form of a @code{TYPE_DECL}) for 375 This macro returns a declaration (in the form of a @code{TYPE_DECL}) for
376 the type. (Note this macro does @emph{not} return a 376 the type. (Note this macro does @emph{not} return an
377 @code{IDENTIFIER_NODE}, as you might expect, given its name!) You can 377 @code{IDENTIFIER_NODE}, as you might expect, given its name!) You can
378 look at the @code{DECL_NAME} of the @code{TYPE_DECL} to obtain the 378 look at the @code{DECL_NAME} of the @code{TYPE_DECL} to obtain the
379 actual name of the type. The @code{TYPE_NAME} will be @code{NULL_TREE} 379 actual name of the type. The @code{TYPE_NAME} will be @code{NULL_TREE}
380 for a type that is not a built-in type, the result of a typedef, or a 380 for a type that is not a built-in type, the result of a typedef, or a
381 named class type. 381 named class type.
1254 @tindex OVERLOAD 1254 @tindex OVERLOAD
1255 @findex OVL_CURRENT 1255 @findex OVL_CURRENT
1256 @findex OVL_NEXT 1256 @findex OVL_NEXT
1257 1257
1258 A function is represented by a @code{FUNCTION_DECL} node. A set of 1258 A function is represented by a @code{FUNCTION_DECL} node. A set of
1259 overloaded functions is sometimes represented by a @code{OVERLOAD} node. 1259 overloaded functions is sometimes represented by an @code{OVERLOAD} node.
1260 1260
1261 An @code{OVERLOAD} node is not a declaration, so none of the 1261 An @code{OVERLOAD} node is not a declaration, so none of the
1262 @samp{DECL_} macros should be used on an @code{OVERLOAD}. An 1262 @samp{DECL_} macros should be used on an @code{OVERLOAD}. An
1263 @code{OVERLOAD} node is similar to a @code{TREE_LIST}. Use 1263 @code{OVERLOAD} node is similar to a @code{TREE_LIST}. Use
1264 @code{OVL_CURRENT} to get the function associated with an 1264 @code{OVL_CURRENT} to get the function associated with an
1993 @tindex COMPOUND_LITERAL_EXPR 1993 @tindex COMPOUND_LITERAL_EXPR
1994 @tindex SAVE_EXPR 1994 @tindex SAVE_EXPR
1995 @tindex TARGET_EXPR 1995 @tindex TARGET_EXPR
1996 @tindex AGGR_INIT_EXPR 1996 @tindex AGGR_INIT_EXPR
1997 @tindex VA_ARG_EXPR 1997 @tindex VA_ARG_EXPR
1998 @tindex CHANGE_DYNAMIC_TYPE_EXPR
1999 @tindex OMP_PARALLEL 1998 @tindex OMP_PARALLEL
2000 @tindex OMP_FOR 1999 @tindex OMP_FOR
2001 @tindex OMP_SECTIONS 2000 @tindex OMP_SECTIONS
2002 @tindex OMP_SINGLE 2001 @tindex OMP_SINGLE
2003 @tindex OMP_SECTION 2002 @tindex OMP_SECTION
2111 2110
2112 @item FIXED_CST 2111 @item FIXED_CST
2113 2112
2114 These nodes represent fixed-point constants. The type of these constants 2113 These nodes represent fixed-point constants. The type of these constants
2115 is obtained with @code{TREE_TYPE}. @code{TREE_FIXED_CST_PTR} points to 2114 is obtained with @code{TREE_TYPE}. @code{TREE_FIXED_CST_PTR} points to
2116 to struct fixed_value; @code{TREE_FIXED_CST} returns the structure itself. 2115 a @code{struct fixed_value}; @code{TREE_FIXED_CST} returns the structure
2117 Struct fixed_value contains @code{data} with the size of two 2116 itself. @code{struct fixed_value} contains @code{data} with the size of two
2118 HOST_BITS_PER_WIDE_INT and @code{mode} as the associated fixed-point 2117 @code{HOST_BITS_PER_WIDE_INT} and @code{mode} as the associated fixed-point
2119 machine mode for @code{data}. 2118 machine mode for @code{data}.
2120 2119
2121 @item COMPLEX_CST 2120 @item COMPLEX_CST
2122 These nodes are used to represent complex number constants, that is a 2121 These nodes are used to represent complex number constants, that is a
2123 @code{__complex__} whose parts are constant nodes. The 2122 @code{__complex__} whose parts are constant nodes. The
2567 These nodes are used to represent GCC's statement-expression extension. 2566 These nodes are used to represent GCC's statement-expression extension.
2568 The statement-expression extension allows code like this: 2567 The statement-expression extension allows code like this:
2569 @smallexample 2568 @smallexample
2570 int f() @{ return (@{ int j; j = 3; j + 7; @}); @} 2569 int f() @{ return (@{ int j; j = 3; j + 7; @}); @}
2571 @end smallexample 2570 @end smallexample
2572 In other words, an sequence of statements may occur where a single 2571 In other words, a sequence of statements may occur where a single
2573 expression would normally appear. The @code{STMT_EXPR} node represents 2572 expression would normally appear. The @code{STMT_EXPR} node represents
2574 such an expression. The @code{STMT_EXPR_STMT} gives the statement 2573 such an expression. The @code{STMT_EXPR_STMT} gives the statement
2575 contained in the expression. The value of the expression is the value 2574 contained in the expression. The value of the expression is the value
2576 of the last sub-statement in the body. More precisely, the value is the 2575 of the last sub-statement in the body. More precisely, the value is the
2577 value computed by the last statement nested inside @code{BIND_EXPR}, 2576 value computed by the last statement nested inside @code{BIND_EXPR},
2634 particular order. However, in the middle end, fields must appear in 2633 particular order. However, in the middle end, fields must appear in
2635 declaration order. You should not assume that all fields will be 2634 declaration order. You should not assume that all fields will be
2636 represented. Unrepresented fields will be set to zero. 2635 represented. Unrepresented fields will be set to zero.
2637 2636
2638 @item COMPOUND_LITERAL_EXPR 2637 @item COMPOUND_LITERAL_EXPR
2639 @findex COMPOUND_LITERAL_EXPR_DECL_STMT 2638 @findex COMPOUND_LITERAL_EXPR_DECL_EXPR
2640 @findex COMPOUND_LITERAL_EXPR_DECL 2639 @findex COMPOUND_LITERAL_EXPR_DECL
2641 These nodes represent ISO C99 compound literals. The 2640 These nodes represent ISO C99 compound literals. The
2642 @code{COMPOUND_LITERAL_EXPR_DECL_STMT} is a @code{DECL_STMT} 2641 @code{COMPOUND_LITERAL_EXPR_DECL_EXPR} is a @code{DECL_EXPR}
2643 containing an anonymous @code{VAR_DECL} for 2642 containing an anonymous @code{VAR_DECL} for
2644 the unnamed object represented by the compound literal; the 2643 the unnamed object represented by the compound literal; the
2645 @code{DECL_INITIAL} of that @code{VAR_DECL} is a @code{CONSTRUCTOR} 2644 @code{DECL_INITIAL} of that @code{VAR_DECL} is a @code{CONSTRUCTOR}
2646 representing the brace-enclosed list of initializers in the compound 2645 representing the brace-enclosed list of initializers in the compound
2647 literal. That anonymous @code{VAR_DECL} can also be accessed directly 2646 literal. That anonymous @code{VAR_DECL} can also be accessed directly
2705 @item VA_ARG_EXPR 2704 @item VA_ARG_EXPR
2706 This node is used to implement support for the C/C++ variable argument-list 2705 This node is used to implement support for the C/C++ variable argument-list
2707 mechanism. It represents expressions like @code{va_arg (ap, type)}. 2706 mechanism. It represents expressions like @code{va_arg (ap, type)}.
2708 Its @code{TREE_TYPE} yields the tree representation for @code{type} and 2707 Its @code{TREE_TYPE} yields the tree representation for @code{type} and
2709 its sole argument yields the representation for @code{ap}. 2708 its sole argument yields the representation for @code{ap}.
2710
2711 @item CHANGE_DYNAMIC_TYPE_EXPR
2712 Indicates the special aliasing required by C++ placement new. It has
2713 two operands: a type and a location. It means that the dynamic type
2714 of the location is changing to be the specified type. The alias
2715 analysis code takes this into account when doing type based alias
2716 analysis.
2717 2709
2718 @item OMP_PARALLEL 2710 @item OMP_PARALLEL
2719 2711
2720 Represents @code{#pragma omp parallel [clause1 @dots{} clauseN]}. It 2712 Represents @code{#pragma omp parallel [clause1 @dots{} clauseN]}. It
2721 has four operands: 2713 has four operands:
2877 same clause @code{C} need to be represented as multiple @code{C} clauses 2869 same clause @code{C} need to be represented as multiple @code{C} clauses
2878 chained together. This facilitates adding new clauses during 2870 chained together. This facilitates adding new clauses during
2879 compilation. 2871 compilation.
2880 2872
2881 @item VEC_LSHIFT_EXPR 2873 @item VEC_LSHIFT_EXPR
2882 @item VEC_RSHIFT_EXPR 2874 @itemx VEC_RSHIFT_EXPR
2883 These nodes represent whole vector left and right shifts, respectively. 2875 These nodes represent whole vector left and right shifts, respectively.
2884 The first operand is the vector to shift; it will always be of vector type. 2876 The first operand is the vector to shift; it will always be of vector type.
2885 The second operand is an expression for the number of bits by which to 2877 The second operand is an expression for the number of bits by which to
2886 shift. Note that the result is undefined if the second operand is larger 2878 shift. Note that the result is undefined if the second operand is larger
2887 than or equal to the first operand's type size. 2879 than or equal to the first operand's type size.
2888 2880
2889 @item VEC_WIDEN_MULT_HI_EXPR 2881 @item VEC_WIDEN_MULT_HI_EXPR
2890 @item VEC_WIDEN_MULT_LO_EXPR 2882 @itemx VEC_WIDEN_MULT_LO_EXPR
2891 These nodes represent widening vector multiplication of the high and low 2883 These nodes represent widening vector multiplication of the high and low
2892 parts of the two input vectors, respectively. Their operands are vectors 2884 parts of the two input vectors, respectively. Their operands are vectors
2893 that contain the same number of elements (@code{N}) of the same integral type. 2885 that contain the same number of elements (@code{N}) of the same integral type.
2894 The result is a vector that contains half as many elements, of an integral type 2886 The result is a vector that contains half as many elements, of an integral type
2895 whose size is twice as wide. In the case of @code{VEC_WIDEN_MULT_HI_EXPR} the 2887 whose size is twice as wide. In the case of @code{VEC_WIDEN_MULT_HI_EXPR} the
2897 vector of @code{N/2} products. In the case of @code{VEC_WIDEN_MULT_LO_EXPR} the 2889 vector of @code{N/2} products. In the case of @code{VEC_WIDEN_MULT_LO_EXPR} the
2898 low @code{N/2} elements of the two vector are multiplied to produce the 2890 low @code{N/2} elements of the two vector are multiplied to produce the
2899 vector of @code{N/2} products. 2891 vector of @code{N/2} products.
2900 2892
2901 @item VEC_UNPACK_HI_EXPR 2893 @item VEC_UNPACK_HI_EXPR
2902 @item VEC_UNPACK_LO_EXPR 2894 @itemx VEC_UNPACK_LO_EXPR
2903 These nodes represent unpacking of the high and low parts of the input vector, 2895 These nodes represent unpacking of the high and low parts of the input vector,
2904 respectively. The single operand is a vector that contains @code{N} elements 2896 respectively. The single operand is a vector that contains @code{N} elements
2905 of the same integral or floating point type. The result is a vector 2897 of the same integral or floating point type. The result is a vector
2906 that contains half as many elements, of an integral or floating point type 2898 that contains half as many elements, of an integral or floating point type
2907 whose size is twice as wide. In the case of @code{VEC_UNPACK_HI_EXPR} the 2899 whose size is twice as wide. In the case of @code{VEC_UNPACK_HI_EXPR} the
2908 high @code{N/2} elements of the vector are extracted and widened (promoted). 2900 high @code{N/2} elements of the vector are extracted and widened (promoted).
2909 In the case of @code{VEC_UNPACK_LO_EXPR} the low @code{N/2} elements of the 2901 In the case of @code{VEC_UNPACK_LO_EXPR} the low @code{N/2} elements of the
2910 vector are extracted and widened (promoted). 2902 vector are extracted and widened (promoted).
2911 2903
2912 @item VEC_UNPACK_FLOAT_HI_EXPR 2904 @item VEC_UNPACK_FLOAT_HI_EXPR
2913 @item VEC_UNPACK_FLOAT_LO_EXPR 2905 @itemx VEC_UNPACK_FLOAT_LO_EXPR
2914 These nodes represent unpacking of the high and low parts of the input vector, 2906 These nodes represent unpacking of the high and low parts of the input vector,
2915 where the values are converted from fixed point to floating point. The 2907 where the values are converted from fixed point to floating point. The
2916 single operand is a vector that contains @code{N} elements of the same 2908 single operand is a vector that contains @code{N} elements of the same
2917 integral type. The result is a vector that contains half as many elements 2909 integral type. The result is a vector that contains half as many elements
2918 of a floating point type whose size is twice as wide. In the case of 2910 of a floating point type whose size is twice as wide. In the case of
2944 twice as many elements of an integral type whose size is half as wide. The 2936 twice as many elements of an integral type whose size is half as wide. The
2945 elements of the two vectors are merged (concatenated) to form the output 2937 elements of the two vectors are merged (concatenated) to form the output
2946 vector. 2938 vector.
2947 2939
2948 @item VEC_EXTRACT_EVEN_EXPR 2940 @item VEC_EXTRACT_EVEN_EXPR
2949 @item VEC_EXTRACT_ODD_EXPR 2941 @itemx VEC_EXTRACT_ODD_EXPR
2950 These nodes represent extracting of the even/odd elements of the two input 2942 These nodes represent extracting of the even/odd elements of the two input
2951 vectors, respectively. Their operands and result are vectors that contain the 2943 vectors, respectively. Their operands and result are vectors that contain the
2952 same number of elements of the same type. 2944 same number of elements of the same type.
2953 2945
2954 @item VEC_INTERLEAVE_HIGH_EXPR 2946 @item VEC_INTERLEAVE_HIGH_EXPR
2955 @item VEC_INTERLEAVE_LOW_EXPR 2947 @itemx VEC_INTERLEAVE_LOW_EXPR
2956 These nodes represent merging and interleaving of the high/low elements of the 2948 These nodes represent merging and interleaving of the high/low elements of the
2957 two input vectors, respectively. The operands and the result are vectors that 2949 two input vectors, respectively. The operands and the result are vectors that
2958 contain the same number of elements (@code{N}) of the same type. 2950 contain the same number of elements (@code{N}) of the same type.
2959 In the case of @code{VEC_INTERLEAVE_HIGH_EXPR}, the high @code{N/2} elements of 2951 In the case of @code{VEC_INTERLEAVE_HIGH_EXPR}, the high @code{N/2} elements of
2960 the first input vector are interleaved with the high @code{N/2} elements of the 2952 the first input vector are interleaved with the high @code{N/2} elements of the