aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/translate
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2016-10-11 06:19:19 +0200
committerTristan Gingold <tgingold@free.fr>2016-10-11 06:19:19 +0200
commitec63ed6f4287ef5a0a19817f3803972899cf7648 (patch)
treebe459880175235d631ac0f5249440d63cfc7a3de /src/vhdl/translate
parent498665c5328fa2c2e0a0d114e39c545d04fbdfe9 (diff)
downloadghdl-ec63ed6f4287ef5a0a19817f3803972899cf7648.tar.gz
ghdl-ec63ed6f4287ef5a0a19817f3803972899cf7648.tar.bz2
ghdl-ec63ed6f4287ef5a0a19817f3803972899cf7648.zip
Rework AST to setup ownership and reference policy.
Check it with nodes_gc.
Diffstat (limited to 'src/vhdl/translate')
-rw-r--r--src/vhdl/translate/trans-chap2.adb12
-rw-r--r--src/vhdl/translate/trans-chap4.adb3
-rw-r--r--src/vhdl/translate/trans-chap5.adb4
-rw-r--r--src/vhdl/translate/trans-chap7.adb2
-rw-r--r--src/vhdl/translate/trans-chap8.adb6
-rw-r--r--src/vhdl/translate/trans-chap9.adb3
6 files changed, 14 insertions, 16 deletions
diff --git a/src/vhdl/translate/trans-chap2.adb b/src/vhdl/translate/trans-chap2.adb
index 7222f2974..54c844aea 100644
--- a/src/vhdl/translate/trans-chap2.adb
+++ b/src/vhdl/translate/trans-chap2.adb
@@ -1212,7 +1212,8 @@ package body Trans.Chap2 is
when Attr_None =>
Instantiate_Iir_Info (Get_Iir (N, F));
when Attr_Ref
- | Attr_Forward_Ref =>
+ | Attr_Forward_Ref
+ | Attr_Maybe_Forward_Ref =>
null;
when Attr_Maybe_Ref =>
if not Get_Is_Ref (N) then
@@ -1313,8 +1314,7 @@ package body Trans.Chap2 is
-- package_instantiation_declaration
procedure Instantiate_Info_Package (Inst : Iir)
is
- Spec : constant Iir :=
- Get_Named_Entity (Get_Uninstantiated_Package_Name (Inst));
+ Spec : constant Iir := Get_Uninstantiated_Package_Decl (Inst);
Pkg_Info : constant Ortho_Info_Acc := Get_Info (Spec);
Info : Ortho_Info_Acc;
begin
@@ -1337,8 +1337,7 @@ package body Trans.Chap2 is
procedure Translate_Package_Instantiation_Declaration (Inst : Iir)
is
- Spec : constant Iir :=
- Get_Named_Entity (Get_Uninstantiated_Package_Name (Inst));
+ Spec : constant Iir := Get_Uninstantiated_Package_Decl (Inst);
Pkg_Info : constant Ortho_Info_Acc := Get_Info (Spec);
Info : Ortho_Info_Acc;
Interface_List : O_Inter_List;
@@ -1395,8 +1394,7 @@ package body Trans.Chap2 is
procedure Elab_Package_Instantiation_Declaration (Inst : Iir)
is
- Spec : constant Iir :=
- Get_Named_Entity (Get_Uninstantiated_Package_Name (Inst));
+ Spec : constant Iir := Get_Uninstantiated_Package_Decl (Inst);
Pkg_Info : constant Ortho_Info_Acc := Get_Info (Spec);
Info : constant Ortho_Info_Acc := Get_Info (Inst);
Constr : O_Assoc_List;
diff --git a/src/vhdl/translate/trans-chap4.adb b/src/vhdl/translate/trans-chap4.adb
index 3fa188df4..e59e7945c 100644
--- a/src/vhdl/translate/trans-chap4.adb
+++ b/src/vhdl/translate/trans-chap4.adb
@@ -269,8 +269,7 @@ package body Trans.Chap4 is
procedure Create_Package_Interface (Inter : Iir)
is
- Pkg : constant Iir := Get_Named_Entity
- (Get_Uninstantiated_Package_Name (Inter));
+ Pkg : constant Iir := Get_Uninstantiated_Package_Decl (Inter);
Pkg_Info : constant Ortho_Info_Acc := Get_Info (Pkg);
Info : Ortho_Info_Acc;
begin
diff --git a/src/vhdl/translate/trans-chap5.adb b/src/vhdl/translate/trans-chap5.adb
index 7572032af..7a6bb0cfb 100644
--- a/src/vhdl/translate/trans-chap5.adb
+++ b/src/vhdl/translate/trans-chap5.adb
@@ -802,8 +802,8 @@ package body Trans.Chap5 is
pragma Assert (Get_Kind (Formal) =
Iir_Kind_Interface_Package_Declaration);
declare
- Uninst_Pkg : constant Iir := Get_Named_Entity
- (Get_Uninstantiated_Package_Name (Formal));
+ Uninst_Pkg : constant Iir :=
+ Get_Uninstantiated_Package_Decl (Formal);
Uninst_Info : constant Ortho_Info_Acc :=
Get_Info (Uninst_Pkg);
Formal_Info : constant Ortho_Info_Acc :=
diff --git a/src/vhdl/translate/trans-chap7.adb b/src/vhdl/translate/trans-chap7.adb
index 451dfcba6..c216e199d 100644
--- a/src/vhdl/translate/trans-chap7.adb
+++ b/src/vhdl/translate/trans-chap7.adb
@@ -3050,7 +3050,7 @@ package body Trans.Chap7 is
Set_El (Get_Nth_Element (El_List, El_Index));
El_Index := El_Index + 1;
when Iir_Kind_Choice_By_Name =>
- Set_El (Get_Choice_Name (Assoc));
+ Set_El (Get_Named_Entity (Get_Choice_Name (Assoc)));
El_Index := Natural'Last;
when Iir_Kind_Choice_By_Others =>
for J in Set_Array'Range loop
diff --git a/src/vhdl/translate/trans-chap8.adb b/src/vhdl/translate/trans-chap8.adb
index c8f270174..296f4de7f 100644
--- a/src/vhdl/translate/trans-chap8.adb
+++ b/src/vhdl/translate/trans-chap8.adb
@@ -919,7 +919,7 @@ package body Trans.Chap8 is
Elem := Get_Nth_Element (El_List, El_Index);
El_Index := El_Index + 1;
when Iir_Kind_Choice_By_Name =>
- Elem := Get_Choice_Name (Aggr_El);
+ Elem := Get_Named_Entity (Get_Choice_Name (Aggr_El));
when others =>
Error_Kind ("translate_variable_rec_aggr", Aggr_El);
end case;
@@ -3158,7 +3158,7 @@ package body Trans.Chap8 is
and then (Get_Kind (Base_Formal)
= Iir_Kind_Interface_Variable_Declaration)
then
- Formal_Type := Get_Type (Get_Formal (El));
+ Formal_Type := Get_Type (Get_Named_Entity (Get_Formal (El)));
Ftype_Info := Get_Info (Formal_Type);
pragma Assert
(Get_Interface_Kind (Base_Formal) = Mode_Value);
@@ -3817,7 +3817,7 @@ package body Trans.Chap8 is
Element := Get_Nth_Element (El_List, El_Index);
El_Index := El_Index + 1;
when Iir_Kind_Choice_By_Name =>
- Element := Get_Choice_Name (Aggr_El);
+ Element := Get_Named_Entity (Get_Choice_Name (Aggr_El));
El_Index := Natural'Last;
when others =>
Error_Kind ("translate_signal_target_record_aggr", Aggr_El);
diff --git a/src/vhdl/translate/trans-chap9.adb b/src/vhdl/translate/trans-chap9.adb
index e3aad5f45..1dadfba4d 100644
--- a/src/vhdl/translate/trans-chap9.adb
+++ b/src/vhdl/translate/trans-chap9.adb
@@ -1154,7 +1154,8 @@ package body Trans.Chap9 is
when Attr_None =>
Destroy_Types (Get_Iir (N, F));
when Attr_Ref
- | Attr_Forward_Ref =>
+ | Attr_Forward_Ref
+ | Attr_Maybe_Forward_Ref =>
null;
when Attr_Maybe_Ref =>
if not Get_Is_Ref (N) then