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