Direct_Dynamic_Array_Element_Address_Operand

class Direct_Dynamic_Array_Element_Address_Operand (concrete, logical)

Address of an element of an array : &obj[index].

Implemented interfaces:
Direct parents:
Ancestor classes and implemented interfaces:

Address_Operand_Interface, Array_Element_Operand_Interface, Direct_Array_Element_Operand, Direct_Dynamic_Array_Element_Operand, Direct_Operand, Direct_Partial_Operand, Dynamic_Array_Element_Operand_Interface, Execution_Node, Logical_IR_Root, Operand, Partial_Operand_Interface, Reading_Or_Address_Operand_Interface

Field

Kind

Type

Description

The_Object (from Operand)

semantic

interface General_Object_Interface

Affected object (direct case) or pointer (indirect case). For address operands, this can also be a routine. WARNING: because the meaning of this field is drastically different between direct operands and indirect operands, it is usually wrong to access this field without a preceding check of operand type!

Its_Type (from Operand)

semantic

class Type

The type of the operand. WARNING: For address operands, this field returns the pointed-to-type. That is, for int i, the operand &i will report Its_Type=int. Code using this field must check the read/write/address kind to avoid bugs!

WARNING: For Field_Operand_Interface and Pointer_To_Member_Operand_Interface accesses, this is the declared type of the accessed member. Qualifiers (const, volatile) that the access inherits from an enclosing object are not part of it: for volatile struct S s;, the Direct_Field_Operand s.field has the declared type of field, although the access is volatile (C11 6.5.2.3, C++ [expr.ref]). Array elements are not affected, since qualifiers of an array type are already normalized onto the element type.

Parent (from Logical_IR_Root)

semantic

class Logical_IR_Root

Physical (from Logical_IR_Root)

semantic to physical

class Physical_IR_Root

Index (from Dynamic_Array_Element_Operand_Interface)

semantic

class Object