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

Previous: Statements for C++, Up: C and C++ Trees

#### 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.