Logical_Routine_Attributes_Type

bitfield Logical_Routine_Attributes_Type

Attributes for routines in LIR

Field

Description

Is_Inline

semantically, i.e., either by keyword or in-class definition

Is_Const

Only For Methods

Is_Volatile

Only For Methods

Is_Virtual

semantically, i.e., inherited or explicitly specified

Is_Abstract

Only If Is_Virtual

Is_Explicit

For Constructors + Conversion Ops (also for dependent conditional explicit in C++20)

Has_Dependent_Explicit

C++20: conditional explicit with dependent condition

Is_Prototyped

Whether at least one decl/def specifies parameter types (i.e., at least one declaration is not K&R style).

Has_K_R_Definition

Whether the routine definition was an old-style K&R definition without prototype.

Is_Deleted

C++11 = delete;

Is_Defaulted

C++11 = default;

Is_User_Provided

A function is user-provided if it is user-declared and not explicitly defaulted or deleted on its first declaration.

Is_Trivial

trivial compiler-generated ctor/dtor

Is_Constexpr

C++11: constexpr

Is_Consteval

C++20: consteval (implies constexpr)

Is_Builtin

Gnu Builtin Functions

Is_Overriding

C++11: override

Is_Force_Inline

Ms Extension

Is_Extern

Is_Static

For Nonmember Functions (Storage Class)

Is_Dllimport

semantically, i.e., specified here or on earlier decl

Is_Dllexport

semantically, i.e., specified here or on earlier decl

Is_Noreturn

C11 _Noreturn or C++ [[noreturn]]

Address_Taken

Whether there exists code that takes the address of this routine.

Is_Interrupt

Interrupt Service Routine

Is_Overloaded

Other With Same Name In Same Scope

Is_Throw_Any

Throw(...) Or Noexcept(False)

Is_Throw_Nothing

Throw() Or Noexcept(True)

Is_Legacy_Throw

Whether at least one declaration uses the legacy throw() syntax (deprecated in C++11). If this bit is set but neither Is_Throw_Any/Is_Throw_Nothing are, the PIR stores a type-list of possible exceptions that might be thrown.

Is_Final

C++11

Is_Copy_Return

Return Value Optimization

Is_Async

C# async method

Is_Ref_Qualified

C++11: method with & qualifier

Is_RValue_Ref_Qualified

C++11: method with && qualifier

Is_Coroutine

C++20: coroutine

Is_Called

Whether there are any direct calls of this routine. This flag is set even if the call happens in a SFINAE “alternative universe”, where the call does not end up in the IR.

Is_CUDA_Host

Set for CUDA functions with explicit or deduced __host__ specifier

Is_CUDA_Device

Set for CUDA functions with explicit or deduced __device__ specifier, including for __global__ functions

Is_CUDA_Kernel

Set for CUDA functions with explicit __global__ specifier (kernels)