aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2016-06-01 06:36:27 +0200
committerTristan Gingold <tgingold@free.fr>2016-06-01 06:36:27 +0200
commit39d035c3673f513c54e6fe57cd42e2b88d0d68ff (patch)
treebeb4a18d53354fb56b81cd1c6efc2b2cf113b42f /src
parent8b3d9b4a2b55a6a403b847aafed088f672286b3b (diff)
downloadghdl-39d035c3673f513c54e6fe57cd42e2b88d0d68ff.tar.gz
ghdl-39d035c3673f513c54e6fe57cd42e2b88d0d68ff.tar.bz2
ghdl-39d035c3673f513c54e6fe57cd42e2b88d0d68ff.zip
Remove Get/Set_Type_Reference
Diffstat (limited to 'src')
-rw-r--r--src/vhdl/iirs.adb16
-rw-r--r--src/vhdl/iirs.ads8
-rw-r--r--src/vhdl/nodes_meta.adb338
-rw-r--r--src/vhdl/nodes_meta.ads2
-rw-r--r--src/vhdl/sem_decls.adb8
-rw-r--r--src/vhdl/sem_expr.adb11
6 files changed, 166 insertions, 217 deletions
diff --git a/src/vhdl/iirs.adb b/src/vhdl/iirs.adb
index 6f2ce5aa4..f692cb876 100644
--- a/src/vhdl/iirs.adb
+++ b/src/vhdl/iirs.adb
@@ -2110,22 +2110,6 @@ package body Iirs is
Set_Field7 (D, Iir_Predefined_Functions'Pos (Def));
end Set_Implicit_Definition;
- function Get_Type_Reference (Target : Iir) return Iir is
- begin
- pragma Assert (Target /= Null_Iir);
- pragma Assert (Has_Type_Reference (Get_Kind (Target)),
- "no field Type_Reference");
- return Get_Field11 (Target);
- end Get_Type_Reference;
-
- procedure Set_Type_Reference (Target : Iir; Decl : Iir) is
- begin
- pragma Assert (Target /= Null_Iir);
- pragma Assert (Has_Type_Reference (Get_Kind (Target)),
- "no field Type_Reference");
- Set_Field11 (Target, Decl);
- end Set_Type_Reference;
-
function Get_Default_Value (Target : Iir) return Iir is
begin
pragma Assert (Target /= Null_Iir);
diff --git a/src/vhdl/iirs.ads b/src/vhdl/iirs.ads
index 408687925..955268023 100644
--- a/src/vhdl/iirs.ads
+++ b/src/vhdl/iirs.ads
@@ -1262,8 +1262,6 @@ package Iirs is
--
-- Get/Set_Subprogram_Depth (Field10)
--
- -- Get/Set_Type_Reference (Field11)
- --
-- Get/Set_Overload_Number (Field12)
--
-- Get/Set_Seen_Flag (Flag1)
@@ -5742,12 +5740,6 @@ package Iirs is
function Get_Implicit_Definition (D : Iir) return Iir_Predefined_Functions;
procedure Set_Implicit_Definition (D : Iir; Def : Iir_Predefined_Functions);
- -- For an implicit subprogram, the type_reference is the type declaration
- -- for which the implicit subprogram was defined.
- -- Field: Field11 Ref
- function Get_Type_Reference (Target : Iir) return Iir;
- procedure Set_Type_Reference (Target : Iir; Decl : Iir);
-
-- Get the default value of an object declaration.
-- Null_iir if no default value.
-- Note that this node can be shared between declarations if they are
diff --git a/src/vhdl/nodes_meta.adb b/src/vhdl/nodes_meta.adb
index c49975a73..5a0c88de0 100644
--- a/src/vhdl/nodes_meta.adb
+++ b/src/vhdl/nodes_meta.adb
@@ -118,7 +118,6 @@ package body Nodes_Meta is
Field_Impure_Depth => Type_Iir_Int32,
Field_Return_Type => Type_Iir,
Field_Implicit_Definition => Type_Iir_Predefined_Functions,
- Field_Type_Reference => Type_Iir,
Field_Default_Value => Type_Iir,
Field_Deferred_Declaration => Type_Iir,
Field_Deferred_Declaration_Flag => Type_Boolean,
@@ -530,8 +529,6 @@ package body Nodes_Meta is
return "return_type";
when Field_Implicit_Definition =>
return "implicit_definition";
- when Field_Type_Reference =>
- return "type_reference";
when Field_Default_Value =>
return "default_value";
when Field_Deferred_Declaration =>
@@ -1658,8 +1655,6 @@ package body Nodes_Meta is
return Attr_Ref;
when Field_Implicit_Definition =>
return Attr_None;
- when Field_Type_Reference =>
- return Attr_Ref;
when Field_Default_Value =>
return Attr_Maybe_Ref;
when Field_Deferred_Declaration =>
@@ -2832,7 +2827,6 @@ package body Nodes_Meta is
Field_Return_Type_Mark,
Field_Parent,
Field_Return_Type,
- Field_Type_Reference,
Field_Subprogram_Body,
-- Iir_Kind_Procedure_Declaration
Field_Subprogram_Depth,
@@ -2857,7 +2851,6 @@ package body Nodes_Meta is
Field_Generic_Chain,
Field_Return_Type_Mark,
Field_Parent,
- Field_Type_Reference,
Field_Subprogram_Body,
-- Iir_Kind_Function_Body
Field_Impure_Depth,
@@ -4169,164 +4162,164 @@ package body Nodes_Meta is
Iir_Kind_Across_Quantity_Declaration => 616,
Iir_Kind_Through_Quantity_Declaration => 628,
Iir_Kind_Enumeration_Literal => 639,
- Iir_Kind_Function_Declaration => 664,
- Iir_Kind_Procedure_Declaration => 688,
- Iir_Kind_Function_Body => 698,
- Iir_Kind_Procedure_Body => 709,
- Iir_Kind_Object_Alias_Declaration => 721,
- Iir_Kind_File_Declaration => 736,
- Iir_Kind_Guard_Signal_Declaration => 749,
- Iir_Kind_Signal_Declaration => 766,
- Iir_Kind_Variable_Declaration => 779,
- Iir_Kind_Constant_Declaration => 793,
- Iir_Kind_Iterator_Declaration => 805,
- Iir_Kind_Interface_Constant_Declaration => 821,
- Iir_Kind_Interface_Variable_Declaration => 837,
- Iir_Kind_Interface_Signal_Declaration => 858,
- Iir_Kind_Interface_File_Declaration => 874,
- Iir_Kind_Interface_Package_Declaration => 883,
- Iir_Kind_Identity_Operator => 887,
- Iir_Kind_Negation_Operator => 891,
- Iir_Kind_Absolute_Operator => 895,
- Iir_Kind_Not_Operator => 899,
- Iir_Kind_Condition_Operator => 903,
- Iir_Kind_Reduction_And_Operator => 907,
- Iir_Kind_Reduction_Or_Operator => 911,
- Iir_Kind_Reduction_Nand_Operator => 915,
- Iir_Kind_Reduction_Nor_Operator => 919,
- Iir_Kind_Reduction_Xor_Operator => 923,
- Iir_Kind_Reduction_Xnor_Operator => 927,
- Iir_Kind_And_Operator => 932,
- Iir_Kind_Or_Operator => 937,
- Iir_Kind_Nand_Operator => 942,
- Iir_Kind_Nor_Operator => 947,
- Iir_Kind_Xor_Operator => 952,
- Iir_Kind_Xnor_Operator => 957,
- Iir_Kind_Equality_Operator => 962,
- Iir_Kind_Inequality_Operator => 967,
- Iir_Kind_Less_Than_Operator => 972,
- Iir_Kind_Less_Than_Or_Equal_Operator => 977,
- Iir_Kind_Greater_Than_Operator => 982,
- Iir_Kind_Greater_Than_Or_Equal_Operator => 987,
- Iir_Kind_Match_Equality_Operator => 992,
- Iir_Kind_Match_Inequality_Operator => 997,
- Iir_Kind_Match_Less_Than_Operator => 1002,
- Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1007,
- Iir_Kind_Match_Greater_Than_Operator => 1012,
- Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1017,
- Iir_Kind_Sll_Operator => 1022,
- Iir_Kind_Sla_Operator => 1027,
- Iir_Kind_Srl_Operator => 1032,
- Iir_Kind_Sra_Operator => 1037,
- Iir_Kind_Rol_Operator => 1042,
- Iir_Kind_Ror_Operator => 1047,
- Iir_Kind_Addition_Operator => 1052,
- Iir_Kind_Substraction_Operator => 1057,
- Iir_Kind_Concatenation_Operator => 1062,
- Iir_Kind_Multiplication_Operator => 1067,
- Iir_Kind_Division_Operator => 1072,
- Iir_Kind_Modulus_Operator => 1077,
- Iir_Kind_Remainder_Operator => 1082,
- Iir_Kind_Exponentiation_Operator => 1087,
- Iir_Kind_Function_Call => 1095,
- Iir_Kind_Aggregate => 1101,
- Iir_Kind_Parenthesis_Expression => 1104,
- Iir_Kind_Qualified_Expression => 1108,
- Iir_Kind_Type_Conversion => 1113,
- Iir_Kind_Allocator_By_Expression => 1117,
- Iir_Kind_Allocator_By_Subtype => 1123,
- Iir_Kind_Selected_Element => 1129,
- Iir_Kind_Dereference => 1134,
- Iir_Kind_Implicit_Dereference => 1139,
- Iir_Kind_Slice_Name => 1146,
- Iir_Kind_Indexed_Name => 1152,
- Iir_Kind_Psl_Expression => 1154,
- Iir_Kind_Sensitized_Process_Statement => 1174,
- Iir_Kind_Process_Statement => 1194,
- Iir_Kind_Concurrent_Simple_Signal_Assignment => 1205,
- Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1216,
- Iir_Kind_Concurrent_Selected_Signal_Assignment => 1228,
- Iir_Kind_Concurrent_Assertion_Statement => 1236,
- Iir_Kind_Psl_Default_Clock => 1240,
- Iir_Kind_Psl_Assert_Statement => 1252,
- Iir_Kind_Psl_Cover_Statement => 1264,
- Iir_Kind_Concurrent_Procedure_Call_Statement => 1271,
- Iir_Kind_Block_Statement => 1284,
- Iir_Kind_If_Generate_Statement => 1294,
- Iir_Kind_For_Generate_Statement => 1303,
- Iir_Kind_Component_Instantiation_Statement => 1313,
- Iir_Kind_Simple_Simultaneous_Statement => 1320,
- Iir_Kind_Generate_Statement_Body => 1331,
- Iir_Kind_If_Generate_Else_Clause => 1336,
- Iir_Kind_Simple_Signal_Assignment_Statement => 1345,
- Iir_Kind_Conditional_Signal_Assignment_Statement => 1354,
- Iir_Kind_Null_Statement => 1358,
- Iir_Kind_Assertion_Statement => 1365,
- Iir_Kind_Report_Statement => 1371,
- Iir_Kind_Wait_Statement => 1378,
- Iir_Kind_Variable_Assignment_Statement => 1384,
- Iir_Kind_Conditional_Variable_Assignment_Statement => 1390,
- Iir_Kind_Return_Statement => 1396,
- Iir_Kind_For_Loop_Statement => 1405,
- Iir_Kind_While_Loop_Statement => 1413,
- Iir_Kind_Next_Statement => 1419,
- Iir_Kind_Exit_Statement => 1425,
- Iir_Kind_Case_Statement => 1433,
- Iir_Kind_Procedure_Call_Statement => 1439,
- Iir_Kind_If_Statement => 1448,
- Iir_Kind_Elsif => 1453,
- Iir_Kind_Character_Literal => 1460,
- Iir_Kind_Simple_Name => 1467,
- Iir_Kind_Selected_Name => 1475,
- Iir_Kind_Operator_Symbol => 1480,
- Iir_Kind_Selected_By_All_Name => 1485,
- Iir_Kind_Parenthesis_Name => 1489,
- Iir_Kind_External_Constant_Name => 1498,
- Iir_Kind_External_Signal_Name => 1507,
- Iir_Kind_External_Variable_Name => 1516,
- Iir_Kind_Package_Pathname => 1519,
- Iir_Kind_Absolute_Pathname => 1520,
- Iir_Kind_Relative_Pathname => 1521,
- Iir_Kind_Pathname_Element => 1525,
- Iir_Kind_Base_Attribute => 1527,
- Iir_Kind_Left_Type_Attribute => 1532,
- Iir_Kind_Right_Type_Attribute => 1537,
- Iir_Kind_High_Type_Attribute => 1542,
- Iir_Kind_Low_Type_Attribute => 1547,
- Iir_Kind_Ascending_Type_Attribute => 1552,
- Iir_Kind_Image_Attribute => 1558,
- Iir_Kind_Value_Attribute => 1564,
- Iir_Kind_Pos_Attribute => 1570,
- Iir_Kind_Val_Attribute => 1576,
- Iir_Kind_Succ_Attribute => 1582,
- Iir_Kind_Pred_Attribute => 1588,
- Iir_Kind_Leftof_Attribute => 1594,
- Iir_Kind_Rightof_Attribute => 1600,
- Iir_Kind_Delayed_Attribute => 1608,
- Iir_Kind_Stable_Attribute => 1616,
- Iir_Kind_Quiet_Attribute => 1624,
- Iir_Kind_Transaction_Attribute => 1632,
- Iir_Kind_Event_Attribute => 1636,
- Iir_Kind_Active_Attribute => 1640,
- Iir_Kind_Last_Event_Attribute => 1644,
- Iir_Kind_Last_Active_Attribute => 1648,
- Iir_Kind_Last_Value_Attribute => 1652,
- Iir_Kind_Driving_Attribute => 1656,
- Iir_Kind_Driving_Value_Attribute => 1660,
- Iir_Kind_Behavior_Attribute => 1660,
- Iir_Kind_Structure_Attribute => 1660,
- Iir_Kind_Simple_Name_Attribute => 1667,
- Iir_Kind_Instance_Name_Attribute => 1672,
- Iir_Kind_Path_Name_Attribute => 1677,
- Iir_Kind_Left_Array_Attribute => 1684,
- Iir_Kind_Right_Array_Attribute => 1691,
- Iir_Kind_High_Array_Attribute => 1698,
- Iir_Kind_Low_Array_Attribute => 1705,
- Iir_Kind_Length_Array_Attribute => 1712,
- Iir_Kind_Ascending_Array_Attribute => 1719,
- Iir_Kind_Range_Array_Attribute => 1726,
- Iir_Kind_Reverse_Range_Array_Attribute => 1733,
- Iir_Kind_Attribute_Name => 1741
+ Iir_Kind_Function_Declaration => 663,
+ Iir_Kind_Procedure_Declaration => 686,
+ Iir_Kind_Function_Body => 696,
+ Iir_Kind_Procedure_Body => 707,
+ Iir_Kind_Object_Alias_Declaration => 719,
+ Iir_Kind_File_Declaration => 734,
+ Iir_Kind_Guard_Signal_Declaration => 747,
+ Iir_Kind_Signal_Declaration => 764,
+ Iir_Kind_Variable_Declaration => 777,
+ Iir_Kind_Constant_Declaration => 791,
+ Iir_Kind_Iterator_Declaration => 803,
+ Iir_Kind_Interface_Constant_Declaration => 819,
+ Iir_Kind_Interface_Variable_Declaration => 835,
+ Iir_Kind_Interface_Signal_Declaration => 856,
+ Iir_Kind_Interface_File_Declaration => 872,
+ Iir_Kind_Interface_Package_Declaration => 881,
+ Iir_Kind_Identity_Operator => 885,
+ Iir_Kind_Negation_Operator => 889,
+ Iir_Kind_Absolute_Operator => 893,
+ Iir_Kind_Not_Operator => 897,
+ Iir_Kind_Condition_Operator => 901,
+ Iir_Kind_Reduction_And_Operator => 905,
+ Iir_Kind_Reduction_Or_Operator => 909,
+ Iir_Kind_Reduction_Nand_Operator => 913,
+ Iir_Kind_Reduction_Nor_Operator => 917,
+ Iir_Kind_Reduction_Xor_Operator => 921,
+ Iir_Kind_Reduction_Xnor_Operator => 925,
+ Iir_Kind_And_Operator => 930,
+ Iir_Kind_Or_Operator => 935,
+ Iir_Kind_Nand_Operator => 940,
+ Iir_Kind_Nor_Operator => 945,
+ Iir_Kind_Xor_Operator => 950,
+ Iir_Kind_Xnor_Operator => 955,
+ Iir_Kind_Equality_Operator => 960,
+ Iir_Kind_Inequality_Operator => 965,
+ Iir_Kind_Less_Than_Operator => 970,
+ Iir_Kind_Less_Than_Or_Equal_Operator => 975,
+ Iir_Kind_Greater_Than_Operator => 980,
+ Iir_Kind_Greater_Than_Or_Equal_Operator => 985,
+ Iir_Kind_Match_Equality_Operator => 990,
+ Iir_Kind_Match_Inequality_Operator => 995,
+ Iir_Kind_Match_Less_Than_Operator => 1000,
+ Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1005,
+ Iir_Kind_Match_Greater_Than_Operator => 1010,
+ Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1015,
+ Iir_Kind_Sll_Operator => 1020,
+ Iir_Kind_Sla_Operator => 1025,
+ Iir_Kind_Srl_Operator => 1030,
+ Iir_Kind_Sra_Operator => 1035,
+ Iir_Kind_Rol_Operator => 1040,
+ Iir_Kind_Ror_Operator => 1045,
+ Iir_Kind_Addition_Operator => 1050,
+ Iir_Kind_Substraction_Operator => 1055,
+ Iir_Kind_Concatenation_Operator => 1060,
+ Iir_Kind_Multiplication_Operator => 1065,
+ Iir_Kind_Division_Operator => 1070,
+ Iir_Kind_Modulus_Operator => 1075,
+ Iir_Kind_Remainder_Operator => 1080,
+ Iir_Kind_Exponentiation_Operator => 1085,
+ Iir_Kind_Function_Call => 1093,
+ Iir_Kind_Aggregate => 1099,
+ Iir_Kind_Parenthesis_Expression => 1102,
+ Iir_Kind_Qualified_Expression => 1106,
+ Iir_Kind_Type_Conversion => 1111,
+ Iir_Kind_Allocator_By_Expression => 1115,
+ Iir_Kind_Allocator_By_Subtype => 1121,
+ Iir_Kind_Selected_Element => 1127,
+ Iir_Kind_Dereference => 1132,
+ Iir_Kind_Implicit_Dereference => 1137,
+ Iir_Kind_Slice_Name => 1144,
+ Iir_Kind_Indexed_Name => 1150,
+ Iir_Kind_Psl_Expression => 1152,
+ Iir_Kind_Sensitized_Process_Statement => 1172,
+ Iir_Kind_Process_Statement => 1192,
+ Iir_Kind_Concurrent_Simple_Signal_Assignment => 1203,
+ Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1214,
+ Iir_Kind_Concurrent_Selected_Signal_Assignment => 1226,
+ Iir_Kind_Concurrent_Assertion_Statement => 1234,
+ Iir_Kind_Psl_Default_Clock => 1238,
+ Iir_Kind_Psl_Assert_Statement => 1250,
+ Iir_Kind_Psl_Cover_Statement => 1262,
+ Iir_Kind_Concurrent_Procedure_Call_Statement => 1269,
+ Iir_Kind_Block_Statement => 1282,
+ Iir_Kind_If_Generate_Statement => 1292,
+ Iir_Kind_For_Generate_Statement => 1301,
+ Iir_Kind_Component_Instantiation_Statement => 1311,
+ Iir_Kind_Simple_Simultaneous_Statement => 1318,
+ Iir_Kind_Generate_Statement_Body => 1329,
+ Iir_Kind_If_Generate_Else_Clause => 1334,
+ Iir_Kind_Simple_Signal_Assignment_Statement => 1343,
+ Iir_Kind_Conditional_Signal_Assignment_Statement => 1352,
+ Iir_Kind_Null_Statement => 1356,
+ Iir_Kind_Assertion_Statement => 1363,
+ Iir_Kind_Report_Statement => 1369,
+ Iir_Kind_Wait_Statement => 1376,
+ Iir_Kind_Variable_Assignment_Statement => 1382,
+ Iir_Kind_Conditional_Variable_Assignment_Statement => 1388,
+ Iir_Kind_Return_Statement => 1394,
+ Iir_Kind_For_Loop_Statement => 1403,
+ Iir_Kind_While_Loop_Statement => 1411,
+ Iir_Kind_Next_Statement => 1417,
+ Iir_Kind_Exit_Statement => 1423,
+ Iir_Kind_Case_Statement => 1431,
+ Iir_Kind_Procedure_Call_Statement => 1437,
+ Iir_Kind_If_Statement => 1446,
+ Iir_Kind_Elsif => 1451,
+ Iir_Kind_Character_Literal => 1458,
+ Iir_Kind_Simple_Name => 1465,
+ Iir_Kind_Selected_Name => 1473,
+ Iir_Kind_Operator_Symbol => 1478,
+ Iir_Kind_Selected_By_All_Name => 1483,
+ Iir_Kind_Parenthesis_Name => 1487,
+ Iir_Kind_External_Constant_Name => 1496,
+ Iir_Kind_External_Signal_Name => 1505,
+ Iir_Kind_External_Variable_Name => 1514,
+ Iir_Kind_Package_Pathname => 1517,
+ Iir_Kind_Absolute_Pathname => 1518,
+ Iir_Kind_Relative_Pathname => 1519,
+ Iir_Kind_Pathname_Element => 1523,
+ Iir_Kind_Base_Attribute => 1525,
+ Iir_Kind_Left_Type_Attribute => 1530,
+ Iir_Kind_Right_Type_Attribute => 1535,
+ Iir_Kind_High_Type_Attribute => 1540,
+ Iir_Kind_Low_Type_Attribute => 1545,
+ Iir_Kind_Ascending_Type_Attribute => 1550,
+ Iir_Kind_Image_Attribute => 1556,
+ Iir_Kind_Value_Attribute => 1562,
+ Iir_Kind_Pos_Attribute => 1568,
+ Iir_Kind_Val_Attribute => 1574,
+ Iir_Kind_Succ_Attribute => 1580,
+ Iir_Kind_Pred_Attribute => 1586,
+ Iir_Kind_Leftof_Attribute => 1592,
+ Iir_Kind_Rightof_Attribute => 1598,
+ Iir_Kind_Delayed_Attribute => 1606,
+ Iir_Kind_Stable_Attribute => 1614,
+ Iir_Kind_Quiet_Attribute => 1622,
+ Iir_Kind_Transaction_Attribute => 1630,
+ Iir_Kind_Event_Attribute => 1634,
+ Iir_Kind_Active_Attribute => 1638,
+ Iir_Kind_Last_Event_Attribute => 1642,
+ Iir_Kind_Last_Active_Attribute => 1646,
+ Iir_Kind_Last_Value_Attribute => 1650,
+ Iir_Kind_Driving_Attribute => 1654,
+ Iir_Kind_Driving_Value_Attribute => 1658,
+ Iir_Kind_Behavior_Attribute => 1658,
+ Iir_Kind_Structure_Attribute => 1658,
+ Iir_Kind_Simple_Name_Attribute => 1665,
+ Iir_Kind_Instance_Name_Attribute => 1670,
+ Iir_Kind_Path_Name_Attribute => 1675,
+ Iir_Kind_Left_Array_Attribute => 1682,
+ Iir_Kind_Right_Array_Attribute => 1689,
+ Iir_Kind_High_Array_Attribute => 1696,
+ Iir_Kind_Low_Array_Attribute => 1703,
+ Iir_Kind_Length_Array_Attribute => 1710,
+ Iir_Kind_Ascending_Array_Attribute => 1717,
+ Iir_Kind_Range_Array_Attribute => 1724,
+ Iir_Kind_Reverse_Range_Array_Attribute => 1731,
+ Iir_Kind_Attribute_Name => 1739
);
function Get_Fields (K : Iir_Kind) return Fields_Array
@@ -4782,8 +4775,6 @@ package body Nodes_Meta is
return Get_Subprogram_Body (N);
when Field_Return_Type =>
return Get_Return_Type (N);
- when Field_Type_Reference =>
- return Get_Type_Reference (N);
when Field_Default_Value =>
return Get_Default_Value (N);
when Field_Deferred_Declaration =>
@@ -5152,8 +5143,6 @@ package body Nodes_Meta is
Set_Subprogram_Body (N, V);
when Field_Return_Type =>
Set_Return_Type (N, V);
- when Field_Type_Reference =>
- Set_Type_Reference (N, V);
when Field_Default_Value =>
Set_Default_Value (N, V);
when Field_Deferred_Declaration =>
@@ -7250,17 +7239,6 @@ package body Nodes_Meta is
end case;
end Has_Implicit_Definition;
- function Has_Type_Reference (K : Iir_Kind) return Boolean is
- begin
- case K is
- when Iir_Kind_Function_Declaration
- | Iir_Kind_Procedure_Declaration =>
- return True;
- when others =>
- return False;
- end case;
- end Has_Type_Reference;
-
function Has_Default_Value (K : Iir_Kind) return Boolean is
begin
case K is
diff --git a/src/vhdl/nodes_meta.ads b/src/vhdl/nodes_meta.ads
index 49c77db6a..8d7d63d33 100644
--- a/src/vhdl/nodes_meta.ads
+++ b/src/vhdl/nodes_meta.ads
@@ -158,7 +158,6 @@ package Nodes_Meta is
Field_Impure_Depth,
Field_Return_Type,
Field_Implicit_Definition,
- Field_Type_Reference,
Field_Default_Value,
Field_Deferred_Declaration,
Field_Deferred_Declaration_Flag,
@@ -643,7 +642,6 @@ package Nodes_Meta is
function Has_Impure_Depth (K : Iir_Kind) return Boolean;
function Has_Return_Type (K : Iir_Kind) return Boolean;
function Has_Implicit_Definition (K : Iir_Kind) return Boolean;
- function Has_Type_Reference (K : Iir_Kind) return Boolean;
function Has_Default_Value (K : Iir_Kind) return Boolean;
function Has_Deferred_Declaration (K : Iir_Kind) return Boolean;
function Has_Deferred_Declaration_Flag (K : Iir_Kind) return Boolean;
diff --git a/src/vhdl/sem_decls.adb b/src/vhdl/sem_decls.adb
index d065b4c1f..c0fec32c0 100644
--- a/src/vhdl/sem_decls.adb
+++ b/src/vhdl/sem_decls.adb
@@ -474,7 +474,6 @@ package body Sem_Decls is
Set_Location (Proc, Loc);
Set_Parent (Proc, Get_Parent (Decl));
Set_Identifier (Proc, Std_Names.Name_File_Open);
- Set_Type_Reference (Proc, Decl);
Set_Visible_Flag (Proc, True);
Set_Wait_State (Proc, False);
Build_Init (Last_Interface);
@@ -528,7 +527,6 @@ package body Sem_Decls is
Set_Location (Proc, Loc);
Set_Parent (Proc, Get_Parent (Decl));
Set_Implicit_Definition (Proc, Iir_Predefined_File_Close);
- Set_Type_Reference (Proc, Decl);
Set_Visible_Flag (Proc, True);
Set_Wait_State (Proc, False);
Build_Init (Last_Interface);
@@ -554,7 +552,6 @@ package body Sem_Decls is
Set_Identifier (Proc, Std_Names.Name_Read);
Set_Location (Proc, Loc);
Set_Parent (Proc, Get_Parent (Decl));
- Set_Type_Reference (Proc, Decl);
Set_Visible_Flag (Proc, True);
Set_Wait_State (Proc, False);
Build_Init (Last_Interface);
@@ -593,7 +590,6 @@ package body Sem_Decls is
Set_Identifier (Proc, Std_Names.Name_Write);
Set_Location (Proc, Loc);
Set_Parent (Proc, Get_Parent (Decl));
- Set_Type_Reference (Proc, Decl);
Set_Visible_Flag (Proc, True);
Set_Wait_State (Proc, False);
Build_Init (Last_Interface);
@@ -623,7 +619,6 @@ package body Sem_Decls is
Set_Identifier (Proc, Std_Names.Name_Flush);
Set_Location (Proc, Loc);
Set_Parent (Proc, Get_Parent (Decl));
- Set_Type_Reference (Proc, Decl);
Set_Visible_Flag (Proc, True);
Set_Wait_State (Proc, False);
Build_Init (Last_Interface);
@@ -644,7 +639,6 @@ package body Sem_Decls is
Set_Identifier (Func, Std_Names.Name_Endfile);
Set_Location (Func, Loc);
Set_Parent (Func, Get_Parent (Decl));
- Set_Type_Reference (Func, Decl);
Set_Visible_Flag (Func, True);
Build_Init (Last_Interface);
Inter := Create_Iir (File_Interface_Kind);
@@ -693,7 +687,6 @@ package body Sem_Decls is
Location_Copy (Operation, Decl);
Set_Parent (Operation, Get_Parent (Decl));
Set_Interface_Declaration_Chain (Operation, Interface_Chain);
- Set_Type_Reference (Operation, Decl);
Set_Return_Type (Operation, Return_Type);
Set_Implicit_Definition (Operation, Def);
Set_Identifier (Operation, Name);
@@ -1097,7 +1090,6 @@ package body Sem_Decls is
Set_Mode (Var_Interface, Iir_Inout_Mode);
--Set_Purity_State (Deallocate_Proc, Impure);
Set_Wait_State (Deallocate_Proc, False);
- Set_Type_Reference (Deallocate_Proc, Decl);
Set_Visible_Flag (Deallocate_Proc, True);
Set_Interface_Declaration_Chain
diff --git a/src/vhdl/sem_expr.adb b/src/vhdl/sem_expr.adb
index 050c17680..1a07446b4 100644
--- a/src/vhdl/sem_expr.adb
+++ b/src/vhdl/sem_expr.adb
@@ -1583,6 +1583,9 @@ package body Sem_Expr is
-- type and the other not, return the primitive of the universal type.
-- This implements implicit type conversions rules.
-- Cf Sem_Names.Extract_Call_Without_Implicit_Conversion
+ --
+ -- The typical case is the use of comparison operator with literals or
+ -- attributes, like: s'length = 0
function Get_Non_Implicit_Subprogram (List : Iir_List) return Iir
is
El : Iir;
@@ -1596,15 +1599,17 @@ package body Sem_Expr is
for I in Natural loop
El := Get_Nth_Element (List, I);
exit when El = Null_Iir;
+
+ -- Only comparison operators need this special handling.
if Get_Base_Type (Get_Return_Type (El)) /= Boolean_Type_Definition
then
return Null_Iir;
end if;
if Is_Implicit_Subprogram (El) then
- Ref_Type := Get_Type_Reference (El);
- if Ref_Type = Universal_Integer_Type_Declaration
- or Ref_Type = Universal_Real_Type_Declaration
+ Ref_Type := Get_Type (Get_Interface_Declaration_Chain (El));
+ if Ref_Type = Universal_Integer_Type_Definition
+ or Ref_Type = Universal_Real_Type_Definition
then
if Res = Null_Iir then
Res := El;