GNU Compiler Collection (GCC) Internals: C++ Expressions

Previous: Statements for C and C++, Up: C and C++ Trees [Contents][Index]

#### 11.10.6 C++ Expressions

This section describes expressions specific to the C and C++ front ends.

`TYPEID_EXPR`

  Used to represent a `typeid` expression.

`NEW_EXPR`
`VEC_NEW_EXPR`

  Used to represent a call to `new` and `new[]` respectively.

`DELETE_EXPR`
`VEC_DELETE_EXPR`

  Used to represent a call to `delete` and `delete[]` respectively.

`MEMBER_REF`

  Represents a reference to a member of a class.

`THROW_EXPR`

  Represents an instance of `throw` in the program. Operand 0, which is the expression to throw, may be `NULL_TREE`.

`AGGR_INIT_EXPR`

  An `AGGR_INIT_EXPR` represents the initialization as the return value of a function call, or as the result of a constructor. An `AGGR_INIT_EXPR` will only appear as a full-expression, or as the second operand of a `TARGET_EXPR`. `AGGR_INIT_EXPR`s have a representation similar to that of `CALL_EXPR`s. You can use the `AGGR_INIT_EXPR_FN` and `AGGR_INIT_EXPR_ARG` macros to access the function to call and the arguments to pass.

  If `AGGR_INIT_VIA_CTOR_P` holds of the `AGGR_INIT_EXPR`, then the initialization is via a constructor call. The address of the `AGGR_INIT_EXPR_SLOT` operand, which is always a `VAR_DECL`, is taken, and this value replaces the first argument in the argument list.

  In either case, the expression is void.