diff options
author | Tristan Gingold <tgingold@free.fr> | 2017-07-02 05:45:48 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2017-07-02 05:45:48 +0200 |
commit | b66b6aca18b2a7ce55d88ad3ee0c5aa4c721a3f5 (patch) | |
tree | 6efb8dd71cc6419ce51ad752adeecc4fc03a5b5b /src/vhdl | |
parent | 36259be746ad74a5abc610c5534856ae37a35ee2 (diff) | |
download | ghdl-b66b6aca18b2a7ce55d88ad3ee0c5aa4c721a3f5.tar.gz ghdl-b66b6aca18b2a7ce55d88ad3ee0c5aa4c721a3f5.tar.bz2 ghdl-b66b6aca18b2a7ce55d88ad3ee0c5aa4c721a3f5.zip |
remove build_reference_decl, add maybe_ref to condition and target.
Diffstat (limited to 'src/vhdl')
-rw-r--r-- | src/vhdl/canon.adb | 16 | ||||
-rw-r--r-- | src/vhdl/iirs.ads | 34 | ||||
-rw-r--r-- | src/vhdl/iirs_utils.adb | 13 | ||||
-rw-r--r-- | src/vhdl/iirs_utils.ads | 7 | ||||
-rw-r--r-- | src/vhdl/nodes_meta.adb | 548 |
5 files changed, 333 insertions, 285 deletions
diff --git a/src/vhdl/canon.adb b/src/vhdl/canon.adb index f87383e34..a25582c65 100644 --- a/src/vhdl/canon.adb +++ b/src/vhdl/canon.adb @@ -1325,9 +1325,8 @@ package body Canon is Set_Sequential_Statement_Chain (Proc, If_Stmt); Location_Copy (If_Stmt, Stmt); Canon_Extract_Sensitivity (Get_Guard (Stmt), Sensitivity_List, False); - Set_Condition - (If_Stmt, Build_Reference_Decl (Get_Guard (Stmt), If_Stmt)); - Set_Guard (Stmt, Null_Iir); + Set_Condition (If_Stmt, Get_Guard (Stmt)); + Set_Is_Ref (If_Stmt, True); Chain := If_Stmt; declare @@ -1346,7 +1345,8 @@ package body Canon is Create_Iir (Iir_Kind_Simple_Signal_Assignment_Statement); Location_Copy (Dis_Stmt, Stmt); Set_Parent (Dis_Stmt, If_Stmt); - Set_Target (Dis_Stmt, Build_Reference_Decl (Target, Dis_Stmt)); + Set_Target (Dis_Stmt, Target); + Set_Is_Ref (Dis_Stmt, True); Set_Sequential_Statement_Chain (Else_Clause, Dis_Stmt); -- XX Set_Waveform_Chain (Dis_Stmt, Null_Iir); @@ -1445,7 +1445,6 @@ package body Canon is Is_First : Boolean) return Iir is - Target : Iir; Stmt : Iir; Sensitivity_List : Iir_List; begin @@ -1469,11 +1468,10 @@ package body Canon is -- target <= [ delay_mechanism ] waveform_element1, -- waveform_element2, ..., waveform_elementN; Stmt := Create_Iir (Iir_Kind_Simple_Signal_Assignment_Statement); - Target := Get_Target (Orig_Stmt); + Set_Target (Stmt, Get_Target (Orig_Stmt)); if not Is_First then - Target := Build_Reference_Decl (Target, Orig_Stmt); + Set_Is_Ref (Stmt, True); end if; - Set_Target (Stmt, Target); if Proc /= Null_Iir then Sensitivity_List := Get_Sensitivity_List (Proc); Extract_Waveform_Sensitivity (Waveform_Chain, Sensitivity_List); @@ -1538,7 +1536,7 @@ package body Canon is -- Canon waveform. Wf := Get_Waveform_Chain (Cond_Wf); Wf := Canon_Wave_Transform - (Conc_Stmt, Wf, Proc, Cond_Wf = Cond_Wf_Chain); + (Conc_Stmt, Wf, Proc, False); -- Cond_Wf = Cond_Wf_Chain); if Expr = Null_Iir and Cond_Wf = Cond_Wf_Chain then -- A conditional assignment that is in fact a simple one. Usual diff --git a/src/vhdl/iirs.ads b/src/vhdl/iirs.ads index e82980130..f8fbed93f 100644 --- a/src/vhdl/iirs.ads +++ b/src/vhdl/iirs.ads @@ -490,6 +490,8 @@ package Iirs is -- Get/Set_Waveform_Chain (Field5) -- -- Get/Set_Chain (Field2) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Conditional_Expression (Short) -- LRM08 10.5.3 @@ -503,6 +505,8 @@ package Iirs is -- Get/Set_Expression (Field5) -- -- Get/Set_Chain (Field2) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Choice_By_Others (Short) -- Iir_Kind_Choice_By_None (Short) @@ -2716,6 +2720,8 @@ package Iirs is -- -- True if the target of the assignment is guarded -- Get/Set_Guarded_Target_State (State1) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Sensitized_Process_Statement (Medium) -- Iir_Kind_Process_Statement (Medium) @@ -2731,6 +2737,10 @@ package Iirs is -- -- Get/Set_Attribute_Value_Chain (Field4) -- + -- The concurrent statement at the origin of that process. This is + -- Null_Iir for a user process. + -- Get/Set_Process_Origin (Field8) + -- -- Get/Set_Sequential_Statement_Chain (Field5) -- -- Only for Iir_Kind_Sensitized_Process_Statement: @@ -2738,10 +2748,6 @@ package Iirs is -- -- Get/Set_Callees_List (Field7) -- - -- The concurrent statement at the origin of that process. This is - -- Null_Iir for a user process. - -- Get/Set_Process_Origin (Field8) - -- -- Get/Set_Wait_State (State1) -- -- Get/Set_Seen_Flag (Flag1) @@ -2982,6 +2988,8 @@ package Iirs is -- Get/Set_Generate_Else_Clause (Field5) -- -- Get/Set_Visible_Flag (Flag4) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_If_Generate_Statement (Short) -- @@ -3006,6 +3014,8 @@ package Iirs is -- Get/Set_End_Has_Reserved_Id (Flag8) -- -- Get/Set_End_Has_Identifier (Flag9) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Case_Generate_Statement (Short) -- @@ -3091,6 +3101,8 @@ package Iirs is -- -- Only for Iir_Kind_If_Statement: -- Get/Set_Suspend_Flag (Flag11) + -- + -- Get/Set_Is_Ref (Flag12) -- LRM08 10.10 Loop statement / LRM93 8.9 -- @@ -3147,6 +3159,8 @@ package Iirs is -- Get/Set_End_Has_Identifier (Flag9) -- -- Get/Set_Suspend_Flag (Flag11) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Exit_Statement (Short) -- Iir_Kind_Next_Statement (Short) @@ -3173,6 +3187,8 @@ package Iirs is -- Get/Set_Loop_Label (Field5) -- -- Get/Set_Visible_Flag (Flag4) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Simple_Signal_Assignment_Statement (Short) -- Iir_Kind_Conditional_Signal_Assignment_Statement (Short) @@ -3211,6 +3227,8 @@ package Iirs is -- -- True if the target of the assignment is guarded -- Get/Set_Guarded_Target_State (State1) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Variable_Assignment_Statement (Short) -- @@ -3226,6 +3244,8 @@ package Iirs is -- Get/Set_Expression (Field5) -- -- Get/Set_Visible_Flag (Flag4) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Conditional_Variable_Assignment_Statement (Short) -- @@ -3241,6 +3261,8 @@ package Iirs is -- Get/Set_Conditional_Expression (Field5) -- -- Get/Set_Visible_Flag (Flag4) + -- + -- Get/Set_Is_Ref (Flag12) -- Iir_Kind_Assertion_Statement (Short) -- @@ -6547,7 +6569,7 @@ package Iirs is function Get_Through_Type (Def : Iir) return Iir; procedure Set_Through_Type (Def : Iir; Atype : Iir); - -- Field: Field1 + -- Field: Field1 Maybe_Ref function Get_Target (Target : Iir) return Iir; procedure Set_Target (Target : Iir; Atarget : Iir); @@ -6853,7 +6875,7 @@ package Iirs is -- Condition of a conditional_waveform, if_statement, elsif, -- while_loop_statement, next_statement or exit_statement. - -- Field: Field1 + -- Field: Field1 Maybe_Ref function Get_Condition (Target : Iir) return Iir; procedure Set_Condition (Target : Iir; Condition : Iir); diff --git a/src/vhdl/iirs_utils.adb b/src/vhdl/iirs_utils.adb index c8be11e75..ab4c8831d 100644 --- a/src/vhdl/iirs_utils.adb +++ b/src/vhdl/iirs_utils.adb @@ -974,23 +974,16 @@ package body Iirs_Utils is is Res : Iir; begin + pragma Assert (Get_Kind (Name) in Iir_Kinds_Denoting_Name); + Res := Create_Iir (Iir_Kind_Reference_Name); Location_Copy (Res, Name); Set_Referenced_Name (Res, Name); + Set_Is_Forward_Ref (Res, True); Set_Named_Entity (Res, Get_Named_Entity (Name)); return Res; end Build_Reference_Name; - function Build_Reference_Decl (Decl : Iir; Loc : Iir) return Iir - is - Res : Iir; - begin - Res := Create_Iir (Iir_Kind_Reference_Name); - Location_Copy (Res, Loc); - Set_Named_Entity (Res, Decl); - return Res; - end Build_Reference_Decl; - function Strip_Reference_Name (N : Iir) return Iir is begin if Get_Kind (N) = Iir_Kind_Reference_Name then diff --git a/src/vhdl/iirs_utils.ads b/src/vhdl/iirs_utils.ads index e5b6b6842..02ed90b22 100644 --- a/src/vhdl/iirs_utils.ads +++ b/src/vhdl/iirs_utils.ads @@ -192,11 +192,12 @@ package Iirs_Utils is function Build_Simple_Name (Ref : Iir; Loc : Iir) return Iir; -- Create a name that referenced the same named entity as NAME. + -- + -- This is mainly used by canon, when there is a need to reference an + -- existing name. In some cases, it is not possible to use the name, + -- because it is already owned. function Build_Reference_Name (Name : Iir) return Iir; - -- Create a reference to a declaration (or aggregate). - function Build_Reference_Decl (Decl : Iir; Loc : Iir) return Iir; - -- If N is a reference_name, return the corresponding node, otherwise -- return N. function Strip_Reference_Name (N : Iir) return Iir; diff --git a/src/vhdl/nodes_meta.adb b/src/vhdl/nodes_meta.adb index 7835abcd7..592fe37bd 100644 --- a/src/vhdl/nodes_meta.adb +++ b/src/vhdl/nodes_meta.adb @@ -1874,7 +1874,7 @@ package body Nodes_Meta is when Field_Through_Type => return Attr_None; when Field_Target => - return Attr_None; + return Attr_Maybe_Ref; when Field_Waveform_Chain => return Attr_Chain; when Field_Guard => @@ -1988,7 +1988,7 @@ package body Nodes_Meta is when Field_Generate_Else_Clause => return Attr_None; when Field_Condition => - return Attr_None; + return Attr_Maybe_Ref; when Field_Else_Clause => return Attr_None; when Field_Parameter_Specification => @@ -2302,10 +2302,12 @@ package body Nodes_Meta is Field_Time, Field_Chain, -- Iir_Kind_Conditional_Waveform + Field_Is_Ref, Field_Condition, Field_Waveform_Chain, Field_Chain, -- Iir_Kind_Conditional_Expression + Field_Is_Ref, Field_Condition, Field_Expression, Field_Chain, @@ -3634,10 +3636,10 @@ package body Nodes_Meta is Field_Declaration_Chain, Field_Chain, Field_Attribute_Value_Chain, + Field_Process_Origin, Field_Sequential_Statement_Chain, Field_Sensitivity_List, Field_Callees_List, - Field_Process_Origin, -- Iir_Kind_Process_Statement Field_Label, Field_Seen_Flag, @@ -3656,12 +3658,13 @@ package body Nodes_Meta is Field_Declaration_Chain, Field_Chain, Field_Attribute_Value_Chain, + Field_Process_Origin, Field_Sequential_Statement_Chain, Field_Callees_List, - Field_Process_Origin, -- Iir_Kind_Concurrent_Simple_Signal_Assignment Field_Label, Field_Delay_Mechanism, + Field_Is_Ref, Field_Postponed_Flag, Field_Visible_Flag, Field_Guarded_Target_State, @@ -3674,6 +3677,7 @@ package body Nodes_Meta is -- Iir_Kind_Concurrent_Conditional_Signal_Assignment Field_Label, Field_Delay_Mechanism, + Field_Is_Ref, Field_Postponed_Flag, Field_Visible_Flag, Field_Guarded_Target_State, @@ -3686,6 +3690,7 @@ package body Nodes_Meta is -- Iir_Kind_Concurrent_Selected_Signal_Assignment Field_Label, Field_Delay_Mechanism, + Field_Is_Ref, Field_Postponed_Flag, Field_Visible_Flag, Field_Guarded_Target_State, @@ -3757,6 +3762,7 @@ package body Nodes_Meta is Field_Block_Block_Configuration, -- Iir_Kind_If_Generate_Statement Field_Label, + Field_Is_Ref, Field_Visible_Flag, Field_Is_Within_Flag, Field_End_Has_Reserved_Id, @@ -3823,6 +3829,7 @@ package body Nodes_Meta is Field_Attribute_Value_Chain, Field_Concurrent_Statement_Chain, -- Iir_Kind_If_Generate_Else_Clause + Field_Is_Ref, Field_Visible_Flag, Field_Parent, Field_Condition, @@ -3831,6 +3838,7 @@ package body Nodes_Meta is -- Iir_Kind_Simple_Signal_Assignment_Statement Field_Label, Field_Delay_Mechanism, + Field_Is_Ref, Field_Visible_Flag, Field_Guarded_Target_State, Field_Parent, @@ -3841,6 +3849,7 @@ package body Nodes_Meta is -- Iir_Kind_Conditional_Signal_Assignment_Statement Field_Label, Field_Delay_Mechanism, + Field_Is_Ref, Field_Visible_Flag, Field_Guarded_Target_State, Field_Parent, @@ -3851,6 +3860,7 @@ package body Nodes_Meta is -- Iir_Kind_Selected_Waveform_Assignment_Statement Field_Label, Field_Delay_Mechanism, + Field_Is_Ref, Field_Visible_Flag, Field_Guarded_Target_State, Field_Parent, @@ -3890,6 +3900,7 @@ package body Nodes_Meta is Field_Sensitivity_List, -- Iir_Kind_Variable_Assignment_Statement Field_Label, + Field_Is_Ref, Field_Visible_Flag, Field_Parent, Field_Target, @@ -3897,6 +3908,7 @@ package body Nodes_Meta is Field_Expression, -- Iir_Kind_Conditional_Variable_Assignment_Statement Field_Label, + Field_Is_Ref, Field_Visible_Flag, Field_Parent, Field_Target, @@ -3922,6 +3934,7 @@ package body Nodes_Meta is -- Iir_Kind_While_Loop_Statement Field_Label, Field_Suspend_Flag, + Field_Is_Ref, Field_Visible_Flag, Field_End_Has_Identifier, Field_Parent, @@ -3930,6 +3943,7 @@ package body Nodes_Meta is Field_Sequential_Statement_Chain, -- Iir_Kind_Next_Statement Field_Label, + Field_Is_Ref, Field_Visible_Flag, Field_Parent, Field_Condition, @@ -3937,6 +3951,7 @@ package body Nodes_Meta is Field_Loop_Label, -- Iir_Kind_Exit_Statement Field_Label, + Field_Is_Ref, Field_Visible_Flag, Field_Parent, Field_Condition, @@ -3961,6 +3976,7 @@ package body Nodes_Meta is -- Iir_Kind_If_Statement Field_Label, Field_Suspend_Flag, + Field_Is_Ref, Field_Visible_Flag, Field_End_Has_Identifier, Field_Parent, @@ -3969,6 +3985,7 @@ package body Nodes_Meta is Field_Else_Clause, Field_Chain, -- Iir_Kind_Elsif + Field_Is_Ref, Field_End_Has_Identifier, Field_Parent, Field_Condition, @@ -4361,257 +4378,257 @@ package body Nodes_Meta is Iir_Kind_Overflow_Literal => 87, Iir_Kind_Unaffected_Waveform => 88, Iir_Kind_Waveform_Element => 91, - Iir_Kind_Conditional_Waveform => 94, - Iir_Kind_Conditional_Expression => 97, - Iir_Kind_Association_Element_By_Expression => 104, - Iir_Kind_Association_Element_By_Individual => 112, - Iir_Kind_Association_Element_Open => 117, - Iir_Kind_Association_Element_Package => 122, - Iir_Kind_Association_Element_Type => 129, - Iir_Kind_Association_Element_Subprogram => 134, - Iir_Kind_Choice_By_Range => 141, - Iir_Kind_Choice_By_Expression => 148, - Iir_Kind_Choice_By_Others => 153, - Iir_Kind_Choice_By_None => 158, - Iir_Kind_Choice_By_Name => 164, - Iir_Kind_Entity_Aspect_Entity => 166, - Iir_Kind_Entity_Aspect_Configuration => 167, - Iir_Kind_Entity_Aspect_Open => 167, - Iir_Kind_Block_Configuration => 173, - Iir_Kind_Block_Header => 177, - Iir_Kind_Component_Configuration => 184, - Iir_Kind_Binding_Indication => 188, - Iir_Kind_Entity_Class => 190, - Iir_Kind_Attribute_Value => 198, - Iir_Kind_Signature => 201, - Iir_Kind_Aggregate_Info => 208, - Iir_Kind_Procedure_Call => 212, - Iir_Kind_Record_Element_Constraint => 219, - Iir_Kind_Array_Element_Resolution => 221, - Iir_Kind_Record_Resolution => 222, - Iir_Kind_Record_Element_Resolution => 225, - Iir_Kind_Attribute_Specification => 233, - Iir_Kind_Disconnection_Specification => 239, - Iir_Kind_Configuration_Specification => 245, - Iir_Kind_Access_Type_Definition => 253, - Iir_Kind_Incomplete_Type_Definition => 261, - Iir_Kind_Interface_Type_Definition => 268, - Iir_Kind_File_Type_Definition => 275, - Iir_Kind_Protected_Type_Declaration => 284, - Iir_Kind_Record_Type_Definition => 294, - Iir_Kind_Array_Type_Definition => 306, - Iir_Kind_Array_Subtype_Definition => 321, - Iir_Kind_Record_Subtype_Definition => 332, - Iir_Kind_Access_Subtype_Definition => 340, - Iir_Kind_Physical_Subtype_Definition => 350, - Iir_Kind_Floating_Subtype_Definition => 361, - Iir_Kind_Integer_Subtype_Definition => 371, - Iir_Kind_Enumeration_Subtype_Definition => 381, - Iir_Kind_Enumeration_Type_Definition => 391, - Iir_Kind_Integer_Type_Definition => 399, - Iir_Kind_Floating_Type_Definition => 407, - Iir_Kind_Physical_Type_Definition => 418, - Iir_Kind_Range_Expression => 426, - Iir_Kind_Protected_Type_Body => 433, - Iir_Kind_Wildcard_Type_Definition => 438, - Iir_Kind_Subtype_Definition => 443, - Iir_Kind_Scalar_Nature_Definition => 447, - Iir_Kind_Overload_List => 448, - Iir_Kind_Type_Declaration => 455, - Iir_Kind_Anonymous_Type_Declaration => 461, - Iir_Kind_Subtype_Declaration => 468, - Iir_Kind_Nature_Declaration => 474, - Iir_Kind_Subnature_Declaration => 480, - Iir_Kind_Package_Declaration => 494, - Iir_Kind_Package_Instantiation_Declaration => 507, - Iir_Kind_Package_Body => 515, - Iir_Kind_Configuration_Declaration => 524, - Iir_Kind_Entity_Declaration => 536, - Iir_Kind_Architecture_Body => 548, - Iir_Kind_Context_Declaration => 554, - Iir_Kind_Package_Header => 556, - Iir_Kind_Unit_Declaration => 564, - Iir_Kind_Library_Declaration => 571, - Iir_Kind_Component_Declaration => 581, - Iir_Kind_Attribute_Declaration => 588, - Iir_Kind_Group_Template_Declaration => 594, - Iir_Kind_Group_Declaration => 601, - Iir_Kind_Element_Declaration => 609, - Iir_Kind_Non_Object_Alias_Declaration => 617, - Iir_Kind_Psl_Declaration => 625, - Iir_Kind_Psl_Endpoint_Declaration => 639, - Iir_Kind_Terminal_Declaration => 645, - Iir_Kind_Free_Quantity_Declaration => 654, - Iir_Kind_Across_Quantity_Declaration => 666, - Iir_Kind_Through_Quantity_Declaration => 678, - Iir_Kind_Enumeration_Literal => 689, - Iir_Kind_Function_Declaration => 714, - Iir_Kind_Procedure_Declaration => 738, - Iir_Kind_Function_Body => 748, - Iir_Kind_Procedure_Body => 759, - Iir_Kind_Object_Alias_Declaration => 770, - Iir_Kind_File_Declaration => 784, - Iir_Kind_Guard_Signal_Declaration => 797, - Iir_Kind_Signal_Declaration => 814, - Iir_Kind_Variable_Declaration => 827, - Iir_Kind_Constant_Declaration => 841, - Iir_Kind_Iterator_Declaration => 852, - Iir_Kind_Interface_Constant_Declaration => 868, - Iir_Kind_Interface_Variable_Declaration => 884, - Iir_Kind_Interface_Signal_Declaration => 905, - Iir_Kind_Interface_File_Declaration => 921, - Iir_Kind_Interface_Type_Declaration => 931, - Iir_Kind_Interface_Package_Declaration => 942, - Iir_Kind_Interface_Function_Declaration => 959, - Iir_Kind_Interface_Procedure_Declaration => 972, - Iir_Kind_Signal_Attribute_Declaration => 975, - Iir_Kind_Identity_Operator => 979, - Iir_Kind_Negation_Operator => 983, - Iir_Kind_Absolute_Operator => 987, - Iir_Kind_Not_Operator => 991, - Iir_Kind_Condition_Operator => 995, - Iir_Kind_Reduction_And_Operator => 999, - Iir_Kind_Reduction_Or_Operator => 1003, - Iir_Kind_Reduction_Nand_Operator => 1007, - Iir_Kind_Reduction_Nor_Operator => 1011, - Iir_Kind_Reduction_Xor_Operator => 1015, - Iir_Kind_Reduction_Xnor_Operator => 1019, - Iir_Kind_And_Operator => 1024, - Iir_Kind_Or_Operator => 1029, - Iir_Kind_Nand_Operator => 1034, - Iir_Kind_Nor_Operator => 1039, - Iir_Kind_Xor_Operator => 1044, - Iir_Kind_Xnor_Operator => 1049, - Iir_Kind_Equality_Operator => 1054, - Iir_Kind_Inequality_Operator => 1059, - Iir_Kind_Less_Than_Operator => 1064, - Iir_Kind_Less_Than_Or_Equal_Operator => 1069, - Iir_Kind_Greater_Than_Operator => 1074, - Iir_Kind_Greater_Than_Or_Equal_Operator => 1079, - Iir_Kind_Match_Equality_Operator => 1084, - Iir_Kind_Match_Inequality_Operator => 1089, - Iir_Kind_Match_Less_Than_Operator => 1094, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1099, - Iir_Kind_Match_Greater_Than_Operator => 1104, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1109, - Iir_Kind_Sll_Operator => 1114, - Iir_Kind_Sla_Operator => 1119, - Iir_Kind_Srl_Operator => 1124, - Iir_Kind_Sra_Operator => 1129, - Iir_Kind_Rol_Operator => 1134, - Iir_Kind_Ror_Operator => 1139, - Iir_Kind_Addition_Operator => 1144, - Iir_Kind_Substraction_Operator => 1149, - Iir_Kind_Concatenation_Operator => 1154, - Iir_Kind_Multiplication_Operator => 1159, - Iir_Kind_Division_Operator => 1164, - Iir_Kind_Modulus_Operator => 1169, - Iir_Kind_Remainder_Operator => 1174, - Iir_Kind_Exponentiation_Operator => 1179, - Iir_Kind_Function_Call => 1187, - Iir_Kind_Aggregate => 1194, - Iir_Kind_Parenthesis_Expression => 1197, - Iir_Kind_Qualified_Expression => 1201, - Iir_Kind_Type_Conversion => 1206, - Iir_Kind_Allocator_By_Expression => 1210, - Iir_Kind_Allocator_By_Subtype => 1215, - Iir_Kind_Selected_Element => 1221, - Iir_Kind_Dereference => 1226, - Iir_Kind_Implicit_Dereference => 1231, - Iir_Kind_Slice_Name => 1238, - Iir_Kind_Indexed_Name => 1244, - Iir_Kind_Psl_Expression => 1246, - Iir_Kind_Sensitized_Process_Statement => 1267, - Iir_Kind_Process_Statement => 1287, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1298, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1309, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1321, - Iir_Kind_Concurrent_Assertion_Statement => 1329, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1336, - Iir_Kind_Psl_Assert_Statement => 1349, - Iir_Kind_Psl_Cover_Statement => 1362, - Iir_Kind_Block_Statement => 1375, - Iir_Kind_If_Generate_Statement => 1385, - Iir_Kind_Case_Generate_Statement => 1394, - Iir_Kind_For_Generate_Statement => 1403, - Iir_Kind_Component_Instantiation_Statement => 1413, - Iir_Kind_Psl_Default_Clock => 1417, - Iir_Kind_Simple_Simultaneous_Statement => 1424, - Iir_Kind_Generate_Statement_Body => 1435, - Iir_Kind_If_Generate_Else_Clause => 1440, - Iir_Kind_Simple_Signal_Assignment_Statement => 1449, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1458, - Iir_Kind_Selected_Waveform_Assignment_Statement => 1468, - Iir_Kind_Null_Statement => 1472, - Iir_Kind_Assertion_Statement => 1479, - Iir_Kind_Report_Statement => 1485, - Iir_Kind_Wait_Statement => 1493, - Iir_Kind_Variable_Assignment_Statement => 1499, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1505, - Iir_Kind_Return_Statement => 1511, - Iir_Kind_For_Loop_Statement => 1520, - Iir_Kind_While_Loop_Statement => 1528, - Iir_Kind_Next_Statement => 1534, - Iir_Kind_Exit_Statement => 1540, - Iir_Kind_Case_Statement => 1548, - Iir_Kind_Procedure_Call_Statement => 1554, - Iir_Kind_If_Statement => 1563, - Iir_Kind_Elsif => 1568, - Iir_Kind_Character_Literal => 1576, - Iir_Kind_Simple_Name => 1584, - Iir_Kind_Selected_Name => 1593, - Iir_Kind_Operator_Symbol => 1599, - Iir_Kind_Reference_Name => 1602, - Iir_Kind_Selected_By_All_Name => 1608, - Iir_Kind_Parenthesis_Name => 1613, - Iir_Kind_External_Constant_Name => 1621, - Iir_Kind_External_Signal_Name => 1629, - Iir_Kind_External_Variable_Name => 1637, - Iir_Kind_Package_Pathname => 1641, - Iir_Kind_Absolute_Pathname => 1642, - Iir_Kind_Relative_Pathname => 1643, - Iir_Kind_Pathname_Element => 1648, - Iir_Kind_Base_Attribute => 1650, - Iir_Kind_Subtype_Attribute => 1655, - Iir_Kind_Element_Attribute => 1660, - Iir_Kind_Left_Type_Attribute => 1665, - Iir_Kind_Right_Type_Attribute => 1670, - Iir_Kind_High_Type_Attribute => 1675, - Iir_Kind_Low_Type_Attribute => 1680, - Iir_Kind_Ascending_Type_Attribute => 1685, - Iir_Kind_Image_Attribute => 1691, - Iir_Kind_Value_Attribute => 1697, - Iir_Kind_Pos_Attribute => 1703, - Iir_Kind_Val_Attribute => 1709, - Iir_Kind_Succ_Attribute => 1715, - Iir_Kind_Pred_Attribute => 1721, - Iir_Kind_Leftof_Attribute => 1727, - Iir_Kind_Rightof_Attribute => 1733, - Iir_Kind_Delayed_Attribute => 1742, - Iir_Kind_Stable_Attribute => 1751, - Iir_Kind_Quiet_Attribute => 1760, - Iir_Kind_Transaction_Attribute => 1769, - Iir_Kind_Event_Attribute => 1773, - Iir_Kind_Active_Attribute => 1777, - Iir_Kind_Last_Event_Attribute => 1781, - Iir_Kind_Last_Active_Attribute => 1785, - Iir_Kind_Last_Value_Attribute => 1789, - Iir_Kind_Driving_Attribute => 1793, - Iir_Kind_Driving_Value_Attribute => 1797, - Iir_Kind_Behavior_Attribute => 1797, - Iir_Kind_Structure_Attribute => 1797, - Iir_Kind_Simple_Name_Attribute => 1804, - Iir_Kind_Instance_Name_Attribute => 1809, - Iir_Kind_Path_Name_Attribute => 1814, - Iir_Kind_Left_Array_Attribute => 1821, - Iir_Kind_Right_Array_Attribute => 1828, - Iir_Kind_High_Array_Attribute => 1835, - Iir_Kind_Low_Array_Attribute => 1842, - Iir_Kind_Length_Array_Attribute => 1849, - Iir_Kind_Ascending_Array_Attribute => 1856, - Iir_Kind_Range_Array_Attribute => 1863, - Iir_Kind_Reverse_Range_Array_Attribute => 1870, - Iir_Kind_Attribute_Name => 1879 + Iir_Kind_Conditional_Waveform => 95, + Iir_Kind_Conditional_Expression => 99, + Iir_Kind_Association_Element_By_Expression => 106, + Iir_Kind_Association_Element_By_Individual => 114, + Iir_Kind_Association_Element_Open => 119, + Iir_Kind_Association_Element_Package => 124, + Iir_Kind_Association_Element_Type => 131, + Iir_Kind_Association_Element_Subprogram => 136, + Iir_Kind_Choice_By_Range => 143, + Iir_Kind_Choice_By_Expression => 150, + Iir_Kind_Choice_By_Others => 155, + Iir_Kind_Choice_By_None => 160, + Iir_Kind_Choice_By_Name => 166, + Iir_Kind_Entity_Aspect_Entity => 168, + Iir_Kind_Entity_Aspect_Configuration => 169, + Iir_Kind_Entity_Aspect_Open => 169, + Iir_Kind_Block_Configuration => 175, + Iir_Kind_Block_Header => 179, + Iir_Kind_Component_Configuration => 186, + Iir_Kind_Binding_Indication => 190, + Iir_Kind_Entity_Class => 192, + Iir_Kind_Attribute_Value => 200, + Iir_Kind_Signature => 203, + Iir_Kind_Aggregate_Info => 210, + Iir_Kind_Procedure_Call => 214, + Iir_Kind_Record_Element_Constraint => 221, + Iir_Kind_Array_Element_Resolution => 223, + Iir_Kind_Record_Resolution => 224, + Iir_Kind_Record_Element_Resolution => 227, + Iir_Kind_Attribute_Specification => 235, + Iir_Kind_Disconnection_Specification => 241, + Iir_Kind_Configuration_Specification => 247, + Iir_Kind_Access_Type_Definition => 255, + Iir_Kind_Incomplete_Type_Definition => 263, + Iir_Kind_Interface_Type_Definition => 270, + Iir_Kind_File_Type_Definition => 277, + Iir_Kind_Protected_Type_Declaration => 286, + Iir_Kind_Record_Type_Definition => 296, + Iir_Kind_Array_Type_Definition => 308, + Iir_Kind_Array_Subtype_Definition => 323, + Iir_Kind_Record_Subtype_Definition => 334, + Iir_Kind_Access_Subtype_Definition => 342, + Iir_Kind_Physical_Subtype_Definition => 352, + Iir_Kind_Floating_Subtype_Definition => 363, + Iir_Kind_Integer_Subtype_Definition => 373, + Iir_Kind_Enumeration_Subtype_Definition => 383, + Iir_Kind_Enumeration_Type_Definition => 393, + Iir_Kind_Integer_Type_Definition => 401, + Iir_Kind_Floating_Type_Definition => 409, + Iir_Kind_Physical_Type_Definition => 420, + Iir_Kind_Range_Expression => 428, + Iir_Kind_Protected_Type_Body => 435, + Iir_Kind_Wildcard_Type_Definition => 440, + Iir_Kind_Subtype_Definition => 445, + Iir_Kind_Scalar_Nature_Definition => 449, + Iir_Kind_Overload_List => 450, + Iir_Kind_Type_Declaration => 457, + Iir_Kind_Anonymous_Type_Declaration => 463, + Iir_Kind_Subtype_Declaration => 470, + Iir_Kind_Nature_Declaration => 476, + Iir_Kind_Subnature_Declaration => 482, + Iir_Kind_Package_Declaration => 496, + Iir_Kind_Package_Instantiation_Declaration => 509, + Iir_Kind_Package_Body => 517, + Iir_Kind_Configuration_Declaration => 526, + Iir_Kind_Entity_Declaration => 538, + Iir_Kind_Architecture_Body => 550, + Iir_Kind_Context_Declaration => 556, + Iir_Kind_Package_Header => 558, + Iir_Kind_Unit_Declaration => 566, + Iir_Kind_Library_Declaration => 573, + Iir_Kind_Component_Declaration => 583, + Iir_Kind_Attribute_Declaration => 590, + Iir_Kind_Group_Template_Declaration => 596, + Iir_Kind_Group_Declaration => 603, + Iir_Kind_Element_Declaration => 611, + Iir_Kind_Non_Object_Alias_Declaration => 619, + Iir_Kind_Psl_Declaration => 627, + Iir_Kind_Psl_Endpoint_Declaration => 641, + Iir_Kind_Terminal_Declaration => 647, + Iir_Kind_Free_Quantity_Declaration => 656, + Iir_Kind_Across_Quantity_Declaration => 668, + Iir_Kind_Through_Quantity_Declaration => 680, + Iir_Kind_Enumeration_Literal => 691, + Iir_Kind_Function_Declaration => 716, + Iir_Kind_Procedure_Declaration => 740, + Iir_Kind_Function_Body => 750, + Iir_Kind_Procedure_Body => 761, + Iir_Kind_Object_Alias_Declaration => 772, + Iir_Kind_File_Declaration => 786, + Iir_Kind_Guard_Signal_Declaration => 799, + Iir_Kind_Signal_Declaration => 816, + Iir_Kind_Variable_Declaration => 829, + Iir_Kind_Constant_Declaration => 843, + Iir_Kind_Iterator_Declaration => 854, + Iir_Kind_Interface_Constant_Declaration => 870, + Iir_Kind_Interface_Variable_Declaration => 886, + Iir_Kind_Interface_Signal_Declaration => 907, + Iir_Kind_Interface_File_Declaration => 923, + Iir_Kind_Interface_Type_Declaration => 933, + Iir_Kind_Interface_Package_Declaration => 944, + Iir_Kind_Interface_Function_Declaration => 961, + Iir_Kind_Interface_Procedure_Declaration => 974, + Iir_Kind_Signal_Attribute_Declaration => 977, + Iir_Kind_Identity_Operator => 981, + Iir_Kind_Negation_Operator => 985, + Iir_Kind_Absolute_Operator => 989, + Iir_Kind_Not_Operator => 993, + Iir_Kind_Condition_Operator => 997, + Iir_Kind_Reduction_And_Operator => 1001, + Iir_Kind_Reduction_Or_Operator => 1005, + Iir_Kind_Reduction_Nand_Operator => 1009, + Iir_Kind_Reduction_Nor_Operator => 1013, + Iir_Kind_Reduction_Xor_Operator => 1017, + Iir_Kind_Reduction_Xnor_Operator => 1021, + Iir_Kind_And_Operator => 1026, + Iir_Kind_Or_Operator => 1031, + Iir_Kind_Nand_Operator => 1036, + Iir_Kind_Nor_Operator => 1041, + Iir_Kind_Xor_Operator => 1046, + Iir_Kind_Xnor_Operator => 1051, + Iir_Kind_Equality_Operator => 1056, + Iir_Kind_Inequality_Operator => 1061, + Iir_Kind_Less_Than_Operator => 1066, + Iir_Kind_Less_Than_Or_Equal_Operator => 1071, + Iir_Kind_Greater_Than_Operator => 1076, + Iir_Kind_Greater_Than_Or_Equal_Operator => 1081, + Iir_Kind_Match_Equality_Operator => 1086, + Iir_Kind_Match_Inequality_Operator => 1091, + Iir_Kind_Match_Less_Than_Operator => 1096, + Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1101, + Iir_Kind_Match_Greater_Than_Operator => 1106, + Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1111, + Iir_Kind_Sll_Operator => 1116, + Iir_Kind_Sla_Operator => 1121, + Iir_Kind_Srl_Operator => 1126, + Iir_Kind_Sra_Operator => 1131, + Iir_Kind_Rol_Operator => 1136, + Iir_Kind_Ror_Operator => 1141, + Iir_Kind_Addition_Operator => 1146, + Iir_Kind_Substraction_Operator => 1151, + Iir_Kind_Concatenation_Operator => 1156, + Iir_Kind_Multiplication_Operator => 1161, + Iir_Kind_Division_Operator => 1166, + Iir_Kind_Modulus_Operator => 1171, + Iir_Kind_Remainder_Operator => 1176, + Iir_Kind_Exponentiation_Operator => 1181, + Iir_Kind_Function_Call => 1189, + Iir_Kind_Aggregate => 1196, + Iir_Kind_Parenthesis_Expression => 1199, + Iir_Kind_Qualified_Expression => 1203, + Iir_Kind_Type_Conversion => 1208, + Iir_Kind_Allocator_By_Expression => 1212, + Iir_Kind_Allocator_By_Subtype => 1217, + Iir_Kind_Selected_Element => 1223, + Iir_Kind_Dereference => 1228, + Iir_Kind_Implicit_Dereference => 1233, + Iir_Kind_Slice_Name => 1240, + Iir_Kind_Indexed_Name => 1246, + Iir_Kind_Psl_Expression => 1248, + Iir_Kind_Sensitized_Process_Statement => 1269, + Iir_Kind_Process_Statement => 1289, + Iir_Kind_Concurrent_Simple_Signal_Assignment => 1301, + Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1313, + Iir_Kind_Concurrent_Selected_Signal_Assignment => 1326, + Iir_Kind_Concurrent_Assertion_Statement => 1334, + Iir_Kind_Concurrent_Procedure_Call_Statement => 1341, + Iir_Kind_Psl_Assert_Statement => 1354, + Iir_Kind_Psl_Cover_Statement => 1367, + Iir_Kind_Block_Statement => 1380, + Iir_Kind_If_Generate_Statement => 1391, + Iir_Kind_Case_Generate_Statement => 1400, + Iir_Kind_For_Generate_Statement => 1409, + Iir_Kind_Component_Instantiation_Statement => 1419, + Iir_Kind_Psl_Default_Clock => 1423, + Iir_Kind_Simple_Simultaneous_Statement => 1430, + Iir_Kind_Generate_Statement_Body => 1441, + Iir_Kind_If_Generate_Else_Clause => 1447, + Iir_Kind_Simple_Signal_Assignment_Statement => 1457, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1467, + Iir_Kind_Selected_Waveform_Assignment_Statement => 1478, + Iir_Kind_Null_Statement => 1482, + Iir_Kind_Assertion_Statement => 1489, + Iir_Kind_Report_Statement => 1495, + Iir_Kind_Wait_Statement => 1503, + Iir_Kind_Variable_Assignment_Statement => 1510, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1517, + Iir_Kind_Return_Statement => 1523, + Iir_Kind_For_Loop_Statement => 1532, + Iir_Kind_While_Loop_Statement => 1541, + Iir_Kind_Next_Statement => 1548, + Iir_Kind_Exit_Statement => 1555, + Iir_Kind_Case_Statement => 1563, + Iir_Kind_Procedure_Call_Statement => 1569, + Iir_Kind_If_Statement => 1579, + Iir_Kind_Elsif => 1585, + Iir_Kind_Character_Literal => 1593, + Iir_Kind_Simple_Name => 1601, + Iir_Kind_Selected_Name => 1610, + Iir_Kind_Operator_Symbol => 1616, + Iir_Kind_Reference_Name => 1619, + Iir_Kind_Selected_By_All_Name => 1625, + Iir_Kind_Parenthesis_Name => 1630, + Iir_Kind_External_Constant_Name => 1638, + Iir_Kind_External_Signal_Name => 1646, + Iir_Kind_External_Variable_Name => 1654, + Iir_Kind_Package_Pathname => 1658, + Iir_Kind_Absolute_Pathname => 1659, + Iir_Kind_Relative_Pathname => 1660, + Iir_Kind_Pathname_Element => 1665, + Iir_Kind_Base_Attribute => 1667, + Iir_Kind_Subtype_Attribute => 1672, + Iir_Kind_Element_Attribute => 1677, + Iir_Kind_Left_Type_Attribute => 1682, + Iir_Kind_Right_Type_Attribute => 1687, + Iir_Kind_High_Type_Attribute => 1692, + Iir_Kind_Low_Type_Attribute => 1697, + Iir_Kind_Ascending_Type_Attribute => 1702, + Iir_Kind_Image_Attribute => 1708, + Iir_Kind_Value_Attribute => 1714, + Iir_Kind_Pos_Attribute => 1720, + Iir_Kind_Val_Attribute => 1726, + Iir_Kind_Succ_Attribute => 1732, + Iir_Kind_Pred_Attribute => 1738, + Iir_Kind_Leftof_Attribute => 1744, + Iir_Kind_Rightof_Attribute => 1750, + Iir_Kind_Delayed_Attribute => 1759, + Iir_Kind_Stable_Attribute => 1768, + Iir_Kind_Quiet_Attribute => 1777, + Iir_Kind_Transaction_Attribute => 1786, + Iir_Kind_Event_Attribute => 1790, + Iir_Kind_Active_Attribute => 1794, + Iir_Kind_Last_Event_Attribute => 1798, + Iir_Kind_Last_Active_Attribute => 1802, + Iir_Kind_Last_Value_Attribute => 1806, + Iir_Kind_Driving_Attribute => 1810, + Iir_Kind_Driving_Value_Attribute => 1814, + Iir_Kind_Behavior_Attribute => 1814, + Iir_Kind_Structure_Attribute => 1814, + Iir_Kind_Simple_Name_Attribute => 1821, + Iir_Kind_Instance_Name_Attribute => 1826, + Iir_Kind_Path_Name_Attribute => 1831, + Iir_Kind_Left_Array_Attribute => 1838, + Iir_Kind_Right_Array_Attribute => 1845, + Iir_Kind_High_Array_Attribute => 1852, + Iir_Kind_Low_Array_Attribute => 1859, + Iir_Kind_Length_Array_Attribute => 1866, + Iir_Kind_Ascending_Array_Attribute => 1873, + Iir_Kind_Range_Array_Attribute => 1880, + Iir_Kind_Reverse_Range_Array_Attribute => 1887, + Iir_Kind_Attribute_Name => 1896 ); function Get_Fields (K : Iir_Kind) return Fields_Array @@ -10431,7 +10448,9 @@ package body Nodes_Meta is function Has_Is_Ref (K : Iir_Kind) return Boolean is begin case K is - when Iir_Kind_Component_Configuration + when Iir_Kind_Conditional_Waveform + | Iir_Kind_Conditional_Expression + | Iir_Kind_Component_Configuration | Iir_Kind_Disconnection_Specification | Iir_Kind_Configuration_Specification | Iir_Kind_Physical_Subtype_Definition @@ -10452,7 +10471,22 @@ package body Nodes_Meta is | Iir_Kind_Interface_File_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Sensitized_Process_Statement - | Iir_Kind_Wait_Statement => + | Iir_Kind_Concurrent_Simple_Signal_Assignment + | Iir_Kind_Concurrent_Conditional_Signal_Assignment + | Iir_Kind_Concurrent_Selected_Signal_Assignment + | Iir_Kind_If_Generate_Statement + | Iir_Kind_If_Generate_Else_Clause + | Iir_Kind_Simple_Signal_Assignment_Statement + | Iir_Kind_Conditional_Signal_Assignment_Statement + | Iir_Kind_Selected_Waveform_Assignment_Statement + | Iir_Kind_Wait_Statement + | Iir_Kind_Variable_Assignment_Statement + | Iir_Kind_Conditional_Variable_Assignment_Statement + | Iir_Kind_While_Loop_Statement + | Iir_Kind_Next_Statement + | Iir_Kind_Exit_Statement + | Iir_Kind_If_Statement + | Iir_Kind_Elsif => return True; when others => return False; |