summaryrefslogtreecommitdiff
path: root/translate/translation.adb
diff options
context:
space:
mode:
authorgingold2008-09-06 03:24:23 +0000
committergingold2008-09-06 03:24:23 +0000
commitdb0dacf3b4a07f26c317d7cda0c6f8882e511f88 (patch)
tree5a4e45f543f458deba660baed7d0aacfe2751322 /translate/translation.adb
parentb42e36e23f23a0d27e7b08d6cb4461237720de3b (diff)
downloadghdl-db0dacf3b4a07f26c317d7cda0c6f8882e511f88.tar.gz
ghdl-db0dacf3b4a07f26c317d7cda0c6f8882e511f88.tar.bz2
ghdl-db0dacf3b4a07f26c317d7cda0c6f8882e511f88.zip
New feature: all-sensitized processes (for vhdl 2008)
Diffstat (limited to 'translate/translation.adb')
-rw-r--r--translate/translation.adb18
1 files changed, 11 insertions, 7 deletions
diff --git a/translate/translation.adb b/translate/translation.adb
index 24fdc76..1e56581 100644
--- a/translate/translation.adb
+++ b/translate/translation.adb
@@ -21370,6 +21370,7 @@ package body Translation is
Constr : O_Assoc_List;
Info : Proc_Info_Acc;
List : Iir_List;
+ List_Orig : Iir_List;
Final : Boolean;
begin
New_Debug_Line_Stmt (Get_Line_Number (Proc));
@@ -21407,16 +21408,11 @@ package body Translation is
New_Lit (New_Subprogram_Address (Info.Process_Subprg,
Ghdl_Ptr_Type)));
Rtis.Associate_Rti_Context (Constr, Proc);
--- New_Association
--- (Constr,
--- New_Address (New_Selected_Element
--- (Get_Instance_Ref (Info.Process_Decls_Type),
--- Info.Process_Name),
--- Ghdl_Instance_Name_Acc));
New_Procedure_Call (Constr);
-- First elaborate declarations since a driver may depend on
-- an alias declaration.
+ -- Also, with vhdl 08 a sensitivity element may depend on an alias.
Chap4.Elab_Declaration_Chain (Proc, Final);
-- Register drivers.
@@ -21462,9 +21458,17 @@ package body Translation is
end if;
if Is_Sensitized then
- List := Get_Sensitivity_List (Proc);
+ List_Orig := Get_Sensitivity_List (Proc);
+ if List_Orig = Iir_List_All then
+ List := Canon.Canon_Extract_Process_Sensitivity (Proc);
+ else
+ List := List_Orig;
+ end if;
Destroy_Types_In_List (List);
Register_Signal_List (List, Ghdl_Process_Add_Sensitivity);
+ if List_Orig = Iir_List_All then
+ Destroy_Iir_List (List);
+ end if;
end if;
Pop_Scope (Info.Process_Decls_Type);