From 8dce98079531f7b222340fb53373cd43c9939ff1 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 23 Aug 2021 21:39:00 +0200 Subject: vhdl: remove iir_kind_anonymous_signal_declaration (now unused) --- src/synth/synth-vhdl_decls.adb | 6 - src/synth/synth-vhdl_expr.adb | 3 - src/synth/synth-vhdl_insts.adb | 8 - src/synth/synth-vhdl_stmts.adb | 2 - src/vhdl/translate/trans-chap4.adb | 28 +-- src/vhdl/translate/trans-chap6.adb | 12 +- src/vhdl/translate/trans-chap7.adb | 1 - src/vhdl/translate/trans-rtis.adb | 9 +- src/vhdl/vhdl-annotations.adb | 4 - src/vhdl/vhdl-canon.adb | 60 ------ src/vhdl/vhdl-elocations.adb | 1 - src/vhdl/vhdl-elocations.ads | 2 - src/vhdl/vhdl-errors.adb | 3 - src/vhdl/vhdl-nodes.adb | 1 - src/vhdl/vhdl-nodes.ads | 26 --- src/vhdl/vhdl-nodes_meta.adb | 384 +++++++++++++++++-------------------- src/vhdl/vhdl-prints.adb | 25 --- src/vhdl/vhdl-sem.adb | 59 +----- src/vhdl/vhdl-sem_decls.adb | 16 -- src/vhdl/vhdl-sem_decls.ads | 4 - src/vhdl/vhdl-sem_scopes.adb | 3 +- src/vhdl/vhdl-utils.adb | 4 - 22 files changed, 198 insertions(+), 463 deletions(-) (limited to 'src') diff --git a/src/synth/synth-vhdl_decls.adb b/src/synth/synth-vhdl_decls.adb index 7507d21b0..779c802c1 100644 --- a/src/synth/synth-vhdl_decls.adb +++ b/src/synth/synth-vhdl_decls.adb @@ -1013,10 +1013,6 @@ package body Synth.Vhdl_Decls is Synth_Signal_Declaration (Syn_Inst, Decl); when Iir_Kind_Object_Alias_Declaration => Synth_Object_Alias_Declaration (Syn_Inst, Decl); - when Iir_Kind_Anonymous_Signal_Declaration => - -- Anonymous signals created by inertial associations are - -- simply ignored. - null; when Iir_Kind_Procedure_Declaration | Iir_Kind_Function_Declaration => Synth_Subprogram_Declaration (Syn_Inst, Decl); @@ -1172,8 +1168,6 @@ package body Synth.Vhdl_Decls is | Iir_Kind_Interface_Signal_Declaration => pragma Assert (not Is_Subprg); Finalize_Signal (Syn_Inst, Decl); - when Iir_Kind_Anonymous_Signal_Declaration => - null; when Iir_Kind_Object_Alias_Declaration => null; when Iir_Kind_Procedure_Declaration diff --git a/src/synth/synth-vhdl_expr.adb b/src/synth/synth-vhdl_expr.adb index 72f3103af..4e6c2b33e 100644 --- a/src/synth/synth-vhdl_expr.adb +++ b/src/synth/synth-vhdl_expr.adb @@ -2300,9 +2300,6 @@ package body Synth.Vhdl_Expr is -- Only used for anonymous signals in internal association. return Synth_Expression_With_Type (Syn_Inst, Get_Named_Entity (Expr), Expr_Type); - when Iir_Kind_Anonymous_Signal_Declaration => - return Synth_Expression_With_Type - (Syn_Inst, Get_Expression (Expr), Expr_Type); when Iir_Kind_Indexed_Name | Iir_Kind_Slice_Name => declare diff --git a/src/synth/synth-vhdl_insts.adb b/src/synth/synth-vhdl_insts.adb index 06ec882be..df943e782 100644 --- a/src/synth/synth-vhdl_insts.adb +++ b/src/synth/synth-vhdl_insts.adb @@ -775,14 +775,6 @@ package body Synth.Vhdl_Insts is when Iir_Kind_Association_Element_By_Expression | Iir_Kind_Association_Element_By_Name => Actual := Get_Actual (Assoc); - if Get_Kind (Actual) = Iir_Kind_Reference_Name then - -- Skip inserted anonymous signal declaration. - -- FIXME: simply do not insert it ? - Actual := Get_Named_Entity (Actual); - pragma Assert - (Get_Kind (Actual) = Iir_Kind_Anonymous_Signal_Declaration); - Actual := Get_Expression (Actual); - end if; Act_Inst := Syn_Inst; when Iir_Kind_Association_Element_By_Individual => return Synth_Individual_Input_Assoc (Syn_Inst, Assoc, Inter_Inst); diff --git a/src/synth/synth-vhdl_stmts.adb b/src/synth/synth-vhdl_stmts.adb index 544b4ebf4..2634af688 100644 --- a/src/synth/synth-vhdl_stmts.adb +++ b/src/synth/synth-vhdl_stmts.adb @@ -107,7 +107,6 @@ package body Synth.Vhdl_Stmts is | Iir_Kind_Variable_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_File_Declaration @@ -369,7 +368,6 @@ package body Synth.Vhdl_Stmts is | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Indexed_Name | Iir_Kind_Slice_Name | Iir_Kind_Dereference => diff --git a/src/vhdl/translate/trans-chap4.adb b/src/vhdl/translate/trans-chap4.adb index 65e2297dd..90b2d7313 100644 --- a/src/vhdl/translate/trans-chap4.adb +++ b/src/vhdl/translate/trans-chap4.adb @@ -193,9 +193,7 @@ package body Trans.Chap4 is Type_Info : Type_Info_Acc; Info : Signal_Info_Acc; begin - if Get_Kind (Decl) /= Iir_Kind_Anonymous_Signal_Declaration then - Chap3.Translate_Object_Subtype_Indication (Decl); - end if; + Chap3.Translate_Object_Subtype_Indication (Decl); Type_Info := Get_Info (Sig_Type_Def); Info := Add_Info (Decl, Kind_Signal); @@ -227,8 +225,7 @@ package body Trans.Chap4 is when Iir_Kind_Signal_Declaration | Iir_Kind_Interface_Signal_Declaration => Rtis.Generate_Signal_Rti (Decl); - when Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + when Iir_Kind_Guard_Signal_Declaration => -- No name created for guard signal. null; when others => @@ -477,14 +474,9 @@ package body Trans.Chap4 is procedure Elab_Maybe_Subtype_Attribute (Decl : Iir; Name_Val : Mnode; Name_Sig : Mnode) is begin - case Get_Kind (Decl) is - when Iir_Kind_Anonymous_Signal_Declaration => - return; - when others => - if not Is_Object_Subtype_Attribute (Decl) then - return; - end if; - end case; + if not Is_Object_Subtype_Attribute (Decl) then + return; + end if; Elab_Subtype_Attribute (Decl, Name_Val, Name_Sig); end Elab_Maybe_Subtype_Attribute; @@ -1140,9 +1132,7 @@ package body Trans.Chap4 is Open_Temp; - if Get_Kind (Decl) /= Iir_Kind_Anonymous_Signal_Declaration then - Chap3.Elab_Object_Subtype_Indication (Decl); - end if; + Chap3.Elab_Object_Subtype_Indication (Decl); Type_Info := Get_Info (Sig_Type); @@ -1894,8 +1884,7 @@ package body Trans.Chap4 is | Iir_Kind_Constant_Declaration => Create_Object (Decl); - when Iir_Kind_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + when Iir_Kind_Signal_Declaration => Create_Signal (Decl); when Iir_Kind_Object_Alias_Declaration => @@ -2659,8 +2648,7 @@ package body Trans.Chap4 is Need_Final := True; end if; - when Iir_Kind_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + when Iir_Kind_Signal_Declaration => Elab_Signal_Declaration (Decl, Parent, False); when Iir_Kind_Object_Alias_Declaration => diff --git a/src/vhdl/translate/trans-chap6.adb b/src/vhdl/translate/trans-chap6.adb index 02ed20f1e..64078a13d 100644 --- a/src/vhdl/translate/trans-chap6.adb +++ b/src/vhdl/translate/trans-chap6.adb @@ -1161,8 +1161,7 @@ package body Trans.Chap6 is | Iir_Kind_Quiet_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Transaction_Attribute - | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Guard_Signal_Declaration => if Mode = Mode_Signal then return Get_Var (Name_Info.Signal_Sig, Type_Info, Mode_Signal); else @@ -1271,8 +1270,7 @@ package body Trans.Chap6 is | Iir_Kind_Delayed_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Object_Alias_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Object_Alias_Declaration => Translate_Signal_Base (Name, Sig, Drv); when Iir_Kind_Slice_Name => declare @@ -1324,8 +1322,7 @@ package body Trans.Chap6 is begin case Get_Kind (Name) is when Iir_Kind_Signal_Declaration - | Iir_Kind_Interface_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Interface_Signal_Declaration => declare Name_Type : constant Iir := Get_Type (Name); Name_Info : constant Ortho_Info_Acc := Get_Info (Name); @@ -1384,8 +1381,7 @@ package body Trans.Chap6 is | Iir_Kind_Quiet_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Transaction_Attribute - | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Guard_Signal_Declaration => Sig := Get_Var (Name_Info.Signal_Sig, Type_Info, Mode_Signal); Val := Get_Var (Name_Info.Signal_Val, Type_Info, Mode_Value); when Iir_Kind_Interface_Signal_Declaration => diff --git a/src/vhdl/translate/trans-chap7.adb b/src/vhdl/translate/trans-chap7.adb index ea1abb7e3..635c59a43 100644 --- a/src/vhdl/translate/trans-chap7.adb +++ b/src/vhdl/translate/trans-chap7.adb @@ -4369,7 +4369,6 @@ package body Trans.Chap7 is | Iir_Kind_Delayed_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Attribute_Value | Iir_Kind_Attribute_Name => Res := M2E (Chap6.Translate_Name (Expr, Mode_Value)); diff --git a/src/vhdl/translate/trans-rtis.adb b/src/vhdl/translate/trans-rtis.adb index 3d2a8dd99..8f658ae39 100644 --- a/src/vhdl/translate/trans-rtis.adb +++ b/src/vhdl/translate/trans-rtis.adb @@ -1986,8 +1986,7 @@ package body Trans.Rtis is Start_Record_Aggr (List, Ghdl_Rtin_Object); Mode := 0; case Get_Kind (Decl) is - when Iir_Kind_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + when Iir_Kind_Signal_Declaration => Comm := Ghdl_Rtik_Signal; Var := Info.Signal_Sig; when Iir_Kind_Interface_Signal_Declaration => @@ -2196,8 +2195,7 @@ package body Trans.Rtis is | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_File_Declaration - | Iir_Kind_Signal_Attribute_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Signal_Attribute_Declaration => null; when Iir_Kind_Object_Alias_Declaration | Iir_Kind_Attribute_Declaration => @@ -2327,8 +2325,7 @@ package body Trans.Rtis is Add_Rti_Node (Info.Object_Rti); end; when Iir_Kind_Signal_Declaration - | Iir_Kind_Interface_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Interface_Signal_Declaration => declare Info : constant Signal_Info_Acc := Get_Info (Decl); begin diff --git a/src/vhdl/vhdl-annotations.adb b/src/vhdl/vhdl-annotations.adb index c1932f323..f31b50be2 100644 --- a/src/vhdl/vhdl-annotations.adb +++ b/src/vhdl/vhdl-annotations.adb @@ -677,10 +677,6 @@ package body Vhdl.Annotations is when Iir_Kind_Signal_Declaration => Annotate_Declaration_Type (Block_Info, Decl); Create_Signal_Info (Block_Info, Decl); - when Iir_Kind_Anonymous_Signal_Declaration => - if not Flag_Synthesis then - Create_Signal_Info (Block_Info, Decl); - end if; when Iir_Kind_Variable_Declaration | Iir_Kind_Iterator_Declaration => diff --git a/src/vhdl/vhdl-canon.adb b/src/vhdl/vhdl-canon.adb index f56c0674f..97901145c 100644 --- a/src/vhdl/vhdl-canon.adb +++ b/src/vhdl/vhdl-canon.adb @@ -234,7 +234,6 @@ package body Vhdl.Canon is when Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kinds_Signal_Attribute | Iir_Kind_Above_Attribute | Iir_Kind_External_Signal_Name => @@ -2975,46 +2974,6 @@ package body Vhdl.Canon is Canon_Expression (Get_Default_Value (Decl)); end if; - when Iir_Kind_Anonymous_Signal_Declaration => - if Canon_Flag_Expressions then - Canon_Expression (Get_Expression (Decl)); - end if; - -- Create a signal assignment. - if Canon_Flag_Inertial_Associations then - declare - Parent : constant Node := Get_Parent (Decl); - Asgn : Iir; - We : Iir; - Name : Iir; - begin - Asgn := Create_Iir - (Iir_Kind_Concurrent_Simple_Signal_Assignment); - Location_Copy (Asgn, Decl); - Set_Parent (Asgn, Parent); - - Name := Create_Iir (Iir_Kind_Reference_Name); - Location_Copy (Name, Decl); - Set_Referenced_Name (Name, Decl); - Set_Named_Entity (Name, Decl); - Set_Type (Name, Get_Type (Decl)); - Set_Expr_Staticness (Name, None); - - Set_Target (Asgn, Name); - Set_Delay_Mechanism (Asgn, Iir_Inertial_Delay); - - We := Create_Iir (Iir_Kind_Waveform_Element); - Location_Copy (We, Decl); - Set_We_Value (We, Get_Expression (Decl)); - Set_Expression (Decl, Null_Iir); - - Set_Waveform_Chain (Asgn, We); - - -- Prepend. - Set_Chain (Asgn, Get_Concurrent_Statement_Chain (Parent)); - Set_Concurrent_Statement_Chain (Parent, Asgn); - end; - end if; - when Iir_Kind_Iterator_Declaration => null; @@ -3090,33 +3049,14 @@ package body Vhdl.Canon is Decl : Iir; Prev_Decl : Iir; New_Decl : Iir; - Anon_Label : Natural; begin if Parent /= Null_Iir then Clear_Instantiation_Configuration (Parent); end if; - Anon_Label := 0; - Decl := Get_Declaration_Chain (Decl_Parent); Prev_Decl := Null_Iir; while Decl /= Null_Iir loop - -- Give a name to anonymous signals. - -- Ideally it should be done in Canon_Declaration, but we need - -- a counter for all the declarations. - if Get_Kind (Decl) = Iir_Kind_Anonymous_Signal_Declaration then - declare - Str : String := "ANONYMOUS" & Natural'Image (Anon_Label); - begin - -- Note: the label starts with a capitalized - -- letter, to avoid any clash with user's - -- identifiers. - Str (10) := '_'; - Set_Identifier (Decl, Name_Table.Get_Identifier (Str)); - Anon_Label := Anon_Label + 1; - end; - end if; - New_Decl := Canon_Declaration (Top, Decl, Parent); if New_Decl /= Decl then diff --git a/src/vhdl/vhdl-elocations.adb b/src/vhdl/vhdl-elocations.adb index 1b42f3640..9736cb92f 100644 --- a/src/vhdl/vhdl-elocations.adb +++ b/src/vhdl/vhdl-elocations.adb @@ -294,7 +294,6 @@ package body Vhdl.Elocations is | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Interface_Function_Declaration | Iir_Kind_Interface_Procedure_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Signal_Attribute_Declaration | Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator diff --git a/src/vhdl/vhdl-elocations.ads b/src/vhdl/vhdl-elocations.ads index d5fa98b85..a4d13f654 100644 --- a/src/vhdl/vhdl-elocations.ads +++ b/src/vhdl/vhdl-elocations.ads @@ -279,8 +279,6 @@ package Vhdl.Elocations is -- Iir_Kind_Guard_Signal_Declaration (None) - -- Iir_Kind_Anonymous_Signal_Declaration (None) - -- Iir_Kind_Signal_Attribute_Declaration (None) -- Iir_Kind_Constant_Declaration (L1) diff --git a/src/vhdl/vhdl-errors.adb b/src/vhdl/vhdl-errors.adb index 27d6c9a7f..947a75d6e 100644 --- a/src/vhdl/vhdl-errors.adb +++ b/src/vhdl/vhdl-errors.adb @@ -493,9 +493,6 @@ package body Vhdl.Errors is when Iir_Kind_Signal_Attribute_Declaration => -- Should not appear. return "signal attribute"; - when Iir_Kind_Anonymous_Signal_Declaration => - -- Should not appear. - return "anonymous signal"; when Iir_Kind_Group_Template_Declaration => return Disp_Identifier (Node, "group template"); when Iir_Kind_Group_Declaration => diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb index 2fae16c38..2ee78985c 100644 --- a/src/vhdl/vhdl-nodes.adb +++ b/src/vhdl/vhdl-nodes.adb @@ -1081,7 +1081,6 @@ package body Vhdl.Nodes is | Iir_Kind_Interface_Quantity_Declaration | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Signal_Attribute_Declaration | Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads index 5e53da773..2445ab33e 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -1863,31 +1863,6 @@ package Vhdl.Nodes is -- -- Get/Set_Is_Ref (Flag12) - -- Iir_Kind_Anonymous_Signal_Declaration (Short) - -- - -- Anonymous signal created for vhdl 2008 port association with a non - -- globally static expression. - -- - -- Get/Set_Parent (Field0) - -- - -- Get/Set_Chain (Field2) - -- - -- Get/Set_Identifier (Field3) - -- - -- Must be Null. - -- Get/Set_Default_Value (Field4) - -- - -- The expression that is assigned to the signal. - -- Get/Set_Expression (Field5) - -- - -- Get/Set_Type (Field1) - -- - -- Get/Set_After_Drivers_Flag (Flag5) - -- - -- Get/Set_Is_Ref (Flag12) - -- - -- Get/Set_Expr_Staticness (State1) - -- Iir_Kind_Signal_Attribute_Declaration (Short) -- -- Chain of implicit signals created from signal attribute. This is just @@ -4994,7 +4969,6 @@ package Vhdl.Nodes is Iir_Kind_Interface_Function_Declaration, -- interface Iir_Kind_Interface_Procedure_Declaration, -- interface - Iir_Kind_Anonymous_Signal_Declaration, Iir_Kind_Signal_Attribute_Declaration, -- Expressions. diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index 0b8092802..ee6b81c31 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -1421,8 +1421,6 @@ package body Vhdl.Nodes_Meta is return "interface_function_declaration"; when Iir_Kind_Interface_Procedure_Declaration => return "interface_procedure_declaration"; - when Iir_Kind_Anonymous_Signal_Declaration => - return "anonymous_signal_declaration"; when Iir_Kind_Signal_Attribute_Declaration => return "signal_attribute_declaration"; when Iir_Kind_Identity_Operator => @@ -3894,16 +3892,6 @@ package body Vhdl.Nodes_Meta is Field_Chain, Field_Interface_Declaration_Chain, Field_Return_Type_Mark, - -- Iir_Kind_Anonymous_Signal_Declaration - Field_Identifier, - Field_Is_Ref, - Field_After_Drivers_Flag, - Field_Expr_Staticness, - Field_Parent, - Field_Chain, - Field_Default_Value, - Field_Expression, - Field_Type, -- Iir_Kind_Signal_Attribute_Declaration Field_Parent, Field_Chain, @@ -5384,186 +5372,185 @@ package body Vhdl.Nodes_Meta is Iir_Kind_Interface_Package_Declaration => 1190, Iir_Kind_Interface_Function_Declaration => 1208, Iir_Kind_Interface_Procedure_Declaration => 1222, - Iir_Kind_Anonymous_Signal_Declaration => 1231, - Iir_Kind_Signal_Attribute_Declaration => 1234, - Iir_Kind_Identity_Operator => 1238, - Iir_Kind_Negation_Operator => 1242, - Iir_Kind_Absolute_Operator => 1246, - Iir_Kind_Not_Operator => 1250, - Iir_Kind_Implicit_Condition_Operator => 1254, - Iir_Kind_Condition_Operator => 1258, - Iir_Kind_Reduction_And_Operator => 1262, - Iir_Kind_Reduction_Or_Operator => 1266, - Iir_Kind_Reduction_Nand_Operator => 1270, - Iir_Kind_Reduction_Nor_Operator => 1274, - Iir_Kind_Reduction_Xor_Operator => 1278, - Iir_Kind_Reduction_Xnor_Operator => 1282, - Iir_Kind_And_Operator => 1287, - Iir_Kind_Or_Operator => 1292, - Iir_Kind_Nand_Operator => 1297, - Iir_Kind_Nor_Operator => 1302, - Iir_Kind_Xor_Operator => 1307, - Iir_Kind_Xnor_Operator => 1312, - Iir_Kind_Equality_Operator => 1317, - Iir_Kind_Inequality_Operator => 1322, - Iir_Kind_Less_Than_Operator => 1327, - Iir_Kind_Less_Than_Or_Equal_Operator => 1332, - Iir_Kind_Greater_Than_Operator => 1337, - Iir_Kind_Greater_Than_Or_Equal_Operator => 1342, - Iir_Kind_Match_Equality_Operator => 1347, - Iir_Kind_Match_Inequality_Operator => 1352, - Iir_Kind_Match_Less_Than_Operator => 1357, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1362, - Iir_Kind_Match_Greater_Than_Operator => 1367, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1372, - Iir_Kind_Sll_Operator => 1377, - Iir_Kind_Sla_Operator => 1382, - Iir_Kind_Srl_Operator => 1387, - Iir_Kind_Sra_Operator => 1392, - Iir_Kind_Rol_Operator => 1397, - Iir_Kind_Ror_Operator => 1402, - Iir_Kind_Addition_Operator => 1407, - Iir_Kind_Substraction_Operator => 1412, - Iir_Kind_Concatenation_Operator => 1417, - Iir_Kind_Multiplication_Operator => 1422, - Iir_Kind_Division_Operator => 1427, - Iir_Kind_Modulus_Operator => 1432, - Iir_Kind_Remainder_Operator => 1437, - Iir_Kind_Exponentiation_Operator => 1442, - Iir_Kind_Function_Call => 1450, - Iir_Kind_Aggregate => 1457, - Iir_Kind_Parenthesis_Expression => 1460, - Iir_Kind_Qualified_Expression => 1464, - Iir_Kind_Type_Conversion => 1469, - Iir_Kind_Allocator_By_Expression => 1474, - Iir_Kind_Allocator_By_Subtype => 1480, - Iir_Kind_Selected_Element => 1488, - Iir_Kind_Dereference => 1493, - Iir_Kind_Implicit_Dereference => 1498, - Iir_Kind_Slice_Name => 1505, - Iir_Kind_Indexed_Name => 1511, - Iir_Kind_Psl_Prev => 1517, - Iir_Kind_Psl_Stable => 1522, - Iir_Kind_Psl_Rose => 1527, - Iir_Kind_Psl_Fell => 1532, - Iir_Kind_Psl_Onehot => 1535, - Iir_Kind_Psl_Onehot0 => 1538, - Iir_Kind_Psl_Expression => 1540, - Iir_Kind_Sensitized_Process_Statement => 1561, - Iir_Kind_Process_Statement => 1581, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1594, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1607, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1621, - Iir_Kind_Concurrent_Assertion_Statement => 1629, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1636, - Iir_Kind_Concurrent_Break_Statement => 1644, - Iir_Kind_Psl_Assert_Directive => 1657, - Iir_Kind_Psl_Assume_Directive => 1668, - Iir_Kind_Psl_Cover_Directive => 1680, - Iir_Kind_Psl_Restrict_Directive => 1691, - Iir_Kind_Block_Statement => 1705, - Iir_Kind_If_Generate_Statement => 1716, - Iir_Kind_Case_Generate_Statement => 1725, - Iir_Kind_For_Generate_Statement => 1734, - Iir_Kind_Component_Instantiation_Statement => 1745, - Iir_Kind_Psl_Default_Clock => 1748, - Iir_Kind_Generate_Statement_Body => 1759, - Iir_Kind_If_Generate_Else_Clause => 1765, - Iir_Kind_Simple_Simultaneous_Statement => 1772, - Iir_Kind_Simultaneous_Null_Statement => 1776, - Iir_Kind_Simultaneous_Procedural_Statement => 1787, - Iir_Kind_Simultaneous_Case_Statement => 1796, - Iir_Kind_Simultaneous_If_Statement => 1805, - Iir_Kind_Simultaneous_Elsif => 1811, - Iir_Kind_Simple_Signal_Assignment_Statement => 1822, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1833, - Iir_Kind_Selected_Waveform_Assignment_Statement => 1845, - Iir_Kind_Signal_Force_Assignment_Statement => 1855, - Iir_Kind_Signal_Release_Assignment_Statement => 1864, - Iir_Kind_Null_Statement => 1868, - Iir_Kind_Assertion_Statement => 1875, - Iir_Kind_Report_Statement => 1881, - Iir_Kind_Wait_Statement => 1889, - Iir_Kind_Variable_Assignment_Statement => 1896, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1903, - Iir_Kind_Return_Statement => 1909, - Iir_Kind_For_Loop_Statement => 1920, - Iir_Kind_While_Loop_Statement => 1931, - Iir_Kind_Next_Statement => 1938, - Iir_Kind_Exit_Statement => 1945, - Iir_Kind_Case_Statement => 1953, - Iir_Kind_Procedure_Call_Statement => 1959, - Iir_Kind_Break_Statement => 1966, - Iir_Kind_If_Statement => 1976, - Iir_Kind_Elsif => 1982, - Iir_Kind_Character_Literal => 1989, - Iir_Kind_Simple_Name => 1996, - Iir_Kind_Selected_Name => 2004, - Iir_Kind_Operator_Symbol => 2009, - Iir_Kind_Reference_Name => 2014, - Iir_Kind_External_Constant_Name => 2023, - Iir_Kind_External_Signal_Name => 2032, - Iir_Kind_External_Variable_Name => 2042, - Iir_Kind_Selected_By_All_Name => 2048, - Iir_Kind_Parenthesis_Name => 2053, - Iir_Kind_Package_Pathname => 2057, - Iir_Kind_Absolute_Pathname => 2058, - Iir_Kind_Relative_Pathname => 2059, - Iir_Kind_Pathname_Element => 2064, - Iir_Kind_Base_Attribute => 2066, - Iir_Kind_Subtype_Attribute => 2071, - Iir_Kind_Element_Attribute => 2076, - Iir_Kind_Across_Attribute => 2081, - Iir_Kind_Through_Attribute => 2086, - Iir_Kind_Nature_Reference_Attribute => 2090, - Iir_Kind_Left_Type_Attribute => 2095, - Iir_Kind_Right_Type_Attribute => 2100, - Iir_Kind_High_Type_Attribute => 2105, - Iir_Kind_Low_Type_Attribute => 2110, - Iir_Kind_Ascending_Type_Attribute => 2115, - Iir_Kind_Image_Attribute => 2121, - Iir_Kind_Value_Attribute => 2127, - Iir_Kind_Pos_Attribute => 2133, - Iir_Kind_Val_Attribute => 2139, - Iir_Kind_Succ_Attribute => 2145, - Iir_Kind_Pred_Attribute => 2151, - Iir_Kind_Leftof_Attribute => 2157, - Iir_Kind_Rightof_Attribute => 2163, - Iir_Kind_Signal_Slew_Attribute => 2171, - Iir_Kind_Quantity_Slew_Attribute => 2179, - Iir_Kind_Ramp_Attribute => 2187, - Iir_Kind_Zoh_Attribute => 2195, - Iir_Kind_Ltf_Attribute => 2203, - Iir_Kind_Ztf_Attribute => 2213, - Iir_Kind_Dot_Attribute => 2220, - Iir_Kind_Integ_Attribute => 2227, - Iir_Kind_Above_Attribute => 2235, - Iir_Kind_Quantity_Delayed_Attribute => 2243, - Iir_Kind_Delayed_Attribute => 2252, - Iir_Kind_Stable_Attribute => 2261, - Iir_Kind_Quiet_Attribute => 2270, - Iir_Kind_Transaction_Attribute => 2279, - Iir_Kind_Event_Attribute => 2283, - Iir_Kind_Active_Attribute => 2287, - Iir_Kind_Last_Event_Attribute => 2291, - Iir_Kind_Last_Active_Attribute => 2295, - Iir_Kind_Last_Value_Attribute => 2299, - Iir_Kind_Driving_Attribute => 2303, - Iir_Kind_Driving_Value_Attribute => 2307, - Iir_Kind_Behavior_Attribute => 2307, - Iir_Kind_Structure_Attribute => 2307, - Iir_Kind_Simple_Name_Attribute => 2314, - Iir_Kind_Instance_Name_Attribute => 2319, - Iir_Kind_Path_Name_Attribute => 2324, - Iir_Kind_Left_Array_Attribute => 2331, - Iir_Kind_Right_Array_Attribute => 2338, - Iir_Kind_High_Array_Attribute => 2345, - Iir_Kind_Low_Array_Attribute => 2352, - Iir_Kind_Length_Array_Attribute => 2359, - Iir_Kind_Ascending_Array_Attribute => 2366, - Iir_Kind_Range_Array_Attribute => 2373, - Iir_Kind_Reverse_Range_Array_Attribute => 2380, - Iir_Kind_Attribute_Name => 2389 + Iir_Kind_Signal_Attribute_Declaration => 1225, + Iir_Kind_Identity_Operator => 1229, + Iir_Kind_Negation_Operator => 1233, + Iir_Kind_Absolute_Operator => 1237, + Iir_Kind_Not_Operator => 1241, + Iir_Kind_Implicit_Condition_Operator => 1245, + Iir_Kind_Condition_Operator => 1249, + Iir_Kind_Reduction_And_Operator => 1253, + Iir_Kind_Reduction_Or_Operator => 1257, + Iir_Kind_Reduction_Nand_Operator => 1261, + Iir_Kind_Reduction_Nor_Operator => 1265, + Iir_Kind_Reduction_Xor_Operator => 1269, + Iir_Kind_Reduction_Xnor_Operator => 1273, + Iir_Kind_And_Operator => 1278, + Iir_Kind_Or_Operator => 1283, + Iir_Kind_Nand_Operator => 1288, + Iir_Kind_Nor_Operator => 1293, + Iir_Kind_Xor_Operator => 1298, + Iir_Kind_Xnor_Operator => 1303, + Iir_Kind_Equality_Operator => 1308, + Iir_Kind_Inequality_Operator => 1313, + Iir_Kind_Less_Than_Operator => 1318, + Iir_Kind_Less_Than_Or_Equal_Operator => 1323, + Iir_Kind_Greater_Than_Operator => 1328, + Iir_Kind_Greater_Than_Or_Equal_Operator => 1333, + Iir_Kind_Match_Equality_Operator => 1338, + Iir_Kind_Match_Inequality_Operator => 1343, + Iir_Kind_Match_Less_Than_Operator => 1348, + Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1353, + Iir_Kind_Match_Greater_Than_Operator => 1358, + Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1363, + Iir_Kind_Sll_Operator => 1368, + Iir_Kind_Sla_Operator => 1373, + Iir_Kind_Srl_Operator => 1378, + Iir_Kind_Sra_Operator => 1383, + Iir_Kind_Rol_Operator => 1388, + Iir_Kind_Ror_Operator => 1393, + Iir_Kind_Addition_Operator => 1398, + Iir_Kind_Substraction_Operator => 1403, + Iir_Kind_Concatenation_Operator => 1408, + Iir_Kind_Multiplication_Operator => 1413, + Iir_Kind_Division_Operator => 1418, + Iir_Kind_Modulus_Operator => 1423, + Iir_Kind_Remainder_Operator => 1428, + Iir_Kind_Exponentiation_Operator => 1433, + Iir_Kind_Function_Call => 1441, + Iir_Kind_Aggregate => 1448, + Iir_Kind_Parenthesis_Expression => 1451, + Iir_Kind_Qualified_Expression => 1455, + Iir_Kind_Type_Conversion => 1460, + Iir_Kind_Allocator_By_Expression => 1465, + Iir_Kind_Allocator_By_Subtype => 1471, + Iir_Kind_Selected_Element => 1479, + Iir_Kind_Dereference => 1484, + Iir_Kind_Implicit_Dereference => 1489, + Iir_Kind_Slice_Name => 1496, + Iir_Kind_Indexed_Name => 1502, + Iir_Kind_Psl_Prev => 1508, + Iir_Kind_Psl_Stable => 1513, + Iir_Kind_Psl_Rose => 1518, + Iir_Kind_Psl_Fell => 1523, + Iir_Kind_Psl_Onehot => 1526, + Iir_Kind_Psl_Onehot0 => 1529, + Iir_Kind_Psl_Expression => 1531, + Iir_Kind_Sensitized_Process_Statement => 1552, + Iir_Kind_Process_Statement => 1572, + Iir_Kind_Concurrent_Simple_Signal_Assignment => 1585, + Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1598, + Iir_Kind_Concurrent_Selected_Signal_Assignment => 1612, + Iir_Kind_Concurrent_Assertion_Statement => 1620, + Iir_Kind_Concurrent_Procedure_Call_Statement => 1627, + Iir_Kind_Concurrent_Break_Statement => 1635, + Iir_Kind_Psl_Assert_Directive => 1648, + Iir_Kind_Psl_Assume_Directive => 1659, + Iir_Kind_Psl_Cover_Directive => 1671, + Iir_Kind_Psl_Restrict_Directive => 1682, + Iir_Kind_Block_Statement => 1696, + Iir_Kind_If_Generate_Statement => 1707, + Iir_Kind_Case_Generate_Statement => 1716, + Iir_Kind_For_Generate_Statement => 1725, + Iir_Kind_Component_Instantiation_Statement => 1736, + Iir_Kind_Psl_Default_Clock => 1739, + Iir_Kind_Generate_Statement_Body => 1750, + Iir_Kind_If_Generate_Else_Clause => 1756, + Iir_Kind_Simple_Simultaneous_Statement => 1763, + Iir_Kind_Simultaneous_Null_Statement => 1767, + Iir_Kind_Simultaneous_Procedural_Statement => 1778, + Iir_Kind_Simultaneous_Case_Statement => 1787, + Iir_Kind_Simultaneous_If_Statement => 1796, + Iir_Kind_Simultaneous_Elsif => 1802, + Iir_Kind_Simple_Signal_Assignment_Statement => 1813, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1824, + Iir_Kind_Selected_Waveform_Assignment_Statement => 1836, + Iir_Kind_Signal_Force_Assignment_Statement => 1846, + Iir_Kind_Signal_Release_Assignment_Statement => 1855, + Iir_Kind_Null_Statement => 1859, + Iir_Kind_Assertion_Statement => 1866, + Iir_Kind_Report_Statement => 1872, + Iir_Kind_Wait_Statement => 1880, + Iir_Kind_Variable_Assignment_Statement => 1887, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1894, + Iir_Kind_Return_Statement => 1900, + Iir_Kind_For_Loop_Statement => 1911, + Iir_Kind_While_Loop_Statement => 1922, + Iir_Kind_Next_Statement => 1929, + Iir_Kind_Exit_Statement => 1936, + Iir_Kind_Case_Statement => 1944, + Iir_Kind_Procedure_Call_Statement => 1950, + Iir_Kind_Break_Statement => 1957, + Iir_Kind_If_Statement => 1967, + Iir_Kind_Elsif => 1973, + Iir_Kind_Character_Literal => 1980, + Iir_Kind_Simple_Name => 1987, + Iir_Kind_Selected_Name => 1995, + Iir_Kind_Operator_Symbol => 2000, + Iir_Kind_Reference_Name => 2005, + Iir_Kind_External_Constant_Name => 2014, + Iir_Kind_External_Signal_Name => 2023, + Iir_Kind_External_Variable_Name => 2033, + Iir_Kind_Selected_By_All_Name => 2039, + Iir_Kind_Parenthesis_Name => 2044, + Iir_Kind_Package_Pathname => 2048, + Iir_Kind_Absolute_Pathname => 2049, + Iir_Kind_Relative_Pathname => 2050, + Iir_Kind_Pathname_Element => 2055, + Iir_Kind_Base_Attribute => 2057, + Iir_Kind_Subtype_Attribute => 2062, + Iir_Kind_Element_Attribute => 2067, + Iir_Kind_Across_Attribute => 2072, + Iir_Kind_Through_Attribute => 2077, + Iir_Kind_Nature_Reference_Attribute => 2081, + Iir_Kind_Left_Type_Attribute => 2086, + Iir_Kind_Right_Type_Attribute => 2091, + Iir_Kind_High_Type_Attribute => 2096, + Iir_Kind_Low_Type_Attribute => 2101, + Iir_Kind_Ascending_Type_Attribute => 2106, + Iir_Kind_Image_Attribute => 2112, + Iir_Kind_Value_Attribute => 2118, + Iir_Kind_Pos_Attribute => 2124, + Iir_Kind_Val_Attribute => 2130, + Iir_Kind_Succ_Attribute => 2136, + Iir_Kind_Pred_Attribute => 2142, + Iir_Kind_Leftof_Attribute => 2148, + Iir_Kind_Rightof_Attribute => 2154, + Iir_Kind_Signal_Slew_Attribute => 2162, + Iir_Kind_Quantity_Slew_Attribute => 2170, + Iir_Kind_Ramp_Attribute => 2178, + Iir_Kind_Zoh_Attribute => 2186, + Iir_Kind_Ltf_Attribute => 2194, + Iir_Kind_Ztf_Attribute => 2204, + Iir_Kind_Dot_Attribute => 2211, + Iir_Kind_Integ_Attribute => 2218, + Iir_Kind_Above_Attribute => 2226, + Iir_Kind_Quantity_Delayed_Attribute => 2234, + Iir_Kind_Delayed_Attribute => 2243, + Iir_Kind_Stable_Attribute => 2252, + Iir_Kind_Quiet_Attribute => 2261, + Iir_Kind_Transaction_Attribute => 2270, + Iir_Kind_Event_Attribute => 2274, + Iir_Kind_Active_Attribute => 2278, + Iir_Kind_Last_Event_Attribute => 2282, + Iir_Kind_Last_Active_Attribute => 2286, + Iir_Kind_Last_Value_Attribute => 2290, + Iir_Kind_Driving_Attribute => 2294, + Iir_Kind_Driving_Value_Attribute => 2298, + Iir_Kind_Behavior_Attribute => 2298, + Iir_Kind_Structure_Attribute => 2298, + Iir_Kind_Simple_Name_Attribute => 2305, + Iir_Kind_Instance_Name_Attribute => 2310, + Iir_Kind_Path_Name_Attribute => 2315, + Iir_Kind_Left_Array_Attribute => 2322, + Iir_Kind_Right_Array_Attribute => 2329, + Iir_Kind_High_Array_Attribute => 2336, + Iir_Kind_Low_Array_Attribute => 2343, + Iir_Kind_Length_Array_Attribute => 2350, + Iir_Kind_Ascending_Array_Attribute => 2357, + Iir_Kind_Range_Array_Attribute => 2364, + Iir_Kind_Reverse_Range_Array_Attribute => 2371, + Iir_Kind_Attribute_Name => 2380 ); function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -8186,8 +8173,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration - | Iir_Kind_Interface_Quantity_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Interface_Quantity_Declaration => return True; when others => return False; @@ -8568,7 +8554,6 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Interface_Function_Declaration | Iir_Kind_Interface_Procedure_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Signal_Attribute_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement @@ -8696,7 +8681,6 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Quantity_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Interface_Function_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator | Iir_Kind_Absolute_Operator @@ -9199,8 +9183,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration - | Iir_Kind_Interface_Quantity_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Interface_Quantity_Declaration => return True; when others => return False; @@ -9466,7 +9449,6 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Interface_Function_Declaration | Iir_Kind_Interface_Procedure_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Selected_Element | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement @@ -10691,7 +10673,6 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Attribute_Specification | Iir_Kind_Disconnection_Specification | Iir_Kind_Step_Limit_Specification - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Parenthesis_Expression | Iir_Kind_Qualified_Expression | Iir_Kind_Type_Conversion @@ -10980,7 +10961,6 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Interface_Function_Declaration | Iir_Kind_Interface_Procedure_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Signal_Attribute_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement @@ -11176,7 +11156,6 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Interface_Quantity_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator | Iir_Kind_Absolute_Operator @@ -12519,7 +12498,6 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Quantity_Declaration | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Allocator_By_Expression | Iir_Kind_Allocator_By_Subtype | Iir_Kind_Sensitized_Process_Statement diff --git a/src/vhdl/vhdl-prints.adb b/src/vhdl/vhdl-prints.adb index c0abf532e..361cbe18b 100644 --- a/src/vhdl/vhdl-prints.adb +++ b/src/vhdl/vhdl-prints.adb @@ -234,7 +234,6 @@ package body Vhdl.Prints is | Iir_Kind_Constant_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Type_Declaration @@ -2485,15 +2484,6 @@ package body Vhdl.Prints is Disp_Attribute_Specification (Ctxt, Decl); when Iir_Kind_Signal_Attribute_Declaration => null; - when Iir_Kind_Anonymous_Signal_Declaration => - if False then - -- Disabled as it is not part of the sources. - Start_Hbox (Ctxt); - Disp_Token (Ctxt, Tok_Signal); - Disp_Ident (Ctxt, Get_Identifier (Decl)); - Disp_Token (Ctxt, Tok_Semi_Colon); - Close_Hbox (Ctxt); - end if; when Iir_Kind_Group_Template_Declaration => Disp_Group_Template_Declaration (Ctxt, Decl); when Iir_Kind_Group_Declaration => @@ -4743,21 +4733,6 @@ package body Vhdl.Prints is when Iir_Kind_Implicit_Dereference => Print (Ctxt, Get_Prefix (Expr)); - when Iir_Kind_Anonymous_Signal_Declaration => - declare - Act : constant Iir := Get_Expression (Expr); - begin - if Act /= Null_Iir then - -- There is still an expression, so the anonymous signal - -- was not yet declared. - Print (Ctxt, Act); - else - -- Cannot use Disp_Identifier as the identifier is not in - -- the sources. - Disp_Ident (Ctxt, Get_Identifier (Expr)); - end if; - end; - when Iir_Kind_Left_Type_Attribute => Disp_Name_Attribute (Ctxt, Expr, Name_Left); when Iir_Kind_Right_Type_Attribute => diff --git a/src/vhdl/vhdl-sem.adb b/src/vhdl/vhdl-sem.adb index d223935d3..494d0bd1f 100644 --- a/src/vhdl/vhdl-sem.adb +++ b/src/vhdl/vhdl-sem.adb @@ -478,57 +478,6 @@ package body Vhdl.Sem is Res := Sem_Generic_Association_Chain (Inter_Parent, Assoc_Parent); end Sem_Generic_Association_Chain; - -- LRM08 6.5.6.3 Port clauses - function Sem_Insert_Anonymous_Signal (Formal : Iir; Actual : Iir) - return Iir - is - Sig : Iir; - Res : Iir; - begin - -- LRM08 6.5.6.3 Port clauses - -- If a formal port of mode IN is associated with an expression that is - -- not globally static (see 9.4.1) and the formal is of an unconstrained - -- or partially constrained composite type requiring determination of - -- index ranges from the actual according to the rules of 5.3.2.2, then - -- the expression shall be one of the following: - -- - The name of an object whose subtype is globally static - -- - An indexed name whose prefix is one of the members of this list - -- - A slice name whose prefix is one of the members of this list and - -- whose discrete range is a globally static discrete range - -- - An aggregate, provided all choices are locally static and all - -- expressions in element associations are expressions described in - -- this list - -- - A function call whose return type mark denotes a globally static - -- subtype - -- - A qualified expression or type conversion whose type mark denotes - -- a globally static subtype - -- - An expression described in this list and enclosed in parentheses - - -- GHDL: FIXME: could this be simplified simply by `subtype is globally - -- static` ? - -- FIXME: what about conversions ? - - -- Create the anonymous signal. - Sig := Create_Iir (Iir_Kind_Anonymous_Signal_Declaration); - Location_Copy (Sig, Actual); - Set_Expression (Sig, Actual); - Set_Type (Sig, Get_Type (Formal)); - Set_Expr_Staticness (Sig, None); - - -- Declare it. - Add_Implicit_Declaration (Sig); - - -- Return a reference to it. - -- FIXME: The referenced name is not a name. - Res := Create_Iir (Iir_Kind_Reference_Name); - Location_Copy (Res, Actual); - Set_Referenced_Name (Res, Sig); - Set_Named_Entity (Res, Sig); - Set_Type (Res, Get_Type (Sig)); - Set_Expr_Staticness (Res, None); - return Res; - end Sem_Insert_Anonymous_Signal; - function Sem_Signal_Port_Association (Assoc : Iir; Formal : Iir; Formal_Base : Iir) return Iir is @@ -616,14 +565,8 @@ package body Vhdl.Sem is -- The actual, if an expression, must be a globally -- static expression. if Get_Expr_Staticness (Actual) < Globally then - if Flags.Vhdl_Std >= Vhdl_08 then + if Flags.Vhdl_Std < Vhdl_08 then -- LRM08 6.5.6.3 Port clauses - if False then - Actual := Sem_Insert_Anonymous_Signal (Formal, Actual); - Set_Actual (Assoc, Actual); - Set_Collapse_Signal_Flag (Assoc, True); - end if; - else Error_Msg_Sem (+Actual, "actual expression must be globally static"); end if; diff --git a/src/vhdl/vhdl-sem_decls.adb b/src/vhdl/vhdl-sem_decls.adb index 913d889fc..19fd36b75 100644 --- a/src/vhdl/vhdl-sem_decls.adb +++ b/src/vhdl/vhdl-sem_decls.adb @@ -131,22 +131,6 @@ package body Vhdl.Sem_Decls is end if; end Insert_Pending_Implicit_Declarations; - procedure Add_Implicit_Declaration (Sig : Iir) is - begin - -- Only for anonymous signals, which appear in instantiations (so - -- once the declarations have been analyzed). - pragma Assert (Get_Kind (Sig) = Iir_Kind_Anonymous_Signal_Declaration); - pragma Assert (Current_Signals_Region.Decls_Analyzed); - - if Current_Signals_Region.Last_Decl = Null_Iir then - Set_Declaration_Chain (Current_Signals_Region.Decls_Parent, Sig); - else - Set_Chain (Current_Signals_Region.Last_Decl, Sig); - end if; - Current_Signals_Region.Last_Decl := Sig; - Set_Parent (Sig, Current_Signals_Region.Decls_Parent); - end Add_Implicit_Declaration; - -- Mark the end of declaration analysis. New implicit declarations will -- simply be appended to the last declaration. procedure End_Of_Declarations_For_Implicit_Declarations diff --git a/src/vhdl/vhdl-sem_decls.ads b/src/vhdl/vhdl-sem_decls.ads index 1c283af84..a6f36cd10 100644 --- a/src/vhdl/vhdl-sem_decls.ads +++ b/src/vhdl/vhdl-sem_decls.ads @@ -93,10 +93,6 @@ package Vhdl.Sem_Decls is -- signal attribute is analyzed. procedure Add_Declaration_For_Implicit_Signal (Sig : Iir); - -- Append declaration SIG (for an anonymous signal) to the current - -- declarative part. - procedure Add_Implicit_Declaration (Sig : Iir); - private type Implicit_Signal_Declaration_Type is record -- Declaration or statement than will contain implicit declarations. diff --git a/src/vhdl/vhdl-sem_scopes.adb b/src/vhdl/vhdl-sem_scopes.adb index 099a9c62a..945ac57bb 100644 --- a/src/vhdl/vhdl-sem_scopes.adb +++ b/src/vhdl/vhdl-sem_scopes.adb @@ -1113,8 +1113,7 @@ package body Vhdl.Sem_Scopes is | Iir_Kind_Disconnection_Specification => null; when Iir_Kinds_Signal_Attribute - | Iir_Kind_Signal_Attribute_Declaration - | Iir_Kind_Anonymous_Signal_Declaration => + | Iir_Kind_Signal_Attribute_Declaration => null; when Iir_Kind_Protected_Type_Body => diff --git a/src/vhdl/vhdl-utils.adb b/src/vhdl/vhdl-utils.adb index dde3aad0c..c18892620 100644 --- a/src/vhdl/vhdl-utils.adb +++ b/src/vhdl/vhdl-utils.adb @@ -204,7 +204,6 @@ package body Vhdl.Utils is return Adecl; when Iir_Kind_Signal_Declaration | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Interface_Signal_Declaration => return Adecl; when Iir_Kind_Object_Alias_Declaration => @@ -320,7 +319,6 @@ package body Vhdl.Utils is | Iir_Kind_Subtype_Definition | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Signal_Attribute_Declaration | Iir_Kind_Unaffected_Waveform | Iir_Kind_Waveform_Element @@ -392,7 +390,6 @@ package body Vhdl.Utils is | Iir_Kind_Variable_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Constant_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration => @@ -518,7 +515,6 @@ package body Vhdl.Utils is when Iir_Kind_Signal_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kinds_Signal_Attribute => return True; when Iir_Kind_Object_Alias_Declaration => -- cgit v1.2.3