is given by @code{TYPE_PRECISION}, as in the @code{INTEGER_TYPE} case.
@item COMPLEX_TYPE
-FIXME: The __complex__ extension is supported in G++. Document.
+Used to represent GCC builtin @code{__complex__} data types. The
+@code{TREE_TYPE} is the type of the real and imaginary parts.
@item ENUMERAL_TYPE
Used to represent an enumeration type. The @code{TYPE_PRECISION} gives
@findex tree_int_cst_lt
@findex tree_int_cst_equal
@tindex REAL_CST
+@tindex COMPLEX_CST
@tindex STRING_CST
@findex TREE_STRING_LENGTH
@findex TREE_STRING_POINTER
@tindex INDIRECT_REF
@tindex FIX_TRUNC_EXPR
@tindex FLOAT_EXPR
+@tindex COMPLEX_EXPR
+@tindex CONJ_EXPR
+@tindex REALPART_EXPR
+@tindex IMAGPART_EXPR
@tindex NOP_EXPR
@tindex CONVERT_EXPR
@tindex THROW_EXPR
FIXME: Talk about how to obtain representations of this constant, do
comparisons, and so forth.
+@item COMPLEX_CST
+These nodes are used to represent complex number constants, that is a
+@code{__complex__} whose parts are constant nodes. The
+@code{TREE_REALPART} and @code@TREE_IMAGPART} return the real and the
+imaginary parts respectively.
+
@item STRING_CST
These nodes represent string-constants. The @code{TREE_STRING_LENGTH}
returns the length of the string, as an @code{int}. The
FIXME: How is the operand supposed to be rounded? Is this dependent on
-mieee?
+@item COMPLEX_EXPR
+These nodes are used to represent complex numbers constructed from two
+expressions of the same (integer or real) type. The first operand is the
+real part and the second operand is the imaginary part.
+
+@item CONJ_EXPR
+These nodes represent the conjugate of their operand.
+
+@item REALPART_EXPR
+@item IMAGPART_EXPR
+These nodes represent respectively the real and the imaginary parts
+of complex numbers (their sole argument).
+
@item NON_LVALUE_EXPR
These nodes indicate that their one and only operand is not an lvalue.
A back-end can treat these identically to the single operand.