diff options
author | Tristan Gingold <tgingold@free.fr> | 2016-06-01 06:36:27 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2016-06-01 06:36:27 +0200 |
commit | 39d035c3673f513c54e6fe57cd42e2b88d0d68ff (patch) | |
tree | beb4a18d53354fb56b81cd1c6efc2b2cf113b42f /src | |
parent | 8b3d9b4a2b55a6a403b847aafed088f672286b3b (diff) | |
download | ghdl-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.adb | 16 | ||||
-rw-r--r-- | src/vhdl/iirs.ads | 8 | ||||
-rw-r--r-- | src/vhdl/nodes_meta.adb | 338 | ||||
-rw-r--r-- | src/vhdl/nodes_meta.ads | 2 | ||||
-rw-r--r-- | src/vhdl/sem_decls.adb | 8 | ||||
-rw-r--r-- | src/vhdl/sem_expr.adb | 11 |
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; |