Ordinary_Constructor¶
- class Ordinary_Constructor (concrete, logical)¶
- Implemented interfaces:
implements Real_Routine_Interface
- Direct parents:
inherits Constructor
- Ancestor classes and implemented interfaces:
Constructor, Declarative_Node, General_Object_Interface, Local_Scope, Logical_IR_Root, Member, Member_Routine, Named_Entity, Parameters_Interface, Primary_Link_Object_Interface, Real_Entity_Interface, Real_Routine_Interface, Routine, Scope, Symbol, Template_Base_Interface, Template_Or_Member_Routine_Interface
Field
Kind
Type
Description
Routines (from Routine)
syntactic
set of class Routine
replace inherited field with default value
Return_Type (from Routine)
semantic
class Type
Always semantic reference as we move anonymous types into special part of the AST
Attributes (from Routine)
attribute
bitfield Logical_Routine_Attributes_Type
Bitfield of flags like
is_inline,is_constetc.Calling_Convention (from Routine)
attribute
esp. MS-specific conventions like
__stdcallFriend_Of (from Routine)
semantic
set of class Type
Classes this routine is a friend of (and can therefore access their members).
Basic_Blocks (from Routine)
syntactic
list of class CFG_Block
Basic_Blocks[0]is CFG_Entry_Block,Basic_Blocks[-1]is CFG_Exit_Block. The blocks/instructions appear approximately in syntactic order. Statements are emitted in exactly syntactic order; expressions within a statement will generate instructions in evaluation order.In
for (int i = 0; i < 10; i++) body;, the loop-expressioni++will appear after the loop body.In
f()->field = g();, the call tog()will appear before the call tof()according to the C++17 evaluation order.Code after a
goto(whether unreachable or reachable via label) will be placed directly after thegotoblock.For any statement/expression, all instructions from that stmt/expr will form a contiguous region (which may spread across multiple blocks), and will not be interleaved with the instructions from a different statement/expression. This makes it possible to use a pair of start/end edges to instructions to mark the whole region of code responsible, e.g., for the initialization of a variable.
The Basic_Blocks list does not contain the exceptional exit block or the coroutine destroy exit block – if these are present, they are stored in separate syntactic fields.
Exceptional_Exit_Block (from Routine)
syntactic
in case an exception propagates from within the routine
Coroutine_Destroy_Exit_Block (from Routine)
syntactic
coroutine destroy exit block syntactic Control_Tree_Root : class Control_Tree_Block; semantic Unreachable_Blocks : set of class CFG_Standard_Block; those with no predecessors (except the entry node); they could still be the target of a local computed goto
Return_Value (from Routine)
syntactic
class Return_Helper_Variable
the object which represents the return value, or NULL if none
Cuda_Architecture (from Routine)
attribute
builtin Byte
If non-zero, the CUDA device architecture for which the routine was compiled. E.g., a
__device__function compiled with-arch=compute_70has Cuda_Architecture=70. Host code has Cuda_Architecture=0.Nested_Scopes (from Local_Scope)
syntactic
list of class Local_Scope
Nested block and temporary scopes.
Helpers (from Local_Scope)
syntactic
list of class Helper_Variable
Temporary variables.
Usings (from Scope)
semantic
set of class Symbol
using <namespace>andusing <declaration>Types (from Scope)
syntactic
set of class Type
Variables (from Scope)
syntactic
set of class Variable
Concepts (from Scope)
syntactic
set of class Concept
Template_Composites (from Scope)
syntactic
set of interface Template_Composite_Type_Interface
Template_Routines (from Scope)
syntactic
set of interface Template_Routine_Interface
Parent (from Logical_IR_Root)
semantic
class Logical_IR_Root
Physical (from Logical_IR_Root)
semantic to physical
class Physical_IR_Root
Mangled_Trailing_Requires_Clause (from Template_Or_Member_Routine_Interface)
attribute
builtin String
Visibility (from Member)
attribute
enum Visibility_Type
Link_Flags (from Primary_Link_Object_Interface)
attribute
bitfield Link_Flags_Type
Component (from Primary_Link_Object_Interface)
attribute
builtin String
for local-to-library elements: name of DLL/
.sowhen linked (sealed) for unit-local constexpr variables: name of fileBase_Template (from Template_Base_Interface)
semantic
class Symbol
usually, a Template_Interface, but could also be a normal method/nested class inside a template
Template_Arguments (from Template_Base_Interface)
syntactic
list of class Template_Argument
Is_Partial_Specialization (from Template_Base_Interface)
attribute
builtin Boolean
Is_Full_Specialization (from Template_Base_Interface)
attribute
builtin Boolean
Is_Template_Instance (from Template_Base_Interface)
attribute
builtin Boolean
Parameters (from Parameters_Interface)
syntactic
list of class Parameter
Name (from Named_Entity)
attribute
builtin String