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
explicitin C++20)Has_Dependent_Explicit
C++20: conditional
explicitwith dependent conditionIs_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:
constexprIs_Consteval
C++20:
consteval(impliesconstexpr)Is_Builtin
Gnu Builtin Functions
Is_Overriding
C++11:
overrideIs_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
_Noreturnor 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(...)OrNoexcept(False)Is_Throw_Nothing
Throw()OrNoexcept(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#
asyncmethodIs_Ref_Qualified
C++11: method with
&qualifierIs_RValue_Ref_Qualified
C++11: method with
&&qualifierIs_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__specifierIs_CUDA_Device
Set for CUDA functions with explicit or deduced
__device__specifier, including for__global__functionsIs_CUDA_Kernel
Set for CUDA functions with explicit
__global__specifier (kernels)