diff options
author | Tristan Gingold <tgingold@free.fr> | 2017-05-17 05:35:18 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2017-05-18 07:59:35 +0200 |
commit | 2e3634206b04775398f712a4da735d70a32020f2 (patch) | |
tree | f7a5f4902bc5abe5e3eaed4db51abcf86ee7230e /src | |
parent | 6230ad4e5e9329e57d44066aba8c8d7711042fa3 (diff) | |
download | ghdl-2e3634206b04775398f712a4da735d70a32020f2.tar.gz ghdl-2e3634206b04775398f712a4da735d70a32020f2.tar.bz2 ghdl-2e3634206b04775398f712a4da735d70a32020f2.zip |
trans-chap2: minor refactoring to clarify code.
Minor reformating.
Diffstat (limited to 'src')
-rw-r--r-- | src/vhdl/iirs.ads | 2 | ||||
-rw-r--r-- | src/vhdl/sem.adb | 9 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap2.adb | 15 |
3 files changed, 10 insertions, 16 deletions
diff --git a/src/vhdl/iirs.ads b/src/vhdl/iirs.ads index 03109edb1..e06a192a8 100644 --- a/src/vhdl/iirs.ads +++ b/src/vhdl/iirs.ads @@ -897,7 +897,7 @@ package Iirs is -- type. -- Get/Set_Macro_Expanded_Flag (Flag2) -- - -- True if the package declaration at least one package instantiation + -- True if the package declaration has least one package instantiation -- declaration whose uninstantiated declaration needs both a body and -- macro-expansion. In that case, the instantiation needs macro-expansion -- of their body. diff --git a/src/vhdl/sem.adb b/src/vhdl/sem.adb index 5ee8e8da1..82738da07 100644 --- a/src/vhdl/sem.adb +++ b/src/vhdl/sem.adb @@ -2506,7 +2506,7 @@ package body Sem is -- Return true if package declaration DECL needs a body. -- Ie, it contains subprogram specification or deferred constants. function Package_Need_Body_P (Decl: Iir_Package_Declaration) - return Boolean + return Boolean is El: Iir; Def : Iir; @@ -2641,11 +2641,10 @@ package body Sem is -- LRM 2.5 Package Declarations. procedure Sem_Package_Declaration (Decl: Iir_Package_Declaration) is - Unit : Iir_Design_Unit; - Implicit : Implicit_Signal_Declaration_Type; + Unit : constant Iir_Design_Unit := Get_Design_Unit (Decl); Header : constant Iir := Get_Package_Header (Decl); + Implicit : Implicit_Signal_Declaration_Type; begin - Unit := Get_Design_Unit (Decl); Sem_Scopes.Add_Name (Decl); Set_Visible_Flag (Decl, True); Xref_Decl (Decl); @@ -2715,7 +2714,9 @@ package body Sem is Pop_Signals_Declarative_Part (Implicit); Close_Declarative_Region; + Set_Need_Body (Decl, Package_Need_Body_P (Decl)); + if Vhdl_Std >= Vhdl_08 then Set_Need_Instance_Bodies (Decl, Package_Need_Instance_Bodies_P (Decl)); diff --git a/src/vhdl/translate/trans-chap2.adb b/src/vhdl/translate/trans-chap2.adb index fef4957ac..958158fd4 100644 --- a/src/vhdl/translate/trans-chap2.adb +++ b/src/vhdl/translate/trans-chap2.adb @@ -1250,6 +1250,9 @@ package body Trans.Chap2 is Subprg_Local_Id => Src.Subprg_Local_Id, Subprg_Exit => Src.Subprg_Exit, Subprg_Result => Src.Subprg_Result); + Push_Instantiate_Var_Scope + (Dest.Subprg_Frame_Scope'Access, + Src.Subprg_Frame_Scope'Access); when Kind_Operator => Dest.all := (Kind => Kind_Operator, @@ -1333,17 +1336,6 @@ package body Trans.Chap2 is Info := Add_Info (N, Orig_Info.Kind); Copy_Info (Info, Orig_Info); - - case Info.Kind is - when Kind_Subprg => - Push_Instantiate_Var_Scope - (Info.Subprg_Frame_Scope'Access, - Orig_Info.Subprg_Frame_Scope'Access); - when Kind_Type => - null; - when others => - null; - end case; end if; for I in Fields'Range loop @@ -1419,6 +1411,7 @@ package body Trans.Chap2 is end loop; if Info /= null then + -- Pop scope instantiations created in copy_info. case Info.Kind is when Kind_Subprg => Pop_Instantiate_Var_Scope |