Subprogram Instantiation Declaration

The diagrams below draw one box per node kind, with one port per field. The edge colours say how a link is held; they are listed in full on the Fields page.

digraph { rankdir="LR" nodesep=0.1 node [shape=point width=0.06 color="#888a85"] edge [fontname="monospace" fontsize=10 minlen=3] l0a -> l0b [label="owned" color="#000000"] l1a -> l1b [label="ref" color="#3465a4" style=dashed] l2a -> l2b [label="maybe ref" color="#3465a4" style=dotted] l3a -> l3b [label="of ref" color="#3465a4" style=dashed] l4a -> l4b [label="of maybe ref" color="#3465a4" style=dotted] l5a -> l5b [label="forward ref" color="#f57900" style=dashed] l6a -> l6b [label="maybe forward ref" color="#f57900" style=dotted] l7a -> l7b [label="chain" color="#4e9a06"] l8a -> l8b [label="chain next" color="#4e9a06" style=bold] }

Iir_Kind_Function_Instantiation_Declaration

Format: Medium

Accessor

Field

Type

Access

Description

Parent

Field0

Iir

ref

Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop.

Chain

Field2

Iir

chain next

Identifier

Field3

Name_Id

owned

Get/Set the identifier of a declaration. Can also be used instead of get/set_label.

Subprogram_Hash

Field4

Iir_Int32

owned

Hash of a subprogram profile. This is used to speed up subprogram profile comparison, which is very often used by overload.

Generic_Chain

Field6

Iir

chain

Interface_Declaration_Chain

Field5

Iir

chain

Return_Type

Field1

Iir

ref

Uninstantiated_Subprogram_Name

Field7

Iir

owned

A signature or a simple name.

Generic_Map_Aspect_Chain

Field8

Iir

chain

Generic map aspect list.

Instance_Source_File

Field10

Source_File_Entry

owned

The created pseudo-file for relocating the instantiated nodes (generics and declarations).

Instance_Subprogram_Body

Field11

Iir

forward ref

The subprogram body corresponding to the subprogram declaration.

Overload_Number

Field12

Iir_Int32

owned

Several subprograms in a declarative region may have the same identifier. If the overload number is not 0, it is the rank of the subprogram. If the overload number is 0, then the identifier is not overloaded in the declarative region.

Seen_Flag

Flag1

Boolean

owned

Get/Set the seen flag. Used when the graph of callees is walked, to avoid infinite loops, since the graph is not a DAG (there may be cycles).

Foreign_Flag

Flag3

Boolean

owned

Get/Set the foreign flag of a declaration. TRUE if the declaration was decorated with the std.foreign attribute.

Visible_Flag

Flag4

Boolean

owned

Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished.

Use_Flag

Flag6

Boolean

owned

For a declaration: true if the declaration is used somewhere.

Wait_State

State1

Tri_State_Type

owned

Get/Set the wait state of the current subprogram or process. TRUE if it contains a wait statement, either directly or indirectly. FALSE if it doesn’t contain a wait statement. UNKNOWN if the wait status is not yet known.

Pure_Flag

Flag14

Boolean

owned

Get/Set the pure flag of a function. TRUE if the function is declared pure. FALSE if the function is declared impure.

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Function_Instantiation_Declaration" [style=filled fillcolor="#eeeeec" label="{Function_Instantiation_Declaration|{<Parent> Parent|<Chain> Chain|<Identifier> Identifier|<Subprogram_Hash> Subprogram_Hash|<Generic_Chain> Generic_Chain|<Interface_Declaration_Chain> Interface_Declaration_Chain|<Return_Type> Return_Type|<Uninstantiated_Subprogram_Name> Uninstantiated_Subprogram_Name|<Generic_Map_Aspect_Chain> Generic_Map_Aspect_Chain|<Instance_Source_File> Instance_Source_File|<Instance_Subprogram_Body> Instance_Subprogram_Body|<Overload_Number> Overload_Number|<Seen_Flag> Seen_Flag|<Foreign_Flag> Foreign_Flag|<Visible_Flag> Visible_Flag|<Use_Flag> Use_Flag|<Wait_State> Wait_State|<Pure_Flag> Pure_Flag}}"] "Function_Instantiation_Declaration__Parent" [shape=box label="Iir"] "Function_Instantiation_Declaration":Parent -> "Function_Instantiation_Declaration__Parent" [color="#3465a4" style=dashed] "Function_Instantiation_Declaration__Chain" [shape=box label="Iir"] "Function_Instantiation_Declaration":Chain -> "Function_Instantiation_Declaration__Chain" [color="#4e9a06" style=bold] "Function_Instantiation_Declaration__Generic_Chain" [shape=box label="Iir"] "Function_Instantiation_Declaration":Generic_Chain -> "Function_Instantiation_Declaration__Generic_Chain" [color="#4e9a06"] "Function_Instantiation_Declaration__Interface_Declaration_Chain" [shape=box label="Iir"] "Function_Instantiation_Declaration":Interface_Declaration_Chain -> "Function_Instantiation_Declaration__Interface_Declaration_Chain" [color="#4e9a06"] "Function_Instantiation_Declaration__Return_Type" [shape=box label="Iir"] "Function_Instantiation_Declaration":Return_Type -> "Function_Instantiation_Declaration__Return_Type" [color="#3465a4" style=dashed] "Function_Instantiation_Declaration__Uninstantiated_Subprogram_Name" [shape=box label="Iir"] "Function_Instantiation_Declaration":Uninstantiated_Subprogram_Name -> "Function_Instantiation_Declaration__Uninstantiated_Subprogram_Name" [color="#000000"] "Function_Instantiation_Declaration__Generic_Map_Aspect_Chain" [shape=box label="Iir"] "Function_Instantiation_Declaration":Generic_Map_Aspect_Chain -> "Function_Instantiation_Declaration__Generic_Map_Aspect_Chain" [color="#4e9a06"] "Function_Instantiation_Declaration__Instance_Subprogram_Body" [shape=box label="Iir"] "Function_Instantiation_Declaration":Instance_Subprogram_Body -> "Function_Instantiation_Declaration__Instance_Subprogram_Body" [color="#f57900" style=dashed] }

Iir_Kind_Procedure_Instantiation_Declaration

Format: Medium

Accessor

Field

Type

Access

Description

Parent

Field0

Iir

ref

Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop.

Chain

Field2

Iir

chain next

Identifier

Field3

Name_Id

owned

Get/Set the identifier of a declaration. Can also be used instead of get/set_label.

Subprogram_Hash

Field4

Iir_Int32

owned

Hash of a subprogram profile. This is used to speed up subprogram profile comparison, which is very often used by overload.

Generic_Chain

Field6

Iir

chain

Interface_Declaration_Chain

Field5

Iir

chain

Uninstantiated_Subprogram_Name

Field7

Iir

owned

A signature or a simple name.

Generic_Map_Aspect_Chain

Field8

Iir

chain

Generic map aspect list.

Instance_Source_File

Field10

Source_File_Entry

owned

The created pseudo-file for relocating the instantiated nodes (generics and declarations).

Instance_Subprogram_Body

Field11

Iir

forward ref

The subprogram body corresponding to the subprogram declaration.

Overload_Number

Field12

Iir_Int32

owned

Several subprograms in a declarative region may have the same identifier. If the overload number is not 0, it is the rank of the subprogram. If the overload number is 0, then the identifier is not overloaded in the declarative region.

Seen_Flag

Flag1

Boolean

owned

Get/Set the seen flag. Used when the graph of callees is walked, to avoid infinite loops, since the graph is not a DAG (there may be cycles).

Foreign_Flag

Flag3

Boolean

owned

Get/Set the foreign flag of a declaration. TRUE if the declaration was decorated with the std.foreign attribute.

Visible_Flag

Flag4

Boolean

owned

Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished.

Use_Flag

Flag6

Boolean

owned

For a declaration: true if the declaration is used somewhere.

Wait_State

State1

Tri_State_Type

owned

Get/Set the wait state of the current subprogram or process. TRUE if it contains a wait statement, either directly or indirectly. FALSE if it doesn’t contain a wait statement. UNKNOWN if the wait status is not yet known.

Suspend_Flag

Flag11

Boolean

owned

Set on wait, procedure call and composite statements when there is a sub-statement that can suspend a procedure or a process. Also set on procedure declaration. Note that the flag is conservative: it must be true if the node contains directly or indirectly a wait statement, but need not to be false otherwise.

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Procedure_Instantiation_Declaration" [style=filled fillcolor="#eeeeec" label="{Procedure_Instantiation_Declaration|{<Parent> Parent|<Chain> Chain|<Identifier> Identifier|<Subprogram_Hash> Subprogram_Hash|<Generic_Chain> Generic_Chain|<Interface_Declaration_Chain> Interface_Declaration_Chain|<Uninstantiated_Subprogram_Name> Uninstantiated_Subprogram_Name|<Generic_Map_Aspect_Chain> Generic_Map_Aspect_Chain|<Instance_Source_File> Instance_Source_File|<Instance_Subprogram_Body> Instance_Subprogram_Body|<Overload_Number> Overload_Number|<Seen_Flag> Seen_Flag|<Foreign_Flag> Foreign_Flag|<Visible_Flag> Visible_Flag|<Use_Flag> Use_Flag|<Wait_State> Wait_State|<Suspend_Flag> Suspend_Flag}}"] "Procedure_Instantiation_Declaration__Parent" [shape=box label="Iir"] "Procedure_Instantiation_Declaration":Parent -> "Procedure_Instantiation_Declaration__Parent" [color="#3465a4" style=dashed] "Procedure_Instantiation_Declaration__Chain" [shape=box label="Iir"] "Procedure_Instantiation_Declaration":Chain -> "Procedure_Instantiation_Declaration__Chain" [color="#4e9a06" style=bold] "Procedure_Instantiation_Declaration__Generic_Chain" [shape=box label="Iir"] "Procedure_Instantiation_Declaration":Generic_Chain -> "Procedure_Instantiation_Declaration__Generic_Chain" [color="#4e9a06"] "Procedure_Instantiation_Declaration__Interface_Declaration_Chain" [shape=box label="Iir"] "Procedure_Instantiation_Declaration":Interface_Declaration_Chain -> "Procedure_Instantiation_Declaration__Interface_Declaration_Chain" [color="#4e9a06"] "Procedure_Instantiation_Declaration__Uninstantiated_Subprogram_Name" [shape=box label="Iir"] "Procedure_Instantiation_Declaration":Uninstantiated_Subprogram_Name -> "Procedure_Instantiation_Declaration__Uninstantiated_Subprogram_Name" [color="#000000"] "Procedure_Instantiation_Declaration__Generic_Map_Aspect_Chain" [shape=box label="Iir"] "Procedure_Instantiation_Declaration":Generic_Map_Aspect_Chain -> "Procedure_Instantiation_Declaration__Generic_Map_Aspect_Chain" [color="#4e9a06"] "Procedure_Instantiation_Declaration__Instance_Subprogram_Body" [shape=box label="Iir"] "Procedure_Instantiation_Declaration":Instance_Subprogram_Body -> "Procedure_Instantiation_Declaration__Instance_Subprogram_Body" [color="#f57900" style=dashed] }