diff options
-rw-r--r-- | pyGHDL/libghdl/vhdl/nodes.py | 359 | ||||
-rw-r--r-- | src/synth/synth-vhdl_decls.adb | 6 | ||||
-rw-r--r-- | src/synth/synth-vhdl_expr.adb | 3 | ||||
-rw-r--r-- | src/synth/synth-vhdl_insts.adb | 8 | ||||
-rw-r--r-- | src/synth/synth-vhdl_stmts.adb | 2 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap4.adb | 28 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap6.adb | 12 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap7.adb | 1 | ||||
-rw-r--r-- | src/vhdl/translate/trans-rtis.adb | 9 | ||||
-rw-r--r-- | src/vhdl/vhdl-annotations.adb | 4 | ||||
-rw-r--r-- | src/vhdl/vhdl-canon.adb | 60 | ||||
-rw-r--r-- | src/vhdl/vhdl-elocations.adb | 1 | ||||
-rw-r--r-- | src/vhdl/vhdl-elocations.ads | 2 | ||||
-rw-r--r-- | src/vhdl/vhdl-errors.adb | 3 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.adb | 1 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.ads | 26 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes_meta.adb | 384 | ||||
-rw-r--r-- | src/vhdl/vhdl-prints.adb | 25 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem.adb | 59 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem_decls.adb | 16 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem_decls.ads | 4 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem_scopes.adb | 3 | ||||
-rw-r--r-- | src/vhdl/vhdl-utils.adb | 4 |
23 files changed, 377 insertions, 643 deletions
diff --git a/pyGHDL/libghdl/vhdl/nodes.py b/pyGHDL/libghdl/vhdl/nodes.py index 173cbf3d9..187d49072 100644 --- a/pyGHDL/libghdl/vhdl/nodes.py +++ b/pyGHDL/libghdl/vhdl/nodes.py @@ -183,186 +183,185 @@ class Iir_Kind(IntEnum): Interface_Package_Declaration = 136 Interface_Function_Declaration = 137 Interface_Procedure_Declaration = 138 - Anonymous_Signal_Declaration = 139 - Signal_Attribute_Declaration = 140 - Identity_Operator = 141 - Negation_Operator = 142 - Absolute_Operator = 143 - Not_Operator = 144 - Implicit_Condition_Operator = 145 - Condition_Operator = 146 - Reduction_And_Operator = 147 - Reduction_Or_Operator = 148 - Reduction_Nand_Operator = 149 - Reduction_Nor_Operator = 150 - Reduction_Xor_Operator = 151 - Reduction_Xnor_Operator = 152 - And_Operator = 153 - Or_Operator = 154 - Nand_Operator = 155 - Nor_Operator = 156 - Xor_Operator = 157 - Xnor_Operator = 158 - Equality_Operator = 159 - Inequality_Operator = 160 - Less_Than_Operator = 161 - Less_Than_Or_Equal_Operator = 162 - Greater_Than_Operator = 163 - Greater_Than_Or_Equal_Operator = 164 - Match_Equality_Operator = 165 - Match_Inequality_Operator = 166 - Match_Less_Than_Operator = 167 - Match_Less_Than_Or_Equal_Operator = 168 - Match_Greater_Than_Operator = 169 - Match_Greater_Than_Or_Equal_Operator = 170 - Sll_Operator = 171 - Sla_Operator = 172 - Srl_Operator = 173 - Sra_Operator = 174 - Rol_Operator = 175 - Ror_Operator = 176 - Addition_Operator = 177 - Substraction_Operator = 178 - Concatenation_Operator = 179 - Multiplication_Operator = 180 - Division_Operator = 181 - Modulus_Operator = 182 - Remainder_Operator = 183 - Exponentiation_Operator = 184 - Function_Call = 185 - Aggregate = 186 - Parenthesis_Expression = 187 - Qualified_Expression = 188 - Type_Conversion = 189 - Allocator_By_Expression = 190 - Allocator_By_Subtype = 191 - Selected_Element = 192 - Dereference = 193 - Implicit_Dereference = 194 - Slice_Name = 195 - Indexed_Name = 196 - Psl_Prev = 197 - Psl_Stable = 198 - Psl_Rose = 199 - Psl_Fell = 200 - Psl_Onehot = 201 - Psl_Onehot0 = 202 - Psl_Expression = 203 - Sensitized_Process_Statement = 204 - Process_Statement = 205 - Concurrent_Simple_Signal_Assignment = 206 - Concurrent_Conditional_Signal_Assignment = 207 - Concurrent_Selected_Signal_Assignment = 208 - Concurrent_Assertion_Statement = 209 - Concurrent_Procedure_Call_Statement = 210 - Concurrent_Break_Statement = 211 - Psl_Assert_Directive = 212 - Psl_Assume_Directive = 213 - Psl_Cover_Directive = 214 - Psl_Restrict_Directive = 215 - Block_Statement = 216 - If_Generate_Statement = 217 - Case_Generate_Statement = 218 - For_Generate_Statement = 219 - Component_Instantiation_Statement = 220 - Psl_Default_Clock = 221 - Generate_Statement_Body = 222 - If_Generate_Else_Clause = 223 - Simple_Simultaneous_Statement = 224 - Simultaneous_Null_Statement = 225 - Simultaneous_Procedural_Statement = 226 - Simultaneous_Case_Statement = 227 - Simultaneous_If_Statement = 228 - Simultaneous_Elsif = 229 - Simple_Signal_Assignment_Statement = 230 - Conditional_Signal_Assignment_Statement = 231 - Selected_Waveform_Assignment_Statement = 232 - Signal_Force_Assignment_Statement = 233 - Signal_Release_Assignment_Statement = 234 - Null_Statement = 235 - Assertion_Statement = 236 - Report_Statement = 237 - Wait_Statement = 238 - Variable_Assignment_Statement = 239 - Conditional_Variable_Assignment_Statement = 240 - Return_Statement = 241 - For_Loop_Statement = 242 - While_Loop_Statement = 243 - Next_Statement = 244 - Exit_Statement = 245 - Case_Statement = 246 - Procedure_Call_Statement = 247 - Break_Statement = 248 - If_Statement = 249 - Elsif = 250 - Character_Literal = 251 - Simple_Name = 252 - Selected_Name = 253 - Operator_Symbol = 254 - Reference_Name = 255 - External_Constant_Name = 256 - External_Signal_Name = 257 - External_Variable_Name = 258 - Selected_By_All_Name = 259 - Parenthesis_Name = 260 - Package_Pathname = 261 - Absolute_Pathname = 262 - Relative_Pathname = 263 - Pathname_Element = 264 - Base_Attribute = 265 - Subtype_Attribute = 266 - Element_Attribute = 267 - Across_Attribute = 268 - Through_Attribute = 269 - Nature_Reference_Attribute = 270 - Left_Type_Attribute = 271 - Right_Type_Attribute = 272 - High_Type_Attribute = 273 - Low_Type_Attribute = 274 - Ascending_Type_Attribute = 275 - Image_Attribute = 276 - Value_Attribute = 277 - Pos_Attribute = 278 - Val_Attribute = 279 - Succ_Attribute = 280 - Pred_Attribute = 281 - Leftof_Attribute = 282 - Rightof_Attribute = 283 - Signal_Slew_Attribute = 284 - Quantity_Slew_Attribute = 285 - Ramp_Attribute = 286 - Zoh_Attribute = 287 - Ltf_Attribute = 288 - Ztf_Attribute = 289 - Dot_Attribute = 290 - Integ_Attribute = 291 - Above_Attribute = 292 - Quantity_Delayed_Attribute = 293 - Delayed_Attribute = 294 - Stable_Attribute = 295 - Quiet_Attribute = 296 - Transaction_Attribute = 297 - Event_Attribute = 298 - Active_Attribute = 299 - Last_Event_Attribute = 300 - Last_Active_Attribute = 301 - Last_Value_Attribute = 302 - Driving_Attribute = 303 - Driving_Value_Attribute = 304 - Behavior_Attribute = 305 - Structure_Attribute = 306 - Simple_Name_Attribute = 307 - Instance_Name_Attribute = 308 - Path_Name_Attribute = 309 - Left_Array_Attribute = 310 - Right_Array_Attribute = 311 - High_Array_Attribute = 312 - Low_Array_Attribute = 313 - Length_Array_Attribute = 314 - Ascending_Array_Attribute = 315 - Range_Array_Attribute = 316 - Reverse_Range_Array_Attribute = 317 - Attribute_Name = 318 + Signal_Attribute_Declaration = 139 + Identity_Operator = 140 + Negation_Operator = 141 + Absolute_Operator = 142 + Not_Operator = 143 + Implicit_Condition_Operator = 144 + Condition_Operator = 145 + Reduction_And_Operator = 146 + Reduction_Or_Operator = 147 + Reduction_Nand_Operator = 148 + Reduction_Nor_Operator = 149 + Reduction_Xor_Operator = 150 + Reduction_Xnor_Operator = 151 + And_Operator = 152 + Or_Operator = 153 + Nand_Operator = 154 + Nor_Operator = 155 + Xor_Operator = 156 + Xnor_Operator = 157 + Equality_Operator = 158 + Inequality_Operator = 159 + Less_Than_Operator = 160 + Less_Than_Or_Equal_Operator = 161 + Greater_Than_Operator = 162 + Greater_Than_Or_Equal_Operator = 163 + Match_Equality_Operator = 164 + Match_Inequality_Operator = 165 + Match_Less_Than_Operator = 166 + Match_Less_Than_Or_Equal_Operator = 167 + Match_Greater_Than_Operator = 168 + Match_Greater_Than_Or_Equal_Operator = 169 + Sll_Operator = 170 + Sla_Operator = 171 + Srl_Operator = 172 + Sra_Operator = 173 + Rol_Operator = 174 + Ror_Operator = 175 + Addition_Operator = 176 + Substraction_Operator = 177 + Concatenation_Operator = 178 + Multiplication_Operator = 179 + Division_Operator = 180 + Modulus_Operator = 181 + Remainder_Operator = 182 + Exponentiation_Operator = 183 + Function_Call = 184 + Aggregate = 185 + Parenthesis_Expression = 186 + Qualified_Expression = 187 + Type_Conversion = 188 + Allocator_By_Expression = 189 + Allocator_By_Subtype = 190 + Selected_Element = 191 + Dereference = 192 + Implicit_Dereference = 193 + Slice_Name = 194 + Indexed_Name = 195 + Psl_Prev = 196 + Psl_Stable = 197 + Psl_Rose = 198 + Psl_Fell = 199 + Psl_Onehot = 200 + Psl_Onehot0 = 201 + Psl_Expression = 202 + Sensitized_Process_Statement = 203 + Process_Statement = 204 + Concurrent_Simple_Signal_Assignment = 205 + Concurrent_Conditional_Signal_Assignment = 206 + Concurrent_Selected_Signal_Assignment = 207 + Concurrent_Assertion_Statement = 208 + Concurrent_Procedure_Call_Statement = 209 + Concurrent_Break_Statement = 210 + Psl_Assert_Directive = 211 + Psl_Assume_Directive = 212 + Psl_Cover_Directive = 213 + Psl_Restrict_Directive = 214 + Block_Statement = 215 + If_Generate_Statement = 216 + Case_Generate_Statement = 217 + For_Generate_Statement = 218 + Component_Instantiation_Statement = 219 + Psl_Default_Clock = 220 + Generate_Statement_Body = 221 + If_Generate_Else_Clause = 222 + Simple_Simultaneous_Statement = 223 + Simultaneous_Null_Statement = 224 + Simultaneous_Procedural_Statement = 225 + Simultaneous_Case_Statement = 226 + Simultaneous_If_Statement = 227 + Simultaneous_Elsif = 228 + Simple_Signal_Assignment_Statement = 229 + Conditional_Signal_Assignment_Statement = 230 + Selected_Waveform_Assignment_Statement = 231 + Signal_Force_Assignment_Statement = 232 + Signal_Release_Assignment_Statement = 233 + Null_Statement = 234 + Assertion_Statement = 235 + Report_Statement = 236 + Wait_Statement = 237 + Variable_Assignment_Statement = 238 + Conditional_Variable_Assignment_Statement = 239 + Return_Statement = 240 + For_Loop_Statement = 241 + While_Loop_Statement = 242 + Next_Statement = 243 + Exit_Statement = 244 + Case_Statement = 245 + Procedure_Call_Statement = 246 + Break_Statement = 247 + If_Statement = 248 + Elsif = 249 + Character_Literal = 250 + Simple_Name = 251 + Selected_Name = 252 + Operator_Symbol = 253 + Reference_Name = 254 + External_Constant_Name = 255 + External_Signal_Name = 256 + External_Variable_Name = 257 + Selected_By_All_Name = 258 + Parenthesis_Name = 259 + Package_Pathname = 260 + Absolute_Pathname = 261 + Relative_Pathname = 262 + Pathname_Element = 263 + Base_Attribute = 264 + Subtype_Attribute = 265 + Element_Attribute = 266 + Across_Attribute = 267 + Through_Attribute = 268 + Nature_Reference_Attribute = 269 + Left_Type_Attribute = 270 + Right_Type_Attribute = 271 + High_Type_Attribute = 272 + Low_Type_Attribute = 273 + Ascending_Type_Attribute = 274 + Image_Attribute = 275 + Value_Attribute = 276 + Pos_Attribute = 277 + Val_Attribute = 278 + Succ_Attribute = 279 + Pred_Attribute = 280 + Leftof_Attribute = 281 + Rightof_Attribute = 282 + Signal_Slew_Attribute = 283 + Quantity_Slew_Attribute = 284 + Ramp_Attribute = 285 + Zoh_Attribute = 286 + Ltf_Attribute = 287 + Ztf_Attribute = 288 + Dot_Attribute = 289 + Integ_Attribute = 290 + Above_Attribute = 291 + Quantity_Delayed_Attribute = 292 + Delayed_Attribute = 293 + Stable_Attribute = 294 + Quiet_Attribute = 295 + Transaction_Attribute = 296 + Event_Attribute = 297 + Active_Attribute = 298 + Last_Event_Attribute = 299 + Last_Active_Attribute = 300 + Last_Value_Attribute = 301 + Driving_Attribute = 302 + Driving_Value_Attribute = 303 + Behavior_Attribute = 304 + Structure_Attribute = 305 + Simple_Name_Attribute = 306 + Instance_Name_Attribute = 307 + Path_Name_Attribute = 308 + Left_Array_Attribute = 309 + Right_Array_Attribute = 310 + High_Array_Attribute = 311 + Low_Array_Attribute = 312 + Length_Array_Attribute = 313 + Ascending_Array_Attribute = 314 + Range_Array_Attribute = 315 + Reverse_Range_Array_Attribute = 316 + Attribute_Name = 317 @export 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 => |