aboutsummaryrefslogtreecommitdiffstats
path: root/src/ortho/debug/ortho_debug.private.ads
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2018-10-17 06:18:36 +0200
committerTristan Gingold <tgingold@free.fr>2018-10-21 08:03:37 +0200
commited7ad157dbecc784bb2df44684442e88431db561 (patch)
tree491533354ca2add405e08869f66c1c74622f97d7 /src/ortho/debug/ortho_debug.private.ads
parent13000af67c96c2a3417fa321daa3fbf50165f54f (diff)
downloadghdl-ed7ad157dbecc784bb2df44684442e88431db561.tar.gz
ghdl-ed7ad157dbecc784bb2df44684442e88431db561.tar.bz2
ghdl-ed7ad157dbecc784bb2df44684442e88431db561.zip
Rework translation of unbounded and complex types.
Diffstat (limited to 'src/ortho/debug/ortho_debug.private.ads')
-rw-r--r--src/ortho/debug/ortho_debug.private.ads41
1 files changed, 28 insertions, 13 deletions
diff --git a/src/ortho/debug/ortho_debug.private.ads b/src/ortho/debug/ortho_debug.private.ads
index a1e711b62..b505ff434 100644
--- a/src/ortho/debug/ortho_debug.private.ads
+++ b/src/ortho/debug/ortho_debug.private.ads
@@ -179,9 +179,10 @@ private
Aggr_Value : O_Cnode;
Aggr_Next : O_Cnode;
when OC_Address
- | OC_Unchecked_Address
- | OC_Subprogram_Address =>
- Decl : O_Dnode;
+ | OC_Unchecked_Address =>
+ Addr_Global : O_Gnode;
+ when OC_Subprogram_Address =>
+ Addr_Decl : O_Dnode;
end case;
end record;
@@ -280,12 +281,6 @@ private
OL_Slice,
OL_Selected_Element,
OL_Access_Element
-
- -- Variable, constant, parameter reference.
- -- This allows to read/write a declaration.
- --OL_Var_Ref,
- --OL_Const_Ref,
- --OL_Param_Ref
);
type O_Lnode_Type (Kind : OL_Kind);
@@ -311,10 +306,30 @@ private
Rec_El : O_Fnode;
when OL_Access_Element =>
Acc_Base : O_Enode;
--- when OL_Var_Ref
--- | OL_Const_Ref
--- | OL_Param_Ref =>
--- Decl : O_Dnode;
+ end case;
+ end record;
+
+ type OG_Kind is
+ (
+ OG_Decl,
+ OG_Selected_Element
+ );
+
+ type O_Gnode_Type (Kind : OG_Kind);
+ type O_Gnode is access O_Gnode_Type;
+ O_Gnode_Null : constant O_Gnode := null;
+
+ type O_Gnode_Type (Kind : OG_Kind) is record
+ -- Type of the result.
+ Rtype : O_Tnode;
+ -- True if referenced.
+ Ref : Boolean;
+ case Kind is
+ when OG_Decl =>
+ Decl : O_Dnode;
+ when OG_Selected_Element =>
+ Rec_Base : O_Gnode;
+ Rec_El : O_Fnode;
end case;
end record;