Object_Flags_Type

bitfield Object_Flags_Type

Field

Description

Address_Taken

True if address of object is taken somewhere.

var.Object_Flags.Address_Taken = any(
    op.The_Object == var
    for op in ir_graph.nodes_of_type('Address_Operand_Interface')
    if not op.is_of_type('Indirect_Operand')
)

Has_Definition

True if there is at least one direct write (besides initialization).

var.Object_Flags.Has_Definition = any(
    op.The_Object == var and op.Parent != var.Initialization
    for op in ir_graph.nodes_of_type('Writing_Operand_Interface')
    if not op.is_of_type('Indirect_Operand')
)

Is_Register

declared with register keyword

Has_Default

for parameters: default argument in some declaration?

Is_Constexpr

constexpr keyword from C++11 present?

Is_Constinit

constinit keyword from C++20 present?

Is_Member_Constant

nonstandard member constants, appear as static fields

Has_Constant_Value

variable can be treated as a compile-time constant even if it’s not constexpr (e.g., const int i = 42;)

Has_In_Class_Init

static data member with in-class initializer

Is_Optimized_Empty_Class

C++20 non-static data member with zero size

In_Discarded_Statement

declared in discarded statement

Has_Static_Init

variable has static initialization (zero-initialization or constant initialization); never set for local variables

Is_CUDA_Device

for CUDA __device__ variables (including __shared__, __constant__, and __managed__)

Is_CUDA_Shared

for CUDA __shared__ variables

Is_CUDA_Constant

for CUDA __constant__ variables

Is_CUDA_Managed

for CUDA __managed__ variables