diff options
Diffstat (limited to 'sem_expr.adb')
-rw-r--r-- | sem_expr.adb | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/sem_expr.adb b/sem_expr.adb index 309a2480b..f7af76c09 100644 --- a/sem_expr.adb +++ b/sem_expr.adb @@ -315,7 +315,10 @@ package body Sem_Expr is | Iir_Kinds_Subtype_Definition | Iir_Kind_Design_Unit | Iir_Kind_Architecture_Body + | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration + | Iir_Kind_Package_Declaration + | Iir_Kind_Package_Instantiation_Declaration | Iir_Kinds_Concurrent_Statement | Iir_Kinds_Sequential_Statement | Iir_Kind_Library_Declaration @@ -885,12 +888,13 @@ package body Sem_Expr is -- Add CALLEE in the callees list of SUBPRG (which must be a subprg decl). procedure Add_In_Callees_List (Subprg : Iir; Callee : Iir) is + Holder : constant Iir := Get_Callees_List_Holder (Subprg); List : Iir_List; begin - List := Get_Callees_List (Subprg); + List := Get_Callees_List (Holder); if List = Null_Iir_List then List := Create_Iir_List; - Set_Callees_List (Subprg, List); + Set_Callees_List (Holder, List); end if; -- FIXME: May use a flag in IMP to speed up the -- add operation. @@ -1010,9 +1014,8 @@ package body Sem_Expr is -- ("(indirect) wait statement not allowed in " & Where, Loc); end Error_Wait; begin - if Get_Kind (Callee) /= Iir_Kind_Procedure_Declaration then - raise Internal_Error; - end if; + pragma Assert (Get_Kind (Callee) = Iir_Kind_Procedure_Declaration); + case Get_Wait_State (Callee) is when False => return; @@ -1501,14 +1504,14 @@ package body Sem_Expr is Formal := Get_Base_Name (Formal); Inter := Null_Iir; end if; - if Get_Kind (Formal) = Iir_Kind_Signal_Interface_Declaration + if Get_Kind (Formal) = Iir_Kind_Interface_Signal_Declaration and then Get_Mode (Formal) in Iir_Out_Modes then Prefix := Name_To_Object (Get_Actual (Param)); if Prefix /= Null_Iir then case Get_Kind (Get_Object_Prefix (Prefix)) is when Iir_Kind_Signal_Declaration - | Iir_Kind_Signal_Interface_Declaration => + | Iir_Kind_Interface_Signal_Declaration => Prefix := Get_Longuest_Static_Prefix (Prefix); Sem_Stmts.Sem_Add_Driver (Prefix, Stmt); when others => @@ -3627,7 +3630,7 @@ package body Sem_Expr is case Get_Kind (Obj) is when Iir_Kind_Signal_Declaration | Iir_Kind_Constant_Declaration - | Iir_Kind_Constant_Interface_Declaration + | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Attribute_Value | Iir_Kind_Iterator_Declaration @@ -3636,7 +3639,7 @@ package body Sem_Expr is when Iir_Kinds_Quantity_Declaration => return; when Iir_Kind_File_Declaration - | Iir_Kind_File_Interface_Declaration => + | Iir_Kind_Interface_File_Declaration => -- LRM 4.3.2 Interface declarations -- The value of an object is said to be read [...] -- - When the object is a file and a READ operation is @@ -3644,8 +3647,8 @@ package body Sem_Expr is return; when Iir_Kind_Object_Alias_Declaration => Obj := Get_Name (Obj); - when Iir_Kind_Signal_Interface_Declaration - | Iir_Kind_Variable_Interface_Declaration => + when Iir_Kind_Interface_Signal_Declaration + | Iir_Kind_Interface_Variable_Declaration => case Get_Mode (Obj) is when Iir_In_Mode | Iir_Inout_Mode |