aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/translate/trans-chap7.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2017-01-02 05:05:35 +0100
committerTristan Gingold <tgingold@free.fr>2017-01-02 05:14:09 +0100
commit3a3d3cdb7ffcc2a13a8491edd9a00768e5018ea0 (patch)
treefb652b39edcd3cf8d878c71f4fc5f0b1762a4b46 /src/vhdl/translate/trans-chap7.adb
parent0e0c3efd5e7a375329982f293e85c01d254eaac1 (diff)
downloadghdl-3a3d3cdb7ffcc2a13a8491edd9a00768e5018ea0.tar.gz
ghdl-3a3d3cdb7ffcc2a13a8491edd9a00768e5018ea0.tar.bz2
ghdl-3a3d3cdb7ffcc2a13a8491edd9a00768e5018ea0.zip
translate: WIP for unbounded records.
Diffstat (limited to 'src/vhdl/translate/trans-chap7.adb')
-rw-r--r--src/vhdl/translate/trans-chap7.adb18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/vhdl/translate/trans-chap7.adb b/src/vhdl/translate/trans-chap7.adb
index cba7018aa..d9e14eadd 100644
--- a/src/vhdl/translate/trans-chap7.adb
+++ b/src/vhdl/translate/trans-chap7.adb
@@ -4506,23 +4506,25 @@ package body Trans.Chap7 is
return New_Compare_Op (ON_Eq, M2E (L), M2E (R),
Ghdl_Bool_Type);
- when Type_Mode_Array =>
+ when Type_Mode_Array
+ | Type_Mode_Unbounded_Array =>
declare
+ Base_Type : constant Iir_Array_Type_Definition
+ := Get_Base_Type (Etype);
Lc, Rc : O_Enode;
- Base_Type : Iir_Array_Type_Definition;
Func : Iir;
begin
- Base_Type := Get_Base_Type (Etype);
+ Func := Find_Predefined_Function
+ (Base_Type, Iir_Predefined_Array_Equality);
Lc := Translate_Implicit_Conv
(M2E (L), Etype, Base_Type, Mode_Value, Null_Iir);
Rc := Translate_Implicit_Conv
(M2E (R), Etype, Base_Type, Mode_Value, Null_Iir);
- Func := Find_Predefined_Function
- (Base_Type, Iir_Predefined_Array_Equality);
return Translate_Predefined_Lib_Operator (Lc, Rc, Func);
end;
- when Type_Mode_Record =>
+ when Type_Mode_Record
+ | Type_Mode_Unbounded_Record =>
declare
Func : Iir;
begin
@@ -4534,8 +4536,6 @@ package body Trans.Chap7 is
when Type_Mode_Unknown
| Type_Mode_File
- | Type_Mode_Unbounded_Array
- | Type_Mode_Unbounded_Record
| Type_Mode_Protected =>
raise Internal_Error;
end case;
@@ -4680,10 +4680,10 @@ package body Trans.Chap7 is
for I in Natural loop
El := Get_Nth_Element (El_List, I);
exit when El = Null_Iir;
+ Open_Temp;
Le := Chap6.Translate_Selected_Element (L, El);
Re := Chap6.Translate_Selected_Element (R, El);
- Open_Temp;
Start_If_Stmt
(If_Blk,
New_Monadic_Op (ON_Not,