aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-07-22 06:57:46 +0200
committerTristan Gingold <tgingold@free.fr>2020-07-22 22:23:00 +0200
commitd8a81db96f512c0d58b554df294f4acb0915d6a9 (patch)
tree2d1bdd2f3ee9e225adda728e8a3c6eff54ffb78c
parent4b862ddc4d81ff8b60bbc78eeb26d4221bfd52d8 (diff)
downloadghdl-d8a81db96f512c0d58b554df294f4acb0915d6a9.tar.gz
ghdl-d8a81db96f512c0d58b554df294f4acb0915d6a9.tar.bz2
ghdl-d8a81db96f512c0d58b554df294f4acb0915d6a9.zip
vhdl: replace base_type with parent_type in nodes
Only for subtype definition and remove base_type in type definitions. Allows to better track the addition of contraints.
-rw-r--r--python/libghdl/thin/vhdl/nodes.py4
-rw-r--r--python/libghdl/thin/vhdl/nodes_meta.py6
-rw-r--r--src/synth/synth-aggr.adb1
-rw-r--r--src/vhdl/simulate/simul-environments.adb1
-rw-r--r--src/vhdl/vhdl-disp_tree.adb1
-rw-r--r--src/vhdl/vhdl-evaluation.adb12
-rw-r--r--src/vhdl/vhdl-ieee-numeric.adb1
-rw-r--r--src/vhdl/vhdl-ieee-std_logic_1164.adb1
-rw-r--r--src/vhdl/vhdl-ieee-vital_timing.adb2
-rw-r--r--src/vhdl/vhdl-nodes.adb17
-rw-r--r--src/vhdl/vhdl-nodes.adb.in1
-rw-r--r--src/vhdl/vhdl-nodes.ads51
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb684
-rw-r--r--src/vhdl/vhdl-nodes_meta.ads4
-rw-r--r--src/vhdl/vhdl-sem_assocs.adb4
-rw-r--r--src/vhdl/vhdl-sem_decls.adb2
-rw-r--r--src/vhdl/vhdl-sem_expr.adb3
-rw-r--r--src/vhdl/vhdl-sem_names.adb4
-rw-r--r--src/vhdl/vhdl-sem_types.adb38
-rw-r--r--src/vhdl/vhdl-std_package.adb39
-rw-r--r--src/vhdl/vhdl-utils.adb49
-rw-r--r--src/vhdl/vhdl-utils.ads8
22 files changed, 436 insertions, 497 deletions
diff --git a/python/libghdl/thin/vhdl/nodes.py b/python/libghdl/thin/vhdl/nodes.py
index 9b6d03977..f1eb1b721 100644
--- a/python/libghdl/thin/vhdl/nodes.py
+++ b/python/libghdl/thin/vhdl/nodes.py
@@ -2177,9 +2177,9 @@ Get_Right_Limit_Expr = libghdl.vhdl__nodes__get_right_limit_expr
Set_Right_Limit_Expr = libghdl.vhdl__nodes__set_right_limit_expr
-Get_Base_Type = libghdl.vhdl__nodes__get_base_type
+Get_Parent_Type = libghdl.vhdl__nodes__get_parent_type
-Set_Base_Type = libghdl.vhdl__nodes__set_base_type
+Set_Parent_Type = libghdl.vhdl__nodes__set_parent_type
Get_Simple_Nature = libghdl.vhdl__nodes__get_simple_nature
diff --git a/python/libghdl/thin/vhdl/nodes_meta.py b/python/libghdl/thin/vhdl/nodes_meta.py
index 239cd942a..352f30ca7 100644
--- a/python/libghdl/thin/vhdl/nodes_meta.py
+++ b/python/libghdl/thin/vhdl/nodes_meta.py
@@ -211,7 +211,7 @@ class fields:
Right_Limit = 146
Left_Limit_Expr = 147
Right_Limit_Expr = 148
- Base_Type = 149
+ Parent_Type = 149
Simple_Nature = 150
Base_Nature = 151
Resolution_Indication = 152
@@ -940,8 +940,8 @@ Has_Left_Limit_Expr =\
Has_Right_Limit_Expr =\
libghdl.vhdl__nodes_meta__has_right_limit_expr
-Has_Base_Type =\
- libghdl.vhdl__nodes_meta__has_base_type
+Has_Parent_Type =\
+ libghdl.vhdl__nodes_meta__has_parent_type
Has_Simple_Nature =\
libghdl.vhdl__nodes_meta__has_simple_nature
diff --git a/src/synth/synth-aggr.adb b/src/synth/synth-aggr.adb
index 6177c106d..7732744a1 100644
--- a/src/synth/synth-aggr.adb
+++ b/src/synth/synth-aggr.adb
@@ -25,6 +25,7 @@ with Netlists.Utils; use Netlists.Utils;
with Netlists.Builders; use Netlists.Builders;
with Vhdl.Errors; use Vhdl.Errors;
+with Vhdl.Utils; use Vhdl.Utils;
with Synth.Errors; use Synth.Errors;
with Synth.Expr; use Synth.Expr;
diff --git a/src/vhdl/simulate/simul-environments.adb b/src/vhdl/simulate/simul-environments.adb
index 221e812d7..5e28441cf 100644
--- a/src/vhdl/simulate/simul-environments.adb
+++ b/src/vhdl/simulate/simul-environments.adb
@@ -22,6 +22,7 @@ with GNAT.Debug_Utilities;
with Simple_IO;
with Name_Table;
+with Vhdl.Utils; use Vhdl.Utils;
with Simul.Debugger; use Simul.Debugger;
package body Simul.Environments is
diff --git a/src/vhdl/vhdl-disp_tree.adb b/src/vhdl/vhdl-disp_tree.adb
index b9801ce89..06a06d640 100644
--- a/src/vhdl/vhdl-disp_tree.adb
+++ b/src/vhdl/vhdl-disp_tree.adb
@@ -25,6 +25,7 @@ with Files_Map;
with PSL.Types; use PSL.Types;
with PSL.Dump_Tree;
with Vhdl.Nodes_Meta;
+with Vhdl.Utils; use Vhdl.Utils;
-- Do not add a use clause for iirs_utils, as it may crash for ill-formed
-- trees, which is annoying while debugging.
diff --git a/src/vhdl/vhdl-evaluation.adb b/src/vhdl/vhdl-evaluation.adb
index d21288136..65fa9e6ec 100644
--- a/src/vhdl/vhdl-evaluation.adb
+++ b/src/vhdl/vhdl-evaluation.adb
@@ -392,7 +392,7 @@ package body Vhdl.Evaluation is
Error_Kind ("create_range_subtype_by_length", A_Type);
end case;
Set_Location (Res, Loc);
- Set_Base_Type (Res, Get_Base_Type (A_Type));
+ Set_Parent_Type (Res, A_Type);
Set_Type_Staticness (Res, Locally);
return Res;
@@ -1199,18 +1199,20 @@ package body Vhdl.Evaluation is
Get_Range_Constraint (Left_Index);
Ret_Type : constant Iir :=
Get_Return_Type (Get_Implementation (Orig));
+ Rng_Type : constant Iir := Get_Index_Type (Ret_Type, 0);
A_Range : Iir;
Index_Type : Iir;
begin
A_Range := Create_Iir (Iir_Kind_Range_Expression);
- Set_Type (A_Range, Get_Index_Type (Ret_Type, 0));
+ Location_Copy (A_Range, Orig);
+ Set_Type (A_Range, Rng_Type);
Set_Expr_Staticness (A_Range, Locally);
Set_Left_Limit (A_Range, Get_Left_Limit (Left_Range));
Set_Direction (A_Range, Get_Direction (Left_Range));
- Location_Copy (A_Range, Orig);
Set_Right_Limit_By_Length (A_Range, Int64 (Res_Len));
+
Index_Type := Create_Range_Subtype_From_Type
- (Left_Index, Get_Location (Orig));
+ (Rng_Type, Get_Location (Orig));
Set_Range_Constraint (Index_Type, A_Range);
Res_Type := Create_Unidim_Array_From_Index
(Origin_Type, Index_Type, Orig);
@@ -2350,7 +2352,7 @@ package body Vhdl.Evaluation is
Index_Type := Create_Iir (Iir_Kind_Integer_Subtype_Definition);
Location_Copy (Index_Type, Conv);
Set_Range_Constraint (Index_Type, Rng);
- Set_Base_Type (Index_Type, Get_Base_Type (Conv_Index_Type));
+ Set_Parent_Type (Index_Type, Conv_Index_Type);
Set_Type_Staticness (Index_Type, Locally);
end if;
Res_Type := Create_Unidim_Array_From_Index
diff --git a/src/vhdl/vhdl-ieee-numeric.adb b/src/vhdl/vhdl-ieee-numeric.adb
index db368c380..a6a0559e4 100644
--- a/src/vhdl/vhdl-ieee-numeric.adb
+++ b/src/vhdl/vhdl-ieee-numeric.adb
@@ -21,6 +21,7 @@ with Vhdl.Std_Package;
with Std_Names; use Std_Names;
with Vhdl.Errors; use Vhdl.Errors;
with Vhdl.Ieee.Std_Logic_1164;
+with Vhdl.Utils; use Vhdl.Utils;
package body Vhdl.Ieee.Numeric is
type Pkg_Kind is (Pkg_Std, Pkg_Bit);
diff --git a/src/vhdl/vhdl-ieee-std_logic_1164.adb b/src/vhdl/vhdl-ieee-std_logic_1164.adb
index 44fc5f631..ca962d2f5 100644
--- a/src/vhdl/vhdl-ieee-std_logic_1164.adb
+++ b/src/vhdl/vhdl-ieee-std_logic_1164.adb
@@ -19,6 +19,7 @@ with Types; use Types;
with Name_Table;
with Std_Names; use Std_Names;
with Vhdl.Errors; use Vhdl.Errors;
+with Vhdl.Utils; use Vhdl.Utils;
with Vhdl.Std_Package;
package body Vhdl.Ieee.Std_Logic_1164 is
diff --git a/src/vhdl/vhdl-ieee-vital_timing.adb b/src/vhdl/vhdl-ieee-vital_timing.adb
index 89cfc7df0..5650d4fdd 100644
--- a/src/vhdl/vhdl-ieee-vital_timing.adb
+++ b/src/vhdl/vhdl-ieee-vital_timing.adb
@@ -27,7 +27,7 @@ with Vhdl.Sem_Scopes;
with Vhdl.Sem_Specs;
with Vhdl.Evaluation;
with Vhdl.Sem;
-with Vhdl.Utils;
+with Vhdl.Utils; use Vhdl.Utils;
package body Vhdl.Ieee.Vital_Timing is
-- This package is based on IEEE 1076.4 1995.
diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb
index b74f4b307..4891f57a8 100644
--- a/src/vhdl/vhdl-nodes.adb
+++ b/src/vhdl/vhdl-nodes.adb
@@ -842,7 +842,6 @@ package body Vhdl.Nodes is
begin
Res := Create_Node (Format_Short);
Set_Nkind (Res, Iir_Kind'Pos (Iir_Kind_Error));
- Set_Base_Type (Res, Res);
return Res;
end Create_Iir_Error;
@@ -3776,21 +3775,21 @@ package body Vhdl.Nodes is
Set_Field3 (Decl, Limit);
end Set_Right_Limit_Expr;
- function Get_Base_Type (Decl : Iir) return Iir is
+ function Get_Parent_Type (Decl : Iir) return Iir is
begin
pragma Assert (Decl /= Null_Iir);
- pragma Assert (Has_Base_Type (Get_Kind (Decl)),
- "no field Base_Type");
+ pragma Assert (Has_Parent_Type (Get_Kind (Decl)),
+ "no field Parent_Type");
return Get_Field4 (Decl);
- end Get_Base_Type;
+ end Get_Parent_Type;
- procedure Set_Base_Type (Decl : Iir; Base_Type : Iir) is
+ procedure Set_Parent_Type (Decl : Iir; Base_Type : Iir) is
begin
pragma Assert (Decl /= Null_Iir);
- pragma Assert (Has_Base_Type (Get_Kind (Decl)),
- "no field Base_Type");
+ pragma Assert (Has_Parent_Type (Get_Kind (Decl)),
+ "no field Parent_Type");
Set_Field4 (Decl, Base_Type);
- end Set_Base_Type;
+ end Set_Parent_Type;
function Get_Simple_Nature (Def : Iir) return Iir is
begin
diff --git a/src/vhdl/vhdl-nodes.adb.in b/src/vhdl/vhdl-nodes.adb.in
index 913f54f7e..5c77f9fef 100644
--- a/src/vhdl/vhdl-nodes.adb.in
+++ b/src/vhdl/vhdl-nodes.adb.in
@@ -842,7 +842,6 @@ package body Vhdl.Nodes is
begin
Res := Create_Node (Format_Short);
Set_Nkind (Res, Iir_Kind'Pos (Iir_Kind_Error));
- Set_Base_Type (Res, Res);
return Res;
end Create_Iir_Error;
diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads
index 629f4671e..a7ea499f3 100644
--- a/src/vhdl/vhdl-nodes.ads
+++ b/src/vhdl/vhdl-nodes.ads
@@ -2315,10 +2315,10 @@ package Vhdl.Nodes is
-- Note: a type definition cannot be anoynymous.
-- Get/Set_Type_Declarator (Field3)
--
- -- The base type.
- -- For a subtype, it returns the type.
- -- For a type, it must return the type itself.
- -- Get/Set_Base_Type (Field4)
+ -- The parent type.
+ -- This is the type or subtype which was used to build a subtype. This
+ -- creates a path to the base type. Only for subtypes.
+ -- Get/Set_Parent_Type (Field4)
--
-- The staticness of a type, according to LRM93 7.4.1.
-- Note: These types definition are always locally static:
@@ -2347,9 +2347,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Always itself
- -- Get/Set_Base_Type (Field4)
- --
-- Get/Set_Resolved_Flag (Flag1)
--
-- Get/Set_Signal_Type_Flag (Flag2)
@@ -2411,8 +2408,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Get/Set_Resolved_Flag (Flag1)
--
-- Get/Set_Signal_Type_Flag (Flag2)
@@ -2483,8 +2478,6 @@ package Vhdl.Nodes is
-- The type declarator that has created this type.
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Type staticness is always locally.
-- Get/Set_Type_Staticness (State1)
--
@@ -2521,8 +2514,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Get/Set_Type_Staticness (State1)
--
-- Get/Set_Constraint_State (State2)
@@ -2550,8 +2541,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Get/Set_Type_Staticness (State1)
--
-- Get/Set_Constraint_State (State2)
@@ -2584,8 +2573,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Next access type that also referenced the same incomplete type when
-- defined.
-- Get/Set_Incomplete_Type_Ref_Chain (Field0)
@@ -2602,8 +2589,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Get/Set_Resolved_Flag (Flag1)
--
-- Get/Set_Signal_Type_Flag (Flag2)
@@ -2626,8 +2611,6 @@ package Vhdl.Nodes is
-- Set to the incomplete type declaration.
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Set to the complete type definition when completed.
-- Get/Set_Complete_Type_Definition (Field5)
--
@@ -2645,8 +2628,6 @@ package Vhdl.Nodes is
-- Set to interface type declaration.
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Set only during analysis of association: type associated with this
-- interface, so that references to this interface can use the actual
-- type.
@@ -2668,8 +2649,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Get/Set_Attribute_Value_Chain (Field5)
--
-- Get/Set_Type_Staticness (State1)
@@ -2711,8 +2690,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Get/Set_Resolved_Flag (Flag1)
--
-- Get/Set_Signal_Type_Flag (Flag2)
@@ -2796,7 +2773,7 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
+ -- Get/Set_Parent_Type (Field4)
--
-- Get/Set_Resolution_Indication (Field5)
--
@@ -2818,7 +2795,7 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
+ -- Get/Set_Parent_Type (Field4)
--
-- Get/Set_Resolution_Indication (Field5)
--
@@ -2842,7 +2819,7 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
+ -- Get/Set_Parent_Type (Field4)
--
-- Get/Set_Designated_Subtype_Indication (Field5)
--
@@ -2900,7 +2877,7 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
+ -- Get/Set_Parent_Type (Field4)
--
-- Get/Set_Resolution_Indication (Field5)
--
@@ -2942,7 +2919,7 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
+ -- Get/Set_Parent_Type (Field4)
--
-- Get/Set_Type_Staticness (State1)
--
@@ -2989,7 +2966,7 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
+ -- Get/Set_Parent_Type (Field4)
--
-- Get/Set_Resolution_Indication (Field5)
--
@@ -4740,8 +4717,6 @@ package Vhdl.Nodes is
--
-- Get/Set_Type_Declarator (Field3)
--
- -- Get/Set_Base_Type (Field4)
- --
-- Get/Set_Expr_Staticness (State1)
--
-- Get/Set_Type_Staticness (Alias State1)
@@ -7987,9 +7962,9 @@ package Vhdl.Nodes is
procedure Set_Right_Limit_Expr (Decl : Iir_Range_Expression; Limit : Iir);
-- Field: Field4 Ref
- function Get_Base_Type (Decl : Iir) return Iir;
- procedure Set_Base_Type (Decl : Iir; Base_Type : Iir);
- pragma Inline (Get_Base_Type);
+ function Get_Parent_Type (Decl : Iir) return Iir;
+ procedure Set_Parent_Type (Decl : Iir; Base_Type : Iir);
+ pragma Inline (Get_Parent_Type);
-- Only for composite base nature: the simple nature.
-- Field: Field7 Ref
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index 20f40cfe4..d400818a8 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -168,7 +168,7 @@ package body Vhdl.Nodes_Meta is
Field_Right_Limit => Type_Iir,
Field_Left_Limit_Expr => Type_Iir,
Field_Right_Limit_Expr => Type_Iir,
- Field_Base_Type => Type_Iir,
+ Field_Parent_Type => Type_Iir,
Field_Simple_Nature => Type_Iir,
Field_Base_Nature => Type_Iir,
Field_Resolution_Indication => Type_Iir,
@@ -691,8 +691,8 @@ package body Vhdl.Nodes_Meta is
return "left_limit_expr";
when Field_Right_Limit_Expr =>
return "right_limit_expr";
- when Field_Base_Type =>
- return "base_type";
+ when Field_Parent_Type =>
+ return "parent_type";
when Field_Simple_Nature =>
return "simple_nature";
when Field_Base_Nature =>
@@ -2053,7 +2053,7 @@ package body Vhdl.Nodes_Meta is
return Attr_None;
when Field_Right_Limit_Expr =>
return Attr_None;
- when Field_Base_Type =>
+ when Field_Parent_Type =>
return Attr_Ref;
when Field_Simple_Nature =>
return Attr_Ref;
@@ -2497,7 +2497,6 @@ package body Vhdl.Nodes_Meta is
Field_Type,
Field_Error_Origin,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Design_File
Field_Design_File_Directory,
Field_Design_File_Filename,
@@ -2829,7 +2828,6 @@ package body Vhdl.Nodes_Meta is
Field_Designated_Subtype_Indication,
Field_Designated_Type,
Field_Type_Declarator,
- Field_Base_Type,
Field_Incomplete_Type_Ref_Chain,
-- Iir_Kind_Incomplete_Type_Definition
Field_Resolved_Flag,
@@ -2838,7 +2836,6 @@ package body Vhdl.Nodes_Meta is
Field_Type_Staticness,
Field_Incomplete_Type_Ref_Chain,
Field_Type_Declarator,
- Field_Base_Type,
Field_Complete_Type_Definition,
-- Iir_Kind_Interface_Type_Definition
Field_Resolved_Flag,
@@ -2846,7 +2843,6 @@ package body Vhdl.Nodes_Meta is
Field_Has_Signal_Flag,
Field_Type_Staticness,
Field_Type_Declarator,
- Field_Base_Type,
Field_Associated_Type,
-- Iir_Kind_File_Type_Definition
Field_Resolved_Flag,
@@ -2855,7 +2851,6 @@ package body Vhdl.Nodes_Meta is
Field_Type_Staticness,
Field_File_Type_Mark,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Protected_Type_Declaration
Field_Resolved_Flag,
Field_Signal_Type_Flag,
@@ -2865,7 +2860,6 @@ package body Vhdl.Nodes_Meta is
Field_Declaration_Chain,
Field_Protected_Type_Body,
Field_Type_Declarator,
- Field_Base_Type,
Field_Attribute_Value_Chain,
-- Iir_Kind_Record_Type_Definition
Field_Resolved_Flag,
@@ -2878,7 +2872,6 @@ package body Vhdl.Nodes_Meta is
Field_Constraint_State,
Field_Elements_Declaration_List,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Array_Type_Definition
Field_Resolved_Flag,
Field_Signal_Type_Flag,
@@ -2891,7 +2884,6 @@ package body Vhdl.Nodes_Meta is
Field_Index_Subtype_List,
Field_Element_Subtype,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Array_Subtype_Definition
Field_Resolved_Flag,
Field_Signal_Type_Flag,
@@ -2907,7 +2899,7 @@ package body Vhdl.Nodes_Meta is
Field_Tolerance,
Field_Element_Subtype,
Field_Type_Declarator,
- Field_Base_Type,
+ Field_Parent_Type,
-- Iir_Kind_Record_Subtype_Definition
Field_Resolved_Flag,
Field_Is_Ref,
@@ -2919,7 +2911,7 @@ package body Vhdl.Nodes_Meta is
Field_Elements_Declaration_List,
Field_Subtype_Type_Mark,
Field_Type_Declarator,
- Field_Base_Type,
+ Field_Parent_Type,
Field_Resolution_Indication,
Field_Tolerance,
-- Iir_Kind_Access_Subtype_Definition
@@ -2929,7 +2921,7 @@ package body Vhdl.Nodes_Meta is
Field_Designated_Type,
Field_Subtype_Type_Mark,
Field_Type_Declarator,
- Field_Base_Type,
+ Field_Parent_Type,
Field_Designated_Subtype_Indication,
-- Iir_Kind_Physical_Subtype_Definition
Field_Resolved_Flag,
@@ -2940,7 +2932,7 @@ package body Vhdl.Nodes_Meta is
Field_Range_Constraint,
Field_Subtype_Type_Mark,
Field_Type_Declarator,
- Field_Base_Type,
+ Field_Parent_Type,
Field_Resolution_Indication,
-- Iir_Kind_Floating_Subtype_Definition
Field_Resolved_Flag,
@@ -2951,7 +2943,7 @@ package body Vhdl.Nodes_Meta is
Field_Range_Constraint,
Field_Subtype_Type_Mark,
Field_Type_Declarator,
- Field_Base_Type,
+ Field_Parent_Type,
Field_Resolution_Indication,
Field_Tolerance,
-- Iir_Kind_Integer_Subtype_Definition
@@ -2963,7 +2955,7 @@ package body Vhdl.Nodes_Meta is
Field_Range_Constraint,
Field_Subtype_Type_Mark,
Field_Type_Declarator,
- Field_Base_Type,
+ Field_Parent_Type,
Field_Resolution_Indication,
-- Iir_Kind_Enumeration_Subtype_Definition
Field_Resolved_Flag,
@@ -2974,7 +2966,7 @@ package body Vhdl.Nodes_Meta is
Field_Range_Constraint,
Field_Subtype_Type_Mark,
Field_Type_Declarator,
- Field_Base_Type,
+ Field_Parent_Type,
Field_Resolution_Indication,
-- Iir_Kind_Enumeration_Type_Definition
Field_Resolved_Flag,
@@ -2988,7 +2980,6 @@ package body Vhdl.Nodes_Meta is
Field_Enumeration_Literal_List,
Field_Range_Constraint,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Integer_Type_Definition
Field_Resolved_Flag,
Field_Is_Ref,
@@ -2998,7 +2989,6 @@ package body Vhdl.Nodes_Meta is
Field_Type_Staticness,
Field_Range_Constraint,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Floating_Type_Definition
Field_Resolved_Flag,
Field_Is_Ref,
@@ -3008,7 +2998,6 @@ package body Vhdl.Nodes_Meta is
Field_Type_Staticness,
Field_Range_Constraint,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Physical_Type_Definition
Field_Resolved_Flag,
Field_Is_Ref,
@@ -3021,7 +3010,6 @@ package body Vhdl.Nodes_Meta is
Field_Range_Constraint,
Field_Unit_Chain,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Range_Expression
Field_Direction,
Field_Expr_Staticness,
@@ -3045,13 +3033,12 @@ package body Vhdl.Nodes_Meta is
Field_Signal_Type_Flag,
Field_Type_Staticness,
Field_Type_Declarator,
- Field_Base_Type,
-- Iir_Kind_Subtype_Definition
Field_Is_Ref,
Field_Range_Constraint,
Field_Subtype_Type_Mark,
Field_Type_Declarator,
- Field_Base_Type,
+ Field_Parent_Type,
Field_Resolution_Indication,
Field_Tolerance,
-- Iir_Kind_Scalar_Nature_Definition
@@ -5145,316 +5132,316 @@ package body Vhdl.Nodes_Meta is
Fields_Of_Iir_Last : constant array (Iir_Kind) of Fields_Index_Extended :=
(
Iir_Kind_Unused => -1,
- Iir_Kind_Error => 7,
- Iir_Kind_Design_File => 18,
- Iir_Kind_Design_Unit => 34,
- Iir_Kind_Library_Clause => 39,
- Iir_Kind_Use_Clause => 43,
- Iir_Kind_Context_Reference => 47,
- Iir_Kind_Integer_Literal => 52,
- Iir_Kind_Floating_Point_Literal => 57,
- Iir_Kind_Null_Literal => 59,
- Iir_Kind_String_Literal8 => 70,
- Iir_Kind_Physical_Int_Literal => 76,
- Iir_Kind_Physical_Fp_Literal => 82,
- Iir_Kind_Simple_Aggregate => 87,
- Iir_Kind_Overflow_Literal => 90,
- Iir_Kind_Unaffected_Waveform => 91,
- Iir_Kind_Waveform_Element => 94,
- Iir_Kind_Conditional_Waveform => 98,
- Iir_Kind_Conditional_Expression => 102,
- Iir_Kind_Association_Element_By_Expression => 110,
- Iir_Kind_Association_Element_By_Individual => 119,
- Iir_Kind_Association_Element_Open => 125,
- Iir_Kind_Association_Element_Package => 131,
- Iir_Kind_Association_Element_Type => 139,
- Iir_Kind_Association_Element_Subprogram => 145,
- Iir_Kind_Association_Element_Terminal => 151,
- Iir_Kind_Choice_By_Range => 159,
- Iir_Kind_Choice_By_Expression => 167,
- Iir_Kind_Choice_By_Others => 173,
- Iir_Kind_Choice_By_None => 179,
- Iir_Kind_Choice_By_Name => 186,
- Iir_Kind_Entity_Aspect_Entity => 188,
- Iir_Kind_Entity_Aspect_Configuration => 189,
- Iir_Kind_Entity_Aspect_Open => 189,
- Iir_Kind_Psl_Hierarchical_Name => 191,
- Iir_Kind_Block_Configuration => 197,
- Iir_Kind_Block_Header => 201,
- Iir_Kind_Component_Configuration => 208,
- Iir_Kind_Binding_Indication => 212,
- Iir_Kind_Entity_Class => 214,
- Iir_Kind_Attribute_Value => 222,
- Iir_Kind_Signature => 225,
- Iir_Kind_Aggregate_Info => 232,
- Iir_Kind_Procedure_Call => 236,
- Iir_Kind_Record_Element_Constraint => 244,
- Iir_Kind_Array_Element_Resolution => 246,
- Iir_Kind_Record_Resolution => 247,
- Iir_Kind_Record_Element_Resolution => 250,
- Iir_Kind_Break_Element => 254,
- Iir_Kind_Attribute_Specification => 262,
- Iir_Kind_Disconnection_Specification => 268,
- Iir_Kind_Step_Limit_Specification => 274,
- Iir_Kind_Configuration_Specification => 280,
- Iir_Kind_Access_Type_Definition => 288,
- Iir_Kind_Incomplete_Type_Definition => 296,
- Iir_Kind_Interface_Type_Definition => 303,
- Iir_Kind_File_Type_Definition => 310,
- Iir_Kind_Protected_Type_Declaration => 320,
- Iir_Kind_Record_Type_Definition => 331,
- Iir_Kind_Array_Type_Definition => 343,
- Iir_Kind_Array_Subtype_Definition => 358,
- Iir_Kind_Record_Subtype_Definition => 371,
- Iir_Kind_Access_Subtype_Definition => 379,
- Iir_Kind_Physical_Subtype_Definition => 389,
- Iir_Kind_Floating_Subtype_Definition => 400,
- Iir_Kind_Integer_Subtype_Definition => 410,
- Iir_Kind_Enumeration_Subtype_Definition => 420,
- Iir_Kind_Enumeration_Type_Definition => 432,
- Iir_Kind_Integer_Type_Definition => 441,
- Iir_Kind_Floating_Type_Definition => 450,
- Iir_Kind_Physical_Type_Definition => 462,
- Iir_Kind_Range_Expression => 470,
- Iir_Kind_Protected_Type_Body => 478,
- Iir_Kind_Wildcard_Type_Definition => 483,
- Iir_Kind_Subtype_Definition => 490,
- Iir_Kind_Scalar_Nature_Definition => 498,
- Iir_Kind_Record_Nature_Definition => 511,
- Iir_Kind_Array_Nature_Definition => 525,
- Iir_Kind_Array_Subnature_Definition => 540,
- Iir_Kind_Overload_List => 541,
- Iir_Kind_Entity_Declaration => 554,
- Iir_Kind_Configuration_Declaration => 563,
- Iir_Kind_Context_Declaration => 569,
- Iir_Kind_Package_Declaration => 584,
- Iir_Kind_Package_Instantiation_Declaration => 598,
- Iir_Kind_Vmode_Declaration => 610,
- Iir_Kind_Vprop_Declaration => 622,
- Iir_Kind_Vunit_Declaration => 635,
- Iir_Kind_Package_Body => 643,
- Iir_Kind_Architecture_Body => 656,
- Iir_Kind_Type_Declaration => 663,
- Iir_Kind_Anonymous_Type_Declaration => 669,
- Iir_Kind_Subtype_Declaration => 677,
- Iir_Kind_Nature_Declaration => 683,
- Iir_Kind_Subnature_Declaration => 690,
- Iir_Kind_Package_Header => 692,
- Iir_Kind_Unit_Declaration => 701,
- Iir_Kind_Library_Declaration => 709,
- Iir_Kind_Component_Declaration => 719,
- Iir_Kind_Attribute_Declaration => 726,
- Iir_Kind_Group_Template_Declaration => 732,
- Iir_Kind_Group_Declaration => 739,
- Iir_Kind_Element_Declaration => 747,
- Iir_Kind_Nature_Element_Declaration => 754,
- Iir_Kind_Non_Object_Alias_Declaration => 762,
- Iir_Kind_Psl_Declaration => 770,
- Iir_Kind_Psl_Endpoint_Declaration => 784,
- Iir_Kind_Enumeration_Literal => 795,
- Iir_Kind_Function_Declaration => 820,
- Iir_Kind_Procedure_Declaration => 844,
- Iir_Kind_Function_Body => 854,
- Iir_Kind_Procedure_Body => 865,
- Iir_Kind_Terminal_Declaration => 874,
- Iir_Kind_Object_Alias_Declaration => 886,
- Iir_Kind_Free_Quantity_Declaration => 898,
- Iir_Kind_Spectrum_Quantity_Declaration => 911,
- Iir_Kind_Noise_Quantity_Declaration => 923,
- Iir_Kind_Across_Quantity_Declaration => 939,
- Iir_Kind_Through_Quantity_Declaration => 955,
- Iir_Kind_File_Declaration => 970,
- Iir_Kind_Guard_Signal_Declaration => 983,
- Iir_Kind_Signal_Declaration => 1000,
- Iir_Kind_Variable_Declaration => 1013,
- Iir_Kind_Constant_Declaration => 1027,
- Iir_Kind_Iterator_Declaration => 1039,
- Iir_Kind_Interface_Constant_Declaration => 1056,
- Iir_Kind_Interface_Variable_Declaration => 1072,
- Iir_Kind_Interface_Signal_Declaration => 1093,
- Iir_Kind_Interface_File_Declaration => 1109,
- Iir_Kind_Interface_Quantity_Declaration => 1125,
- Iir_Kind_Interface_Terminal_Declaration => 1137,
- Iir_Kind_Interface_Type_Declaration => 1148,
- Iir_Kind_Interface_Package_Declaration => 1161,
- Iir_Kind_Interface_Function_Declaration => 1179,
- Iir_Kind_Interface_Procedure_Declaration => 1193,
- Iir_Kind_Anonymous_Signal_Declaration => 1202,
- Iir_Kind_Signal_Attribute_Declaration => 1205,
- Iir_Kind_Identity_Operator => 1209,
- Iir_Kind_Negation_Operator => 1213,
- Iir_Kind_Absolute_Operator => 1217,
- Iir_Kind_Not_Operator => 1221,
- Iir_Kind_Implicit_Condition_Operator => 1225,
- Iir_Kind_Condition_Operator => 1229,
- Iir_Kind_Reduction_And_Operator => 1233,
- Iir_Kind_Reduction_Or_Operator => 1237,
- Iir_Kind_Reduction_Nand_Operator => 1241,
- Iir_Kind_Reduction_Nor_Operator => 1245,
- Iir_Kind_Reduction_Xor_Operator => 1249,
- Iir_Kind_Reduction_Xnor_Operator => 1253,
- Iir_Kind_And_Operator => 1258,
- Iir_Kind_Or_Operator => 1263,
- Iir_Kind_Nand_Operator => 1268,
- Iir_Kind_Nor_Operator => 1273,
- Iir_Kind_Xor_Operator => 1278,
- Iir_Kind_Xnor_Operator => 1283,
- Iir_Kind_Equality_Operator => 1288,
- Iir_Kind_Inequality_Operator => 1293,
- Iir_Kind_Less_Than_Operator => 1298,
- Iir_Kind_Less_Than_Or_Equal_Operator => 1303,
- Iir_Kind_Greater_Than_Operator => 1308,
- Iir_Kind_Greater_Than_Or_Equal_Operator => 1313,
- Iir_Kind_Match_Equality_Operator => 1318,
- Iir_Kind_Match_Inequality_Operator => 1323,
- Iir_Kind_Match_Less_Than_Operator => 1328,
- Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1333,
- Iir_Kind_Match_Greater_Than_Operator => 1338,
- Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1343,
- Iir_Kind_Sll_Operator => 1348,
- Iir_Kind_Sla_Operator => 1353,
- Iir_Kind_Srl_Operator => 1358,
- Iir_Kind_Sra_Operator => 1363,
- Iir_Kind_Rol_Operator => 1368,
- Iir_Kind_Ror_Operator => 1373,
- Iir_Kind_Addition_Operator => 1378,
- Iir_Kind_Substraction_Operator => 1383,
- Iir_Kind_Concatenation_Operator => 1388,
- Iir_Kind_Multiplication_Operator => 1393,
- Iir_Kind_Division_Operator => 1398,
- Iir_Kind_Modulus_Operator => 1403,
- Iir_Kind_Remainder_Operator => 1408,
- Iir_Kind_Exponentiation_Operator => 1413,
- Iir_Kind_Function_Call => 1421,
- Iir_Kind_Aggregate => 1428,
- Iir_Kind_Parenthesis_Expression => 1431,
- Iir_Kind_Qualified_Expression => 1435,
- Iir_Kind_Type_Conversion => 1440,
- Iir_Kind_Allocator_By_Expression => 1445,
- Iir_Kind_Allocator_By_Subtype => 1451,
- Iir_Kind_Selected_Element => 1459,
- Iir_Kind_Dereference => 1464,
- Iir_Kind_Implicit_Dereference => 1469,
- Iir_Kind_Slice_Name => 1476,
- Iir_Kind_Indexed_Name => 1482,
- Iir_Kind_Psl_Prev => 1488,
- Iir_Kind_Psl_Stable => 1493,
- Iir_Kind_Psl_Rose => 1498,
- Iir_Kind_Psl_Fell => 1503,
- Iir_Kind_Psl_Expression => 1505,
- Iir_Kind_Sensitized_Process_Statement => 1526,
- Iir_Kind_Process_Statement => 1546,
- Iir_Kind_Concurrent_Simple_Signal_Assignment => 1559,
- Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1572,
- Iir_Kind_Concurrent_Selected_Signal_Assignment => 1586,
- Iir_Kind_Concurrent_Assertion_Statement => 1594,
- Iir_Kind_Concurrent_Procedure_Call_Statement => 1601,
- Iir_Kind_Concurrent_Break_Statement => 1609,
- Iir_Kind_Psl_Assert_Directive => 1622,
- Iir_Kind_Psl_Assume_Directive => 1633,
- Iir_Kind_Psl_Cover_Directive => 1645,
- Iir_Kind_Psl_Restrict_Directive => 1656,
- Iir_Kind_Block_Statement => 1670,
- Iir_Kind_If_Generate_Statement => 1681,
- Iir_Kind_Case_Generate_Statement => 1690,
- Iir_Kind_For_Generate_Statement => 1699,
- Iir_Kind_Component_Instantiation_Statement => 1710,
- Iir_Kind_Psl_Default_Clock => 1714,
- Iir_Kind_Generate_Statement_Body => 1725,
- Iir_Kind_If_Generate_Else_Clause => 1731,
- Iir_Kind_Simple_Simultaneous_Statement => 1738,
- Iir_Kind_Simultaneous_Null_Statement => 1742,
- Iir_Kind_Simultaneous_Procedural_Statement => 1753,
- Iir_Kind_Simultaneous_Case_Statement => 1762,
- Iir_Kind_Simultaneous_If_Statement => 1771,
- Iir_Kind_Simultaneous_Elsif => 1777,
- Iir_Kind_Simple_Signal_Assignment_Statement => 1788,
- Iir_Kind_Conditional_Signal_Assignment_Statement => 1799,
- Iir_Kind_Selected_Waveform_Assignment_Statement => 1811,
- Iir_Kind_Null_Statement => 1815,
- Iir_Kind_Assertion_Statement => 1822,
- Iir_Kind_Report_Statement => 1828,
- Iir_Kind_Wait_Statement => 1836,
- Iir_Kind_Variable_Assignment_Statement => 1843,
- Iir_Kind_Conditional_Variable_Assignment_Statement => 1850,
- Iir_Kind_Return_Statement => 1856,
- Iir_Kind_For_Loop_Statement => 1867,
- Iir_Kind_While_Loop_Statement => 1878,
- Iir_Kind_Next_Statement => 1885,
- Iir_Kind_Exit_Statement => 1892,
- Iir_Kind_Case_Statement => 1900,
- Iir_Kind_Procedure_Call_Statement => 1906,
- Iir_Kind_Break_Statement => 1913,
- Iir_Kind_If_Statement => 1923,
- Iir_Kind_Elsif => 1929,
- Iir_Kind_Character_Literal => 1937,
- Iir_Kind_Simple_Name => 1945,
- Iir_Kind_Selected_Name => 1954,
- Iir_Kind_Operator_Symbol => 1960,
- Iir_Kind_Reference_Name => 1965,
- Iir_Kind_External_Constant_Name => 1974,
- Iir_Kind_External_Signal_Name => 1983,
- Iir_Kind_External_Variable_Name => 1993,
- Iir_Kind_Selected_By_All_Name => 1999,
- Iir_Kind_Parenthesis_Name => 2004,
- Iir_Kind_Package_Pathname => 2008,
- Iir_Kind_Absolute_Pathname => 2009,
- Iir_Kind_Relative_Pathname => 2010,
- Iir_Kind_Pathname_Element => 2015,
- Iir_Kind_Base_Attribute => 2017,
- Iir_Kind_Subtype_Attribute => 2022,
- Iir_Kind_Element_Attribute => 2027,
- Iir_Kind_Across_Attribute => 2032,
- Iir_Kind_Through_Attribute => 2037,
- Iir_Kind_Nature_Reference_Attribute => 2041,
- Iir_Kind_Left_Type_Attribute => 2046,
- Iir_Kind_Right_Type_Attribute => 2051,
- Iir_Kind_High_Type_Attribute => 2056,
- Iir_Kind_Low_Type_Attribute => 2061,
- Iir_Kind_Ascending_Type_Attribute => 2066,
- Iir_Kind_Image_Attribute => 2072,
- Iir_Kind_Value_Attribute => 2078,
- Iir_Kind_Pos_Attribute => 2084,
- Iir_Kind_Val_Attribute => 2090,
- Iir_Kind_Succ_Attribute => 2096,
- Iir_Kind_Pred_Attribute => 2102,
- Iir_Kind_Leftof_Attribute => 2108,
- Iir_Kind_Rightof_Attribute => 2114,
- Iir_Kind_Signal_Slew_Attribute => 2122,
- Iir_Kind_Quantity_Slew_Attribute => 2130,
- Iir_Kind_Ramp_Attribute => 2138,
- Iir_Kind_Zoh_Attribute => 2146,
- Iir_Kind_Ltf_Attribute => 2154,
- Iir_Kind_Ztf_Attribute => 2164,
- Iir_Kind_Dot_Attribute => 2171,
- Iir_Kind_Integ_Attribute => 2178,
- Iir_Kind_Above_Attribute => 2186,
- Iir_Kind_Quantity_Delayed_Attribute => 2194,
- Iir_Kind_Delayed_Attribute => 2203,
- Iir_Kind_Stable_Attribute => 2212,
- Iir_Kind_Quiet_Attribute => 2221,
- Iir_Kind_Transaction_Attribute => 2230,
- Iir_Kind_Event_Attribute => 2234,
- Iir_Kind_Active_Attribute => 2238,
- Iir_Kind_Last_Event_Attribute => 2242,
- Iir_Kind_Last_Active_Attribute => 2246,
- Iir_Kind_Last_Value_Attribute => 2250,
- Iir_Kind_Driving_Attribute => 2254,
- Iir_Kind_Driving_Value_Attribute => 2258,
- Iir_Kind_Behavior_Attribute => 2258,
- Iir_Kind_Structure_Attribute => 2258,
- Iir_Kind_Simple_Name_Attribute => 2265,
- Iir_Kind_Instance_Name_Attribute => 2270,
- Iir_Kind_Path_Name_Attribute => 2275,
- Iir_Kind_Left_Array_Attribute => 2282,
- Iir_Kind_Right_Array_Attribute => 2289,
- Iir_Kind_High_Array_Attribute => 2296,
- Iir_Kind_Low_Array_Attribute => 2303,
- Iir_Kind_Length_Array_Attribute => 2310,
- Iir_Kind_Ascending_Array_Attribute => 2317,
- Iir_Kind_Range_Array_Attribute => 2324,
- Iir_Kind_Reverse_Range_Array_Attribute => 2331,
- Iir_Kind_Attribute_Name => 2340
+ Iir_Kind_Error => 6,
+ Iir_Kind_Design_File => 17,
+ Iir_Kind_Design_Unit => 33,
+ Iir_Kind_Library_Clause => 38,
+ Iir_Kind_Use_Clause => 42,
+ Iir_Kind_Context_Reference => 46,
+ Iir_Kind_Integer_Literal => 51,
+ Iir_Kind_Floating_Point_Literal => 56,
+ Iir_Kind_Null_Literal => 58,
+ Iir_Kind_String_Literal8 => 69,
+ Iir_Kind_Physical_Int_Literal => 75,
+ Iir_Kind_Physical_Fp_Literal => 81,
+ Iir_Kind_Simple_Aggregate => 86,
+ Iir_Kind_Overflow_Literal => 89,
+ Iir_Kind_Unaffected_Waveform => 90,
+ Iir_Kind_Waveform_Element => 93,
+ Iir_Kind_Conditional_Waveform => 97,
+ Iir_Kind_Conditional_Expression => 101,
+ Iir_Kind_Association_Element_By_Expression => 109,
+ Iir_Kind_Association_Element_By_Individual => 118,
+ Iir_Kind_Association_Element_Open => 124,
+ Iir_Kind_Association_Element_Package => 130,
+ Iir_Kind_Association_Element_Type => 138,
+ Iir_Kind_Association_Element_Subprogram => 144,
+ Iir_Kind_Association_Element_Terminal => 150,
+ Iir_Kind_Choice_By_Range => 158,
+ Iir_Kind_Choice_By_Expression => 166,
+ Iir_Kind_Choice_By_Others => 172,
+ Iir_Kind_Choice_By_None => 178,
+ Iir_Kind_Choice_By_Name => 185,
+ Iir_Kind_Entity_Aspect_Entity => 187,
+ Iir_Kind_Entity_Aspect_Configuration => 188,
+ Iir_Kind_Entity_Aspect_Open => 188,
+ Iir_Kind_Psl_Hierarchical_Name => 190,
+ Iir_Kind_Block_Configuration => 196,
+ Iir_Kind_Block_Header => 200,
+ Iir_Kind_Component_Configuration => 207,
+ Iir_Kind_Binding_Indication => 211,
+ Iir_Kind_Entity_Class => 213,
+ Iir_Kind_Attribute_Value => 221,
+ Iir_Kind_Signature => 224,
+ Iir_Kind_Aggregate_Info => 231,
+ Iir_Kind_Procedure_Call => 235,
+ Iir_Kind_Record_Element_Constraint => 243,
+ Iir_Kind_Array_Element_Resolution => 245,
+ Iir_Kind_Record_Resolution => 246,
+ Iir_Kind_Record_Element_Resolution => 249,
+ Iir_Kind_Break_Element => 253,
+ Iir_Kind_Attribute_Specification => 261,
+ Iir_Kind_Disconnection_Specification => 267,
+ Iir_Kind_Step_Limit_Specification => 273,
+ Iir_Kind_Configuration_Specification => 279,
+ Iir_Kind_Access_Type_Definition => 286,
+ Iir_Kind_Incomplete_Type_Definition => 293,
+ Iir_Kind_Interface_Type_Definition => 299,
+ Iir_Kind_File_Type_Definition => 305,
+ Iir_Kind_Protected_Type_Declaration => 314,
+ Iir_Kind_Record_Type_Definition => 324,
+ Iir_Kind_Array_Type_Definition => 335,
+ Iir_Kind_Array_Subtype_Definition => 350,
+ Iir_Kind_Record_Subtype_Definition => 363,
+ Iir_Kind_Access_Subtype_Definition => 371,
+ Iir_Kind_Physical_Subtype_Definition => 381,
+ Iir_Kind_Floating_Subtype_Definition => 392,
+ Iir_Kind_Integer_Subtype_Definition => 402,
+ Iir_Kind_Enumeration_Subtype_Definition => 412,
+ Iir_Kind_Enumeration_Type_Definition => 423,
+ Iir_Kind_Integer_Type_Definition => 431,
+ Iir_Kind_Floating_Type_Definition => 439,
+ Iir_Kind_Physical_Type_Definition => 450,
+ Iir_Kind_Range_Expression => 458,
+ Iir_Kind_Protected_Type_Body => 466,
+ Iir_Kind_Wildcard_Type_Definition => 470,
+ Iir_Kind_Subtype_Definition => 477,
+ Iir_Kind_Scalar_Nature_Definition => 485,
+ Iir_Kind_Record_Nature_Definition => 498,
+ Iir_Kind_Array_Nature_Definition => 512,
+ Iir_Kind_Array_Subnature_Definition => 527,
+ Iir_Kind_Overload_List => 528,
+ Iir_Kind_Entity_Declaration => 541,
+ Iir_Kind_Configuration_Declaration => 550,
+ Iir_Kind_Context_Declaration => 556,
+ Iir_Kind_Package_Declaration => 571,
+ Iir_Kind_Package_Instantiation_Declaration => 585,
+ Iir_Kind_Vmode_Declaration => 597,
+ Iir_Kind_Vprop_Declaration => 609,
+ Iir_Kind_Vunit_Declaration => 622,
+ Iir_Kind_Package_Body => 630,
+ Iir_Kind_Architecture_Body => 643,
+ Iir_Kind_Type_Declaration => 650,
+ Iir_Kind_Anonymous_Type_Declaration => 656,
+ Iir_Kind_Subtype_Declaration => 664,
+ Iir_Kind_Nature_Declaration => 670,
+ Iir_Kind_Subnature_Declaration => 677,
+ Iir_Kind_Package_Header => 679,
+ Iir_Kind_Unit_Declaration => 688,
+ Iir_Kind_Library_Declaration => 696,
+ Iir_Kind_Component_Declaration => 706,
+ Iir_Kind_Attribute_Declaration => 713,
+ Iir_Kind_Group_Template_Declaration => 719,
+ Iir_Kind_Group_Declaration => 726,
+ Iir_Kind_Element_Declaration => 734,
+ Iir_Kind_Nature_Element_Declaration => 741,
+ Iir_Kind_Non_Object_Alias_Declaration => 749,
+ Iir_Kind_Psl_Declaration => 757,
+ Iir_Kind_Psl_Endpoint_Declaration => 771,
+ Iir_Kind_Enumeration_Literal => 782,
+ Iir_Kind_Function_Declaration => 807,
+ Iir_Kind_Procedure_Declaration => 831,
+ Iir_Kind_Function_Body => 841,
+ Iir_Kind_Procedure_Body => 852,
+ Iir_Kind_Terminal_Declaration => 861,
+ Iir_Kind_Object_Alias_Declaration => 873,
+ Iir_Kind_Free_Quantity_Declaration => 885,
+ Iir_Kind_Spectrum_Quantity_Declaration => 898,
+ Iir_Kind_Noise_Quantity_Declaration => 910,
+ Iir_Kind_Across_Quantity_Declaration => 926,
+ Iir_Kind_Through_Quantity_Declaration => 942,
+ Iir_Kind_File_Declaration => 957,
+ Iir_Kind_Guard_Signal_Declaration => 970,
+ Iir_Kind_Signal_Declaration => 987,
+ Iir_Kind_Variable_Declaration => 1000,
+ Iir_Kind_Constant_Declaration => 1014,
+ Iir_Kind_Iterator_Declaration => 1026,
+ Iir_Kind_Interface_Constant_Declaration => 1043,
+ Iir_Kind_Interface_Variable_Declaration => 1059,
+ Iir_Kind_Interface_Signal_Declaration => 1080,
+ Iir_Kind_Interface_File_Declaration => 1096,
+ Iir_Kind_Interface_Quantity_Declaration => 1112,
+ Iir_Kind_Interface_Terminal_Declaration => 1124,
+ Iir_Kind_Interface_Type_Declaration => 1135,
+ Iir_Kind_Interface_Package_Declaration => 1148,
+ Iir_Kind_Interface_Function_Declaration => 1166,
+ Iir_Kind_Interface_Procedure_Declaration => 1180,
+ Iir_Kind_Anonymous_Signal_Declaration => 1189,
+ Iir_Kind_Signal_Attribute_Declaration => 1192,
+ Iir_Kind_Identity_Operator => 1196,
+ Iir_Kind_Negation_Operator => 1200,
+ Iir_Kind_Absolute_Operator => 1204,
+ Iir_Kind_Not_Operator => 1208,
+ Iir_Kind_Implicit_Condition_Operator => 1212,
+ Iir_Kind_Condition_Operator => 1216,
+ Iir_Kind_Reduction_And_Operator => 1220,
+ Iir_Kind_Reduction_Or_Operator => 1224,
+ Iir_Kind_Reduction_Nand_Operator => 1228,
+ Iir_Kind_Reduction_Nor_Operator => 1232,
+ Iir_Kind_Reduction_Xor_Operator => 1236,
+ Iir_Kind_Reduction_Xnor_Operator => 1240,
+ Iir_Kind_And_Operator => 1245,
+ Iir_Kind_Or_Operator => 1250,
+ Iir_Kind_Nand_Operator => 1255,
+ Iir_Kind_Nor_Operator => 1260,
+ Iir_Kind_Xor_Operator => 1265,
+ Iir_Kind_Xnor_Operator => 1270,
+ Iir_Kind_Equality_Operator => 1275,
+ Iir_Kind_Inequality_Operator => 1280,
+ Iir_Kind_Less_Than_Operator => 1285,
+ Iir_Kind_Less_Than_Or_Equal_Operator => 1290,
+ Iir_Kind_Greater_Than_Operator => 1295,
+ Iir_Kind_Greater_Than_Or_Equal_Operator => 1300,
+ Iir_Kind_Match_Equality_Operator => 1305,
+ Iir_Kind_Match_Inequality_Operator => 1310,
+ Iir_Kind_Match_Less_Than_Operator => 1315,
+ Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1320,
+ Iir_Kind_Match_Greater_Than_Operator => 1325,
+ Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1330,
+ Iir_Kind_Sll_Operator => 1335,
+ Iir_Kind_Sla_Operator => 1340,
+ Iir_Kind_Srl_Operator => 1345,
+ Iir_Kind_Sra_Operator => 1350,
+ Iir_Kind_Rol_Operator => 1355,
+ Iir_Kind_Ror_Operator => 1360,
+ Iir_Kind_Addition_Operator => 1365,
+ Iir_Kind_Substraction_Operator => 1370,
+ Iir_Kind_Concatenation_Operator => 1375,
+ Iir_Kind_Multiplication_Operator => 1380,
+ Iir_Kind_Division_Operator => 1385,
+ Iir_Kind_Modulus_Operator => 1390,
+ Iir_Kind_Remainder_Operator => 1395,
+ Iir_Kind_Exponentiation_Operator => 1400,
+ Iir_Kind_Function_Call => 1408,
+ Iir_Kind_Aggregate => 1415,
+ Iir_Kind_Parenthesis_Expression => 1418,
+ Iir_Kind_Qualified_Expression => 1422,
+ Iir_Kind_Type_Conversion => 1427,
+ Iir_Kind_Allocator_By_Expression => 1432,
+ Iir_Kind_Allocator_By_Subtype => 1438,
+ Iir_Kind_Selected_Element => 1446,
+ Iir_Kind_Dereference => 1451,
+ Iir_Kind_Implicit_Dereference => 1456,
+ Iir_Kind_Slice_Name => 1463,
+ Iir_Kind_Indexed_Name => 1469,
+ Iir_Kind_Psl_Prev => 1475,
+ Iir_Kind_Psl_Stable => 1480,
+ Iir_Kind_Psl_Rose => 1485,
+ Iir_Kind_Psl_Fell => 1490,
+ Iir_Kind_Psl_Expression => 1492,
+ Iir_Kind_Sensitized_Process_Statement => 1513,
+ Iir_Kind_Process_Statement => 1533,
+ Iir_Kind_Concurrent_Simple_Signal_Assignment => 1546,
+ Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1559,
+ Iir_Kind_Concurrent_Selected_Signal_Assignment => 1573,
+ Iir_Kind_Concurrent_Assertion_Statement => 1581,
+ Iir_Kind_Concurrent_Procedure_Call_Statement => 1588,
+ Iir_Kind_Concurrent_Break_Statement => 1596,
+ Iir_Kind_Psl_Assert_Directive => 1609,
+ Iir_Kind_Psl_Assume_Directive => 1620,
+ Iir_Kind_Psl_Cover_Directive => 1632,
+ Iir_Kind_Psl_Restrict_Directive => 1643,
+ Iir_Kind_Block_Statement => 1657,
+ Iir_Kind_If_Generate_Statement => 1668,
+ Iir_Kind_Case_Generate_Statement => 1677,
+ Iir_Kind_For_Generate_Statement => 1686,
+ Iir_Kind_Component_Instantiation_Statement => 1697,
+ Iir_Kind_Psl_Default_Clock => 1701,
+ Iir_Kind_Generate_Statement_Body => 1712,
+ Iir_Kind_If_Generate_Else_Clause => 1718,
+ Iir_Kind_Simple_Simultaneous_Statement => 1725,
+ Iir_Kind_Simultaneous_Null_Statement => 1729,
+ Iir_Kind_Simultaneous_Procedural_Statement => 1740,
+ Iir_Kind_Simultaneous_Case_Statement => 1749,
+ Iir_Kind_Simultaneous_If_Statement => 1758,
+ Iir_Kind_Simultaneous_Elsif => 1764,
+ Iir_Kind_Simple_Signal_Assignment_Statement => 1775,
+ Iir_Kind_Conditional_Signal_Assignment_Statement => 1786,
+ Iir_Kind_Selected_Waveform_Assignment_Statement => 1798,
+ Iir_Kind_Null_Statement => 1802,
+ Iir_Kind_Assertion_Statement => 1809,
+ Iir_Kind_Report_Statement => 1815,
+ Iir_Kind_Wait_Statement => 1823,
+ Iir_Kind_Variable_Assignment_Statement => 1830,
+ Iir_Kind_Conditional_Variable_Assignment_Statement => 1837,
+ Iir_Kind_Return_Statement => 1843,
+ Iir_Kind_For_Loop_Statement => 1854,
+ Iir_Kind_While_Loop_Statement => 1865,
+ Iir_Kind_Next_Statement => 1872,
+ Iir_Kind_Exit_Statement => 1879,
+ Iir_Kind_Case_Statement => 1887,
+ Iir_Kind_Procedure_Call_Statement => 1893,
+ Iir_Kind_Break_Statement => 1900,
+ Iir_Kind_If_Statement => 1910,
+ Iir_Kind_Elsif => 1916,
+ Iir_Kind_Character_Literal => 1924,
+ Iir_Kind_Simple_Name => 1932,
+ Iir_Kind_Selected_Name => 1941,
+ Iir_Kind_Operator_Symbol => 1947,
+ Iir_Kind_Reference_Name => 1952,
+ Iir_Kind_External_Constant_Name => 1961,
+ Iir_Kind_External_Signal_Name => 1970,
+ Iir_Kind_External_Variable_Name => 1980,
+ Iir_Kind_Selected_By_All_Name => 1986,
+ Iir_Kind_Parenthesis_Name => 1991,
+ Iir_Kind_Package_Pathname => 1995,
+ Iir_Kind_Absolute_Pathname => 1996,
+ Iir_Kind_Relative_Pathname => 1997,
+ Iir_Kind_Pathname_Element => 2002,
+ Iir_Kind_Base_Attribute => 2004,
+ Iir_Kind_Subtype_Attribute => 2009,
+ Iir_Kind_Element_Attribute => 2014,
+ Iir_Kind_Across_Attribute => 2019,
+ Iir_Kind_Through_Attribute => 2024,
+ Iir_Kind_Nature_Reference_Attribute => 2028,
+ Iir_Kind_Left_Type_Attribute => 2033,
+ Iir_Kind_Right_Type_Attribute => 2038,
+ Iir_Kind_High_Type_Attribute => 2043,
+ Iir_Kind_Low_Type_Attribute => 2048,
+ Iir_Kind_Ascending_Type_Attribute => 2053,
+ Iir_Kind_Image_Attribute => 2059,
+ Iir_Kind_Value_Attribute => 2065,
+ Iir_Kind_Pos_Attribute => 2071,
+ Iir_Kind_Val_Attribute => 2077,
+ Iir_Kind_Succ_Attribute => 2083,
+ Iir_Kind_Pred_Attribute => 2089,
+ Iir_Kind_Leftof_Attribute => 2095,
+ Iir_Kind_Rightof_Attribute => 2101,
+ Iir_Kind_Signal_Slew_Attribute => 2109,
+ Iir_Kind_Quantity_Slew_Attribute => 2117,
+ Iir_Kind_Ramp_Attribute => 2125,
+ Iir_Kind_Zoh_Attribute => 2133,
+ Iir_Kind_Ltf_Attribute => 2141,
+ Iir_Kind_Ztf_Attribute => 2151,
+ Iir_Kind_Dot_Attribute => 2158,
+ Iir_Kind_Integ_Attribute => 2165,
+ Iir_Kind_Above_Attribute => 2173,
+ Iir_Kind_Quantity_Delayed_Attribute => 2181,
+ Iir_Kind_Delayed_Attribute => 2190,
+ Iir_Kind_Stable_Attribute => 2199,
+ Iir_Kind_Quiet_Attribute => 2208,
+ Iir_Kind_Transaction_Attribute => 2217,
+ Iir_Kind_Event_Attribute => 2221,
+ Iir_Kind_Active_Attribute => 2225,
+ Iir_Kind_Last_Event_Attribute => 2229,
+ Iir_Kind_Last_Active_Attribute => 2233,
+ Iir_Kind_Last_Value_Attribute => 2237,
+ Iir_Kind_Driving_Attribute => 2241,
+ Iir_Kind_Driving_Value_Attribute => 2245,
+ Iir_Kind_Behavior_Attribute => 2245,
+ Iir_Kind_Structure_Attribute => 2245,
+ Iir_Kind_Simple_Name_Attribute => 2252,
+ Iir_Kind_Instance_Name_Attribute => 2257,
+ Iir_Kind_Path_Name_Attribute => 2262,
+ Iir_Kind_Left_Array_Attribute => 2269,
+ Iir_Kind_Right_Array_Attribute => 2276,
+ Iir_Kind_High_Array_Attribute => 2283,
+ Iir_Kind_Low_Array_Attribute => 2290,
+ Iir_Kind_Length_Array_Attribute => 2297,
+ Iir_Kind_Ascending_Array_Attribute => 2304,
+ Iir_Kind_Range_Array_Attribute => 2311,
+ Iir_Kind_Reverse_Range_Array_Attribute => 2318,
+ Iir_Kind_Attribute_Name => 2327
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -6077,8 +6064,8 @@ package body Vhdl.Nodes_Meta is
return Get_Left_Limit_Expr (N);
when Field_Right_Limit_Expr =>
return Get_Right_Limit_Expr (N);
- when Field_Base_Type =>
- return Get_Base_Type (N);
+ when Field_Parent_Type =>
+ return Get_Parent_Type (N);
when Field_Simple_Nature =>
return Get_Simple_Nature (N);
when Field_Base_Nature =>
@@ -6533,8 +6520,8 @@ package body Vhdl.Nodes_Meta is
Set_Left_Limit_Expr (N, V);
when Field_Right_Limit_Expr =>
Set_Right_Limit_Expr (N, V);
- when Field_Base_Type =>
- Set_Base_Type (N, V);
+ when Field_Parent_Type =>
+ Set_Parent_Type (N, V);
when Field_Simple_Nature =>
Set_Simple_Nature (N, V);
when Field_Base_Nature =>
@@ -9491,35 +9478,22 @@ package body Vhdl.Nodes_Meta is
return K = Iir_Kind_Range_Expression;
end Has_Right_Limit_Expr;
- function Has_Base_Type (K : Iir_Kind) return Boolean is
+ function Has_Parent_Type (K : Iir_Kind) return Boolean is
begin
case K is
- when Iir_Kind_Error
- | Iir_Kind_Access_Type_Definition
- | Iir_Kind_Incomplete_Type_Definition
- | Iir_Kind_Interface_Type_Definition
- | Iir_Kind_File_Type_Definition
- | Iir_Kind_Protected_Type_Declaration
- | Iir_Kind_Record_Type_Definition
- | Iir_Kind_Array_Type_Definition
- | Iir_Kind_Array_Subtype_Definition
+ when Iir_Kind_Array_Subtype_Definition
| Iir_Kind_Record_Subtype_Definition
| Iir_Kind_Access_Subtype_Definition
| Iir_Kind_Physical_Subtype_Definition
| Iir_Kind_Floating_Subtype_Definition
| Iir_Kind_Integer_Subtype_Definition
| Iir_Kind_Enumeration_Subtype_Definition
- | Iir_Kind_Enumeration_Type_Definition
- | Iir_Kind_Integer_Type_Definition
- | Iir_Kind_Floating_Type_Definition
- | Iir_Kind_Physical_Type_Definition
- | Iir_Kind_Wildcard_Type_Definition
| Iir_Kind_Subtype_Definition =>
return True;
when others =>
return False;
end case;
- end Has_Base_Type;
+ end Has_Parent_Type;
function Has_Simple_Nature (K : Iir_Kind) return Boolean is
begin
diff --git a/src/vhdl/vhdl-nodes_meta.ads b/src/vhdl/vhdl-nodes_meta.ads
index 80fe7d136..1b5a19269 100644
--- a/src/vhdl/vhdl-nodes_meta.ads
+++ b/src/vhdl/vhdl-nodes_meta.ads
@@ -211,7 +211,7 @@ package Vhdl.Nodes_Meta is
Field_Right_Limit,
Field_Left_Limit_Expr,
Field_Right_Limit_Expr,
- Field_Base_Type,
+ Field_Parent_Type,
Field_Simple_Nature,
Field_Base_Nature,
Field_Resolution_Indication,
@@ -783,7 +783,7 @@ package Vhdl.Nodes_Meta is
function Has_Right_Limit (K : Iir_Kind) return Boolean;
function Has_Left_Limit_Expr (K : Iir_Kind) return Boolean;
function Has_Right_Limit_Expr (K : Iir_Kind) return Boolean;
- function Has_Base_Type (K : Iir_Kind) return Boolean;
+ function Has_Parent_Type (K : Iir_Kind) return Boolean;
function Has_Simple_Nature (K : Iir_Kind) return Boolean;
function Has_Base_Nature (K : Iir_Kind) return Boolean;
function Has_Resolution_Indication (K : Iir_Kind) return Boolean;
diff --git a/src/vhdl/vhdl-sem_assocs.adb b/src/vhdl/vhdl-sem_assocs.adb
index 927877458..67e9699d9 100644
--- a/src/vhdl/vhdl-sem_assocs.adb
+++ b/src/vhdl/vhdl-sem_assocs.adb
@@ -955,7 +955,7 @@ package body Vhdl.Sem_Assocs is
Error_Kind ("finish_individual_assoc_array", Base_Index);
end case;
Location_Copy (Actual_Index, Actual);
- Set_Base_Type (Actual_Index, Get_Base_Type (Base_Index));
+ Set_Parent_Type (Actual_Index, Base_Index);
Index_Constraint := Get_Range_Constraint (Base_Index);
Index_Subtype_Constraint := Create_Iir (Iir_Kind_Range_Expression);
@@ -1070,7 +1070,7 @@ package body Vhdl.Sem_Assocs is
Ntype := Create_Iir (Iir_Kind_Record_Subtype_Definition);
Set_Is_Ref (Ntype, True);
Location_Copy (Ntype, Assoc);
- Set_Base_Type (Ntype, Get_Base_Type (Atype));
+ Set_Parent_Type (Ntype, Atype);
if Get_Kind (Atype) = Iir_Kind_Record_Subtype_Definition then
Set_Resolution_Indication
(Ntype, Get_Resolution_Indication (Atype));
diff --git a/src/vhdl/vhdl-sem_decls.adb b/src/vhdl/vhdl-sem_decls.adb
index d85a0631a..8b365a225 100644
--- a/src/vhdl/vhdl-sem_decls.adb
+++ b/src/vhdl/vhdl-sem_decls.adb
@@ -552,7 +552,6 @@ package body Vhdl.Sem_Decls is
Set_Location (Def, Get_Location (Inter));
Set_Type_Declarator (Def, Inter);
Set_Type (Inter, Def);
- Set_Base_Type (Def, Def);
Set_Type_Staticness (Def, None);
Set_Resolved_Flag (Def, False);
Set_Signal_Type_Flag (Def, True);
@@ -704,7 +703,6 @@ package body Vhdl.Sem_Decls is
Def := Create_Iir (Iir_Kind_Incomplete_Type_Definition);
Location_Copy (Def, Decl);
Set_Type_Definition (Decl, Def);
- Set_Base_Type (Def, Def);
Set_Signal_Type_Flag (Def, True);
Set_Type_Declarator (Def, Decl);
Set_Visible_Flag (Decl, True);
diff --git a/src/vhdl/vhdl-sem_expr.adb b/src/vhdl/vhdl-sem_expr.adb
index 49ad9ed8a..07da48d8d 100644
--- a/src/vhdl/vhdl-sem_expr.adb
+++ b/src/vhdl/vhdl-sem_expr.adb
@@ -3775,7 +3775,7 @@ package body Vhdl.Sem_Expr is
Error_Kind ("sem_array_aggregate(2)", Index_Type);
end case;
Location_Copy (Info.Index_Subtype, Aggr);
- Set_Base_Type (Info.Index_Subtype, Get_Base_Type (Index_Type));
+ Set_Parent_Type (Info.Index_Subtype, Get_Base_Type (Index_Type));
Index_Constraint := Get_Range_Constraint (Index_Type);
-- LRM93 7.3.2.2
@@ -4913,7 +4913,6 @@ package body Vhdl.Sem_Expr is
-- Always ok.
-- Use the error as a type.
Set_Type (Expr, Expr);
- Set_Base_Type (Expr, Expr);
return Expr;
when others =>
diff --git a/src/vhdl/vhdl-sem_names.adb b/src/vhdl/vhdl-sem_names.adb
index 107bb46cb..11333e1fd 100644
--- a/src/vhdl/vhdl-sem_names.adb
+++ b/src/vhdl/vhdl-sem_names.adb
@@ -825,7 +825,7 @@ package body Vhdl.Sem_Names is
Set_Range_Constraint (Slice_Type, Suffix_Rng);
Set_Is_Ref (Slice_Type, True);
Set_Type_Staticness (Slice_Type, Staticness);
- Set_Base_Type (Slice_Type, Get_Base_Type (Index_Type));
+ Set_Parent_Type (Slice_Type, Get_Base_Type (Index_Type));
Set_Location (Slice_Type, Get_Location (Suffix));
-- Attach the new index subtype to the array subtype.
@@ -838,7 +838,7 @@ package body Vhdl.Sem_Names is
Set_Index_Subtype_List (Expr_Type, Index_List);
Set_Nth_Element (Index_List, 0, Slice_Type);
Prefix_Base_Type := Get_Base_Type (Prefix_Type);
- Set_Base_Type (Expr_Type, Prefix_Base_Type);
+ Set_Parent_Type (Expr_Type, Prefix_Base_Type);
Set_Signal_Type_Flag (Expr_Type,
Get_Signal_Type_Flag (Prefix_Base_Type));
Set_Element_Subtype (Expr_Type, Get_Element_Subtype (Prefix_Type));
diff --git a/src/vhdl/vhdl-sem_types.adb b/src/vhdl/vhdl-sem_types.adb
index 759e0af3f..10c84d41c 100644
--- a/src/vhdl/vhdl-sem_types.adb
+++ b/src/vhdl/vhdl-sem_types.adb
@@ -247,11 +247,10 @@ package body Vhdl.Sem_Types is
Location_Copy (Ntype, Loc);
Ndef := Create_Iir (Iir_Kind_Integer_Type_Definition);
Location_Copy (Ndef, Loc);
- Set_Base_Type (Ndef, Ndef);
Set_Type_Declarator (Ndef, Decl);
Set_Type_Staticness (Ndef, Locally);
Set_Signal_Type_Flag (Ndef, True);
- Set_Base_Type (Ntype, Ndef);
+ Set_Parent_Type (Ntype, Ndef);
Set_Type_Declarator (Ntype, Decl);
Set_Range_Constraint (Ntype, Constraint);
Set_Type_Staticness (Ntype, Get_Expr_Staticness (Constraint));
@@ -302,12 +301,11 @@ package body Vhdl.Sem_Types is
Location_Copy (Ntype, Expr);
Ndef := Create_Iir (Iir_Kind_Floating_Type_Definition);
Location_Copy (Ndef, Expr);
- Set_Base_Type (Ndef, Ndef);
Set_Type_Declarator (Ndef, Decl);
Set_Type_Staticness (Ndef, Get_Expr_Staticness (Expr));
Set_Scalar_Size (Ndef, Scalar_64);
Set_Signal_Type_Flag (Ndef, True);
- Set_Base_Type (Ntype, Ndef);
+ Set_Parent_Type (Ntype, Ndef);
Set_Type_Declarator (Ntype, Decl);
Set_Range_Constraint (Ntype, Rng);
Set_Resolved_Flag (Ntype, False);
@@ -369,7 +367,6 @@ package body Vhdl.Sem_Types is
-- type and a subtype of the base type, in which case the simple name
-- denotes the subtype, and the base type is anonymous.
Set_Type_Declarator (Def, Decl);
- Set_Base_Type (Def, Def);
Set_Resolved_Flag (Def, False);
Set_Type_Staticness (Def, Locally);
Set_Signal_Type_Flag (Def, True);
@@ -414,7 +411,7 @@ package body Vhdl.Sem_Types is
-- Create the subtype.
Sub_Type := Create_Iir (Iir_Kind_Physical_Subtype_Definition);
Location_Copy (Sub_Type, Range_Expr);
- Set_Base_Type (Sub_Type, Def);
+ Set_Parent_Type (Sub_Type, Def);
Set_Signal_Type_Flag (Sub_Type, True);
-- Analyze the primary unit.
@@ -579,7 +576,6 @@ package body Vhdl.Sem_Types is
El : Iir;
begin
Decl := Get_Type_Definition (Type_Decl);
- Set_Base_Type (Decl, Decl);
Set_Resolved_Flag (Decl, False);
Set_Signal_Type_Flag (Decl, False);
Set_Type_Staticness (Decl, None);
@@ -822,7 +818,6 @@ package body Vhdl.Sem_Types is
El: Iir;
Only_Characters : Boolean;
begin
- Set_Base_Type (Def, Def);
Set_Type_Staticness (Def, Locally);
Set_Signal_Type_Flag (Def, True);
@@ -939,7 +934,6 @@ package body Vhdl.Sem_Types is
Xref_Decl (El);
end loop;
Close_Declarative_Region;
- Set_Base_Type (Def, Def);
Set_Resolved_Flag (Def, Resolved_Flag);
Set_Type_Staticness (Def, Type_Staticness);
Set_Constraint_State (Def, Constraint);
@@ -973,8 +967,6 @@ package body Vhdl.Sem_Types is
function Sem_Unbounded_Array_Type_Definition (Def: Iir) return Iir is
begin
- Set_Base_Type (Def, Def);
-
Sem_Unbounded_Array_Indexes (Def);
Sem_Array_Element (Def);
@@ -1044,7 +1036,6 @@ package body Vhdl.Sem_Types is
-- Create a definition for the base type of subtype DEF.
Base_Type := Create_Iir (Iir_Kind_Array_Type_Definition);
Location_Copy (Base_Type, Def);
- Set_Base_Type (Base_Type, Base_Type);
Set_Type_Declarator (Base_Type, Decl);
Base_Index_List := Create_Iir_Flist (Get_Nbr_Elements (Index_List));
Set_Index_Subtype_Definition_List (Base_Type, Base_Index_List);
@@ -1116,7 +1107,7 @@ package body Vhdl.Sem_Types is
Set_Index_Constraint_Flag (Def, True);
Set_Constraint_State (Def, Get_Array_Constraint (Def));
Set_Constraint_State (Base_Type, Get_Array_Constraint (Base_Type));
- Set_Base_Type (Def, Base_Type);
+ Set_Parent_Type (Def, Base_Type);
Set_Subtype_Type_Mark (Def, Null_Iir);
return Def;
end Sem_Constrained_Array_Type_Definition;
@@ -1151,7 +1142,6 @@ package body Vhdl.Sem_Types is
end case;
Set_Designated_Type (Def, D_Type);
end if;
- Set_Base_Type (Def, Def);
Set_Type_Staticness (Def, None);
Set_Resolved_Flag (Def, False);
Set_Signal_Type_Flag (Def, False);
@@ -1210,7 +1200,6 @@ package body Vhdl.Sem_Types is
end case;
end if;
- Set_Base_Type (Def, Def);
Set_Resolved_Flag (Def, False);
Set_Text_File_Flag (Def, Is_Text_Type_Declaration (Decl));
Set_Signal_Type_Flag (Def, False);
@@ -1311,7 +1300,7 @@ package body Vhdl.Sem_Types is
end case;
Location_Copy (Sub_Type, A_Range);
Set_Range_Constraint (Sub_Type, A_Range);
- Set_Base_Type (Sub_Type, Get_Base_Type (Range_Type));
+ Set_Parent_Type (Sub_Type, Get_Base_Type (Range_Type));
Set_Type_Staticness (Sub_Type, Get_Expr_Staticness (A_Range));
Set_Signal_Type_Flag (Sub_Type, True);
return Sub_Type;
@@ -1539,7 +1528,7 @@ package body Vhdl.Sem_Types is
Error_Kind ("copy_subtype_indication", Def);
end case;
Location_Copy (Res, Def);
- Set_Base_Type (Res, Get_Base_Type (Def));
+ Set_Parent_Type (Res, Get_Base_Type (Def));
Set_Type_Staticness (Res, Get_Type_Staticness (Def));
Set_Signal_Type_Flag (Res, Get_Signal_Type_Flag (Def));
return Res;
@@ -1577,7 +1566,7 @@ package body Vhdl.Sem_Types is
Location_Copy (Res, Loc);
-- FIXME: can be globally!
Set_Type_Staticness (Res, None);
- Set_Base_Type (Res, Get_Base_Type (Atype));
+ Set_Parent_Type (Res, Get_Base_Type (Atype));
Set_Signal_Type_Flag (Res, Get_Signal_Type_Flag (Atype));
Set_Resolved_Flag (Res, Get_Resolved_Flag (Atype));
Set_Constraint_State (Res, Fully_Constrained);
@@ -1700,7 +1689,7 @@ package body Vhdl.Sem_Types is
Index_Staticness : Iir_Staticness;
begin
-- Check each index constraint against array type.
- Set_Base_Type (Def, Base_Type);
+ Set_Parent_Type (Def, Base_Type);
Sem_Array_Constraint_Indexes
(Def, Type_Mark, Base_Type, Index_Staticness);
@@ -1980,7 +1969,7 @@ package body Vhdl.Sem_Types is
Res := Create_Iir (Iir_Kind_Record_Subtype_Definition);
Set_Is_Ref (Res, True);
Location_Copy (Res, Def);
- Set_Base_Type (Res, Get_Base_Type (Type_Mark));
+ Set_Parent_Type (Res, Type_Mark);
if Get_Kind (Type_Mark) = Iir_Kind_Record_Subtype_Definition then
Set_Resolution_Indication
(Res, Get_Resolution_Indication (Type_Mark));
@@ -2222,7 +2211,7 @@ package body Vhdl.Sem_Types is
Res := Create_Iir (Get_Kind (Type_Mark));
end if;
Location_Copy (Res, Def);
- Set_Base_Type (Res, Get_Base_Type (Type_Mark));
+ Set_Parent_Type (Res, Type_Mark);
Set_Resolution_Indication (Res, Get_Resolution_Indication (Def));
A_Range := Get_Range_Constraint (Def);
if A_Range = Null_Iir then
@@ -2324,7 +2313,7 @@ package body Vhdl.Sem_Types is
(Def, Base_Type, Null_Iir);
Res := Create_Iir (Iir_Kind_Access_Subtype_Definition);
Location_Copy (Res, Def);
- Set_Base_Type (Res, Type_Mark);
+ Set_Parent_Type (Res, Type_Mark);
Set_Designated_Subtype_Indication (Res, Sub_Type);
Set_Signal_Type_Flag (Res, False);
@@ -2409,7 +2398,6 @@ package body Vhdl.Sem_Types is
Type_Mark := Sem_Type_Mark (Def, Incomplete);
return Type_Mark;
when Iir_Kind_Error =>
- Set_Base_Type (Def, Def);
return Def;
when others =>
null;
@@ -2529,7 +2517,7 @@ package body Vhdl.Sem_Types is
Location_Copy (St_Def, Def);
Set_Index_Subtype_List (St_Def, Get_Index_Subtype_List (Def));
Set_Element_Subtype (St_Def, Get_Element_Subtype (Br_Def));
- Set_Base_Type (St_Def, Get_Base_Type (Br_Def));
+ Set_Parent_Type (St_Def, Br_Def);
Set_Type_Staticness (St_Def, Get_Nature_Staticness (Def));
Set_Constraint_State (St_Def, Get_Constraint_State (Def));
Set_Type_Declarator (St_Def, Get_Nature_Declarator (Def));
@@ -2636,7 +2624,6 @@ package body Vhdl.Sem_Types is
Arr := Create_Iir (Iir_Kind_Array_Type_Definition);
Location_Copy (Arr, Def);
Set_Index_Subtype_List (Arr, Get_Index_Subtype_List (Def));
- Set_Base_Type (Arr, Arr);
Set_Type_Staticness (Arr, None);
Set_Type_Declarator (Arr, Decl);
Set_Element_Subtype (Arr, Get_Branch_Type (El_Nat, I));
@@ -2748,7 +2735,6 @@ package body Vhdl.Sem_Types is
St_Def := Create_Iir (Iir_Kind_Record_Type_Definition);
Location_Copy (St_Def, Def);
Set_Type_Declarator (St_Def, Decl);
- Set_Base_Type (St_Def, St_Def);
St_List := Create_Iir_Flist (Get_Nbr_Elements (El_List));
Set_Elements_Declaration_List (St_Def, St_List);
Staticness := Locally;
diff --git a/src/vhdl/vhdl-std_package.adb b/src/vhdl/vhdl-std_package.adb
index c9d1ce938..5fa8fc2fd 100644
--- a/src/vhdl/vhdl-std_package.adb
+++ b/src/vhdl/vhdl-std_package.adb
@@ -261,7 +261,6 @@ package body Vhdl.Std_Package is
begin
--Integer_Type_Definition :=
-- Create_Std_Iir (Iir_Kind_Integer_Type_Definition);
- Set_Base_Type (Type_Definition, Type_Definition);
Set_Type_Staticness (Type_Definition, Locally);
Set_Signal_Type_Flag (Type_Definition, True);
Set_Has_Signal_Flag (Type_Definition, not Flags.Flag_Whole_Analyze);
@@ -282,7 +281,7 @@ package body Vhdl.Std_Package is
begin
Subtype_Definition :=
Create_Std_Iir (Iir_Kind_Integer_Subtype_Definition);
- Set_Base_Type (Subtype_Definition, Type_Definition);
+ Set_Parent_Type (Subtype_Definition, Type_Definition);
Constraint := Create_Std_Range_Expr
(Create_Std_Integer (Low_Bound (Is_64),
Universal_Integer_Type_Definition),
@@ -316,7 +315,6 @@ package body Vhdl.Std_Package is
Index := Create_Std_Type_Mark (Natural_Subtype_Declaration);
Def := Create_Std_Iir (Iir_Kind_Array_Type_Definition);
- Set_Base_Type (Def, Def);
Index_List := Create_Iir_Flist (1);
Set_Index_Subtype_Definition_List (Def, Index_List);
@@ -403,7 +401,6 @@ package body Vhdl.Std_Package is
begin
Decl := Create_Std_Decl (Iir_Kind_Type_Declaration);
Set_Identifier (Decl, Name_Table.Get_Identifier (Name));
- Set_Base_Type (Def, Def);
Set_Type_Staticness (Def, None);
Set_Type_Definition (Decl, Def);
Set_Type_Declarator (Def, Decl);
@@ -462,7 +459,6 @@ package body Vhdl.Std_Package is
-- (false, true)
Boolean_Type_Definition :=
Create_Std_Iir (Iir_Kind_Enumeration_Type_Definition);
- Set_Base_Type (Boolean_Type_Definition, Boolean_Type_Definition);
Set_Enumeration_Literal_List
(Boolean_Type_Definition, Create_Iir_Flist (2));
Boolean_False := Create_Std_Literal
@@ -501,7 +497,6 @@ package body Vhdl.Std_Package is
Create_Std_Iir (Iir_Kind_Enumeration_Type_Definition);
Set_Enumeration_Literal_List
(Bit_Type_Definition, Create_Iir_Flist (2));
- Set_Base_Type (Bit_Type_Definition, Bit_Type_Definition);
Set_Is_Character_Type (Bit_Type_Definition, True);
Bit_0 := Create_Std_Literal
(Get_Std_Character ('0'), 0, Bit_Type_Definition);
@@ -540,7 +535,6 @@ package body Vhdl.Std_Package is
begin
Character_Type_Definition :=
Create_Std_Iir (Iir_Kind_Enumeration_Type_Definition);
- Set_Base_Type (Character_Type_Definition, Character_Type_Definition);
Set_Is_Character_Type (Character_Type_Definition, True);
if Vhdl_Std = Vhdl_87 then
Len := 128;
@@ -592,8 +586,6 @@ package body Vhdl.Std_Package is
-- (note, warning, error, failure)
Severity_Level_Type_Definition :=
Create_Std_Iir (Iir_Kind_Enumeration_Type_Definition);
- Set_Base_Type (Severity_Level_Type_Definition,
- Severity_Level_Type_Definition);
Set_Enumeration_Literal_List
(Severity_Level_Type_Definition, Create_Iir_Flist (4));
Set_Scalar_Size (Severity_Level_Type_Definition, Scalar_8);
@@ -652,8 +644,6 @@ package body Vhdl.Std_Package is
declare
Constraint : Iir_Range_Expression;
begin
- Set_Base_Type (Universal_Real_Type_Definition,
- Universal_Real_Type_Definition);
Set_Type_Staticness (Universal_Real_Type_Definition, Locally);
Set_Signal_Type_Flag (Universal_Real_Type_Definition, True);
Set_Has_Signal_Flag (Universal_Real_Type_Definition, False);
@@ -670,8 +660,8 @@ package body Vhdl.Std_Package is
Universal_Real_Subtype_Definition :=
Create_Std_Iir (Iir_Kind_Floating_Subtype_Definition);
- Set_Base_Type (Universal_Real_Subtype_Definition,
- Universal_Real_Type_Definition);
+ Set_Parent_Type (Universal_Real_Subtype_Definition,
+ Universal_Real_Type_Definition);
Constraint := Create_Std_Range_Expr
(Create_Std_Fp (Fp64'First, Universal_Real_Type_Definition),
Create_Std_Fp (Fp64'Last, Universal_Real_Type_Definition),
@@ -718,8 +708,6 @@ package body Vhdl.Std_Package is
end;
begin
- Set_Base_Type (Convertible_Real_Type_Definition,
- Convertible_Real_Type_Definition);
Set_Type_Staticness (Convertible_Real_Type_Definition, Locally);
Set_Signal_Type_Flag (Convertible_Real_Type_Definition, True);
Set_Has_Signal_Flag (Convertible_Real_Type_Definition, False);
@@ -772,7 +760,6 @@ package body Vhdl.Std_Package is
begin
Real_Type_Definition :=
Create_Std_Iir (Iir_Kind_Floating_Type_Definition);
- Set_Base_Type (Real_Type_Definition, Real_Type_Definition);
Set_Type_Staticness (Real_Type_Definition, Locally);
Set_Signal_Type_Flag (Real_Type_Definition, True);
Set_Has_Signal_Flag (Real_Type_Definition,
@@ -790,7 +777,7 @@ package body Vhdl.Std_Package is
Real_Subtype_Definition :=
Create_Std_Iir (Iir_Kind_Floating_Subtype_Definition);
- Set_Base_Type (Real_Subtype_Definition, Real_Type_Definition);
+ Set_Parent_Type (Real_Subtype_Definition, Real_Type_Definition);
Constraint := Create_Std_Range_Expr
(Create_Std_Fp (Fp64'First, Universal_Real_Type_Definition),
Create_Std_Fp (Fp64'Last, Universal_Real_Type_Definition),
@@ -878,7 +865,6 @@ package body Vhdl.Std_Package is
Time_Type_Definition :=
Create_Std_Iir (Iir_Kind_Physical_Type_Definition);
- Set_Base_Type (Time_Type_Definition, Time_Type_Definition);
Set_Type_Staticness (Time_Type_Definition, Locally);--Time_Staticness
Set_Signal_Type_Flag (Time_Type_Definition, True);
Set_Has_Signal_Flag (Time_Type_Definition,
@@ -932,7 +918,7 @@ package body Vhdl.Std_Package is
Time_Fs_Unit),
Time_Type_Definition);
Set_Range_Constraint (Time_Subtype_Definition, Constraint);
- Set_Base_Type (Time_Subtype_Definition, Time_Type_Definition);
+ Set_Parent_Type (Time_Subtype_Definition, Time_Type_Definition);
--Set_Subtype_Type_Mark (Time_Subtype_Definition,
-- Time_Type_Definition);
Set_Type_Staticness (Time_Subtype_Definition, Time_Staticness);
@@ -967,7 +953,7 @@ package body Vhdl.Std_Package is
Time_Fs_Unit),
Time_Type_Definition);
Set_Range_Constraint (Delay_Length_Subtype_Definition, Constraint);
- Set_Base_Type
+ Set_Parent_Type
(Delay_Length_Subtype_Definition, Time_Type_Definition);
Set_Type_Staticness
(Delay_Length_Subtype_Definition, Time_Staticness);
@@ -999,8 +985,6 @@ package body Vhdl.Std_Package is
if AMS_Vhdl then
Domain_Type_Type_Definition :=
Create_Std_Iir (Iir_Kind_Enumeration_Type_Definition);
- Set_Base_Type (Domain_Type_Type_Definition,
- Domain_Type_Type_Definition);
Set_Enumeration_Literal_List
(Domain_Type_Type_Definition, Create_Iir_Flist (3));
Set_Scalar_Size (Domain_Type_Type_Definition, Scalar_8);
@@ -1119,7 +1103,7 @@ package body Vhdl.Std_Package is
begin
Natural_Subtype_Definition :=
Create_Std_Iir (Iir_Kind_Integer_Subtype_Definition);
- Set_Base_Type (Natural_Subtype_Definition, Integer_Type_Definition);
+ Set_Parent_Type (Natural_Subtype_Definition, Integer_Type_Definition);
Set_Subtype_Type_Mark
(Natural_Subtype_Definition,
Create_Std_Type_Mark (Integer_Subtype_Declaration));
@@ -1151,8 +1135,8 @@ package body Vhdl.Std_Package is
begin
Positive_Subtype_Definition :=
Create_Std_Iir (Iir_Kind_Integer_Subtype_Definition);
- Set_Base_Type (Positive_Subtype_Definition,
- Integer_Type_Definition);
+ Set_Parent_Type (Positive_Subtype_Definition,
+ Integer_Type_Definition);
Set_Subtype_Type_Mark
(Positive_Subtype_Definition,
Create_Std_Type_Mark (Integer_Subtype_Declaration));
@@ -1188,7 +1172,6 @@ package body Vhdl.Std_Package is
String_Type_Definition :=
Create_Std_Iir (Iir_Kind_Array_Type_Definition);
- Set_Base_Type (String_Type_Definition, String_Type_Definition);
Index_List := Create_Iir_Flist (1);
Set_Nth_Element (Index_List, 0,
Create_Std_Type_Mark (Positive_Subtype_Declaration));
@@ -1263,8 +1246,6 @@ package body Vhdl.Std_Package is
if Vhdl_Std >= Vhdl_93 then
File_Open_Kind_Type_Definition :=
Create_Std_Iir (Iir_Kind_Enumeration_Type_Definition);
- Set_Base_Type (File_Open_Kind_Type_Definition,
- File_Open_Kind_Type_Definition);
Set_Enumeration_Literal_List
(File_Open_Kind_Type_Definition, Create_Iir_Flist (3));
Set_Scalar_Size (File_Open_Kind_Type_Definition, Scalar_8);
@@ -1302,8 +1283,6 @@ package body Vhdl.Std_Package is
if Vhdl_Std >= Vhdl_93 then
File_Open_Status_Type_Definition :=
Create_Std_Iir (Iir_Kind_Enumeration_Type_Definition);
- Set_Base_Type (File_Open_Status_Type_Definition,
- File_Open_Status_Type_Definition);
Set_Enumeration_Literal_List
(File_Open_Status_Type_Definition, Create_Iir_Flist (4));
Set_Scalar_Size (File_Open_Status_Type_Definition, Scalar_8);
diff --git a/src/vhdl/vhdl-utils.adb b/src/vhdl/vhdl-utils.adb
index 116d3dcb1..030889fc5 100644
--- a/src/vhdl/vhdl-utils.adb
+++ b/src/vhdl/vhdl-utils.adb
@@ -992,6 +992,41 @@ package body Vhdl.Utils is
end if;
end Clear_Seen_Flag;
+ function Get_Base_Type (Atype : Iir) return Iir
+ is
+ Res : Iir;
+ begin
+ Res := Atype;
+ loop
+ case Get_Kind (Res) is
+ when Iir_Kind_Access_Type_Definition
+ | Iir_Kind_Integer_Type_Definition
+ | Iir_Kind_Floating_Type_Definition
+ | Iir_Kind_Enumeration_Type_Definition
+ | Iir_Kind_Physical_Type_Definition
+ | Iir_Kind_Array_Type_Definition
+ | Iir_Kind_Record_Type_Definition
+ | Iir_Kind_Protected_Type_Declaration
+ | Iir_Kind_File_Type_Definition
+ | Iir_Kind_Incomplete_Type_Definition
+ | Iir_Kind_Interface_Type_Definition
+ | Iir_Kind_Wildcard_Type_Definition
+ | Iir_Kind_Error =>
+ return Res;
+ when Iir_Kind_Access_Subtype_Definition
+ | Iir_Kind_Integer_Subtype_Definition
+ | Iir_Kind_Floating_Subtype_Definition
+ | Iir_Kind_Enumeration_Subtype_Definition
+ | Iir_Kind_Physical_Subtype_Definition
+ | Iir_Kind_Array_Subtype_Definition
+ | Iir_Kind_Record_Subtype_Definition =>
+ Res := Get_Parent_Type (Res);
+ when others =>
+ Error_Kind ("get_base_type", Res);
+ end case;
+ end loop;
+ end Get_Base_Type;
+
function Is_Anonymous_Type_Definition (Def : Iir) return Boolean is
begin
return Get_Type_Declarator (Def) = Null_Iir;
@@ -1284,17 +1319,6 @@ package body Vhdl.Utils is
end if;
end Get_Denoted_Type_Mark;
- function Get_Parent_Type (Subtyp : Iir) return Iir
- is
- Type_Mark_Name : constant Iir := Get_Subtype_Type_Mark (Subtyp);
- begin
- if Type_Mark_Name = Null_Iir then
- return Get_Base_Type (Subtyp);
- else
- return Get_Type (Get_Named_Entity (Type_Mark_Name));
- end if;
- end Get_Parent_Type;
-
function Get_Base_Element_Declaration (El : Iir) return Iir
is
Rec_Type : constant Iir := Get_Base_Type (Get_Parent (El));
@@ -1625,7 +1649,7 @@ package body Vhdl.Utils is
begin
Res := Create_Iir (Iir_Kind_Array_Subtype_Definition);
Set_Location (Res, Loc);
- Set_Base_Type (Res, Base_Type);
+ Set_Parent_Type (Res, Base_Type);
Set_Element_Subtype (Res, El_Type);
if Get_Kind (Arr_Type) = Iir_Kind_Array_Subtype_Definition then
Set_Resolution_Indication (Res, Get_Resolution_Indication (Arr_Type));
@@ -1705,7 +1729,6 @@ package body Vhdl.Utils is
begin
Res := Create_Error (Orig);
--Set_Expr_Staticness (Res, Locally);
- Set_Base_Type (Res, Res);
Set_Type_Declarator (Res, Null_Iir);
Set_Resolved_Flag (Res, True);
Set_Signal_Type_Flag (Res, True);
diff --git a/src/vhdl/vhdl-utils.ads b/src/vhdl/vhdl-utils.ads
index 6712aa0fa..5cbdc8c25 100644
--- a/src/vhdl/vhdl-utils.ads
+++ b/src/vhdl/vhdl-utils.ads
@@ -160,6 +160,10 @@ package Vhdl.Utils is
-- Clear flag of TOP and all of its callees.
procedure Clear_Seen_Flag (Top : Iir);
+ -- Return the base type of ATYPE. Will always return ATYPE if ATYPE is
+ -- a proper type (and not a subtype).
+ function Get_Base_Type (Atype : Iir) return Iir;
+
-- Return TRUE iff DEF is an anonymous type (or subtype) definition.
-- Note: DEF is required to be a type (or subtype) definition.
-- Note: type (and not subtype) are never anonymous.
@@ -263,10 +267,6 @@ package Vhdl.Utils is
-- Return the type or subtype definition of the SUBTYP type mark.
function Get_Denoted_Type_Mark (Subtyp : Iir) return Iir;
- -- Return the parent type, which is either the type of the type mark, or
- -- the base type if SUBTYP has no type mark.
- function Get_Parent_Type (Subtyp : Iir) return Iir;
-
-- From element declaration or element constraint EL, get the corresponding
-- element declaration in the base record type.
function Get_Base_Element_Declaration (El : Iir) return Iir;