aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/translate/trans.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/translate/trans.ads')
-rw-r--r--src/vhdl/translate/trans.ads22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/vhdl/translate/trans.ads b/src/vhdl/translate/trans.ads
index 8d2f87267..228496b26 100644
--- a/src/vhdl/translate/trans.ads
+++ b/src/vhdl/translate/trans.ads
@@ -722,18 +722,21 @@ package Trans is
Range_Dir : O_Fnode;
Range_Length : O_Fnode;
- when Kind_Type_Array =>
+ when Kind_Type_Array
+ | Kind_Type_Record =>
+ -- For unbounded types:
+ -- The base type.
Base_Type : O_Tnode_Array;
Base_Ptr_Type : O_Tnode_Array;
+ -- The dope vector.
Bounds_Type : O_Tnode;
Bounds_Ptr_Type : O_Tnode;
+ -- The ortho type is a fat pointer to the base and the bounds.
+ -- These are the fields of the fat pointer.
Base_Field : O_Fnode_Array;
Bounds_Field : O_Fnode_Array;
- when Kind_Type_Record =>
- null;
-
when Kind_Type_File =>
-- Constant containing the signature of the file.
File_Signature : O_Dnode;
@@ -811,7 +814,13 @@ package Trans is
Ortho_Info_Basetype_Record_Init : constant Ortho_Info_Basetype_Type :=
(Kind => Kind_Type_Record,
- Rti_Max_Depth => 0);
+ Rti_Max_Depth => 0,
+ Base_Type => (O_Tnode_Null, O_Tnode_Null),
+ Base_Ptr_Type => (O_Tnode_Null, O_Tnode_Null),
+ Bounds_Type => O_Tnode_Null,
+ Bounds_Ptr_Type => O_Tnode_Null,
+ Base_Field => (O_Fnode_Null, O_Fnode_Null),
+ Bounds_Field => (O_Fnode_Null, O_Fnode_Null));
Ortho_Info_Basetype_File_Init : constant Ortho_Info_Basetype_Type :=
(Kind => Kind_Type_File,
@@ -1182,6 +1191,9 @@ package Trans is
-- Node for a record element declaration.
Field_Node : O_Fnode_Array := (O_Fnode_Null, O_Fnode_Null);
+ -- The field in the dope vector (for unbounded element).
+ Field_Bound : O_Fnode := O_Fnode_Null;
+
when Kind_Expr =>
-- Ortho tree which represents the expression, used for
-- enumeration literals.