.. # This page is generated by doc/ASTReference.py when Sphinx starts. Do not edit it. 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 :ref:`INT:AST:Fields` page. .. graphviz:: 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] } .. _INT:AST:Function_Instantiation_Declaration: Iir_Kind_Function_Instantiation_Declaration =========================================== Format: ``Medium`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`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. * - :ref:`Generic_Chain ` - ``Field6`` - ``Iir`` - chain - — * - :ref:`Interface_Declaration_Chain ` - ``Field5`` - ``Iir`` - chain - — * - :ref:`Return_Type ` - ``Field1`` - ``Iir`` - ref - — * - :ref:`Uninstantiated_Subprogram_Name ` - ``Field7`` - ``Iir`` - owned - A signature or a simple name. * - :ref:`Generic_Map_Aspect_Chain ` - ``Field8`` - ``Iir`` - chain - Generic map aspect list. * - :ref:`Instance_Source_File ` - ``Field10`` - ``Source_File_Entry`` - owned - The created pseudo-file for relocating the instantiated nodes (generics and declarations). * - :ref:`Instance_Subprogram_Body ` - ``Field11`` - ``Iir`` - forward ref - The subprogram body corresponding to the subprogram declaration. * - :ref:`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. * - :ref:`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). * - :ref:`Foreign_Flag ` - ``Flag3`` - ``Boolean`` - owned - Get/Set the foreign flag of a declaration. TRUE if the declaration was decorated with the std.foreign attribute. * - :ref:`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. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. * - :ref:`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. * - :ref:`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. .. graphviz:: 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| Chain| Identifier| Subprogram_Hash| Generic_Chain| Interface_Declaration_Chain| Return_Type| Uninstantiated_Subprogram_Name| Generic_Map_Aspect_Chain| Instance_Source_File| Instance_Subprogram_Body| Overload_Number| Seen_Flag| Foreign_Flag| Visible_Flag| Use_Flag| Wait_State| 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] } .. _INT:AST:Procedure_Instantiation_Declaration: Iir_Kind_Procedure_Instantiation_Declaration ============================================ Format: ``Medium`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`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. * - :ref:`Generic_Chain ` - ``Field6`` - ``Iir`` - chain - — * - :ref:`Interface_Declaration_Chain ` - ``Field5`` - ``Iir`` - chain - — * - :ref:`Uninstantiated_Subprogram_Name ` - ``Field7`` - ``Iir`` - owned - A signature or a simple name. * - :ref:`Generic_Map_Aspect_Chain ` - ``Field8`` - ``Iir`` - chain - Generic map aspect list. * - :ref:`Instance_Source_File ` - ``Field10`` - ``Source_File_Entry`` - owned - The created pseudo-file for relocating the instantiated nodes (generics and declarations). * - :ref:`Instance_Subprogram_Body ` - ``Field11`` - ``Iir`` - forward ref - The subprogram body corresponding to the subprogram declaration. * - :ref:`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. * - :ref:`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). * - :ref:`Foreign_Flag ` - ``Flag3`` - ``Boolean`` - owned - Get/Set the foreign flag of a declaration. TRUE if the declaration was decorated with the std.foreign attribute. * - :ref:`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. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. * - :ref:`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. * - :ref:`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. .. graphviz:: 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| Chain| Identifier| Subprogram_Hash| Generic_Chain| Interface_Declaration_Chain| Uninstantiated_Subprogram_Name| Generic_Map_Aspect_Chain| Instance_Source_File| Instance_Subprogram_Body| Overload_Number| Seen_Flag| Foreign_Flag| Visible_Flag| Use_Flag| Wait_State| 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] }