diff options
author | Tristan Gingold <tgingold@free.fr> | 2016-03-23 05:24:38 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2016-03-23 05:24:38 +0100 |
commit | 646ab63baa6ada918f6e0f292748bb5e8482b8c3 (patch) | |
tree | 9dc26b4caa555a8ee10e2811b7852bf2f9072878 | |
parent | 25faaa93e9b2585dd0e48b4fe365fa53474a3a3b (diff) | |
download | ghdl-646ab63baa6ada918f6e0f292748bb5e8482b8c3.tar.gz ghdl-646ab63baa6ada918f6e0f292748bb5e8482b8c3.tar.bz2 ghdl-646ab63baa6ada918f6e0f292748bb5e8482b8c3.zip |
Adjust previous patch (detect incorrect use of PSL endpoint in expressions)
-rw-r--r-- | src/vhdl/iirs.ads | 2 | ||||
-rw-r--r-- | src/vhdl/nodes_meta.adb | 330 | ||||
-rw-r--r-- | src/vhdl/sem_names.adb | 6 |
3 files changed, 171 insertions, 167 deletions
diff --git a/src/vhdl/iirs.ads b/src/vhdl/iirs.ads index 08b37b200..4f954a1eb 100644 --- a/src/vhdl/iirs.ads +++ b/src/vhdl/iirs.ads @@ -1671,6 +1671,8 @@ package Iirs is -- Get/Set_Use_Flag (Flag6) -- -- Get/Set_Expr_Staticness (State1) + -- + -- Get/Set_Name_Staticness (State2) -- Iir_Kind_Psl_Declaration (Medium) -- A psl sequence or property declaration. diff --git a/src/vhdl/nodes_meta.adb b/src/vhdl/nodes_meta.adb index 6e0de124a..c97e24ca4 100644 --- a/src/vhdl/nodes_meta.adb +++ b/src/vhdl/nodes_meta.adb @@ -2743,6 +2743,7 @@ package body Nodes_Meta is Field_Visible_Flag, Field_Use_Flag, Field_Expr_Staticness, + Field_Name_Staticness, Field_PSL_Clock_Sensitivity, Field_Chain, Field_Parent, @@ -4155,170 +4156,170 @@ package body Nodes_Meta is Iir_Kind_Element_Declaration => 559, Iir_Kind_Non_Object_Alias_Declaration => 567, Iir_Kind_Psl_Declaration => 575, - Iir_Kind_Psl_Endpoint_Declaration => 588, - Iir_Kind_Terminal_Declaration => 594, - Iir_Kind_Free_Quantity_Declaration => 603, - Iir_Kind_Across_Quantity_Declaration => 615, - Iir_Kind_Through_Quantity_Declaration => 627, - Iir_Kind_Enumeration_Literal => 638, - Iir_Kind_Function_Declaration => 662, - Iir_Kind_Procedure_Declaration => 685, - Iir_Kind_Function_Body => 695, - Iir_Kind_Procedure_Body => 706, - Iir_Kind_Object_Alias_Declaration => 718, - Iir_Kind_File_Declaration => 733, - Iir_Kind_Guard_Signal_Declaration => 746, - Iir_Kind_Signal_Declaration => 763, - Iir_Kind_Variable_Declaration => 776, - Iir_Kind_Constant_Declaration => 790, - Iir_Kind_Iterator_Declaration => 802, - Iir_Kind_Interface_Constant_Declaration => 818, - Iir_Kind_Interface_Variable_Declaration => 834, - Iir_Kind_Interface_Signal_Declaration => 855, - Iir_Kind_Interface_File_Declaration => 871, - Iir_Kind_Interface_Package_Declaration => 880, - Iir_Kind_Identity_Operator => 884, - Iir_Kind_Negation_Operator => 888, - Iir_Kind_Absolute_Operator => 892, - Iir_Kind_Not_Operator => 896, - Iir_Kind_Condition_Operator => 900, - Iir_Kind_Reduction_And_Operator => 904, - Iir_Kind_Reduction_Or_Operator => 908, - Iir_Kind_Reduction_Nand_Operator => 912, - Iir_Kind_Reduction_Nor_Operator => 916, - Iir_Kind_Reduction_Xor_Operator => 920, - Iir_Kind_Reduction_Xnor_Operator => 924, - Iir_Kind_And_Operator => 929, - Iir_Kind_Or_Operator => 934, - Iir_Kind_Nand_Operator => 939, - Iir_Kind_Nor_Operator => 944, - Iir_Kind_Xor_Operator => 949, - Iir_Kind_Xnor_Operator => 954, - Iir_Kind_Equality_Operator => 959, - Iir_Kind_Inequality_Operator => 964, - Iir_Kind_Less_Than_Operator => 969, - Iir_Kind_Less_Than_Or_Equal_Operator => 974, - Iir_Kind_Greater_Than_Operator => 979, - Iir_Kind_Greater_Than_Or_Equal_Operator => 984, - Iir_Kind_Match_Equality_Operator => 989, - Iir_Kind_Match_Inequality_Operator => 994, - Iir_Kind_Match_Less_Than_Operator => 999, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1004, - Iir_Kind_Match_Greater_Than_Operator => 1009, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1014, - Iir_Kind_Sll_Operator => 1019, - Iir_Kind_Sla_Operator => 1024, - Iir_Kind_Srl_Operator => 1029, - Iir_Kind_Sra_Operator => 1034, - Iir_Kind_Rol_Operator => 1039, - Iir_Kind_Ror_Operator => 1044, - Iir_Kind_Addition_Operator => 1049, - Iir_Kind_Substraction_Operator => 1054, - Iir_Kind_Concatenation_Operator => 1059, - Iir_Kind_Multiplication_Operator => 1064, - Iir_Kind_Division_Operator => 1069, - Iir_Kind_Modulus_Operator => 1074, - Iir_Kind_Remainder_Operator => 1079, - Iir_Kind_Exponentiation_Operator => 1084, - Iir_Kind_Function_Call => 1092, - Iir_Kind_Aggregate => 1098, - Iir_Kind_Parenthesis_Expression => 1101, - Iir_Kind_Qualified_Expression => 1105, - Iir_Kind_Type_Conversion => 1110, - Iir_Kind_Allocator_By_Expression => 1114, - Iir_Kind_Allocator_By_Subtype => 1120, - Iir_Kind_Selected_Element => 1126, - Iir_Kind_Dereference => 1131, - Iir_Kind_Implicit_Dereference => 1136, - Iir_Kind_Slice_Name => 1143, - Iir_Kind_Indexed_Name => 1149, - Iir_Kind_Psl_Expression => 1151, - Iir_Kind_Sensitized_Process_Statement => 1171, - Iir_Kind_Process_Statement => 1191, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1202, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1213, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1225, - Iir_Kind_Concurrent_Assertion_Statement => 1233, - Iir_Kind_Psl_Default_Clock => 1237, - Iir_Kind_Psl_Assert_Statement => 1249, - Iir_Kind_Psl_Cover_Statement => 1261, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1268, - Iir_Kind_Block_Statement => 1281, - Iir_Kind_If_Generate_Statement => 1291, - Iir_Kind_For_Generate_Statement => 1300, - Iir_Kind_Component_Instantiation_Statement => 1310, - Iir_Kind_Simple_Simultaneous_Statement => 1317, - Iir_Kind_Generate_Statement_Body => 1328, - Iir_Kind_If_Generate_Else_Clause => 1333, - Iir_Kind_Simple_Signal_Assignment_Statement => 1342, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1351, - Iir_Kind_Null_Statement => 1355, - Iir_Kind_Assertion_Statement => 1362, - Iir_Kind_Report_Statement => 1368, - Iir_Kind_Wait_Statement => 1375, - Iir_Kind_Variable_Assignment_Statement => 1381, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1387, - Iir_Kind_Return_Statement => 1393, - Iir_Kind_For_Loop_Statement => 1402, - Iir_Kind_While_Loop_Statement => 1410, - Iir_Kind_Next_Statement => 1416, - Iir_Kind_Exit_Statement => 1422, - Iir_Kind_Case_Statement => 1430, - Iir_Kind_Procedure_Call_Statement => 1436, - Iir_Kind_If_Statement => 1445, - Iir_Kind_Elsif => 1450, - Iir_Kind_Character_Literal => 1457, - Iir_Kind_Simple_Name => 1464, - Iir_Kind_Selected_Name => 1472, - Iir_Kind_Operator_Symbol => 1477, - Iir_Kind_Selected_By_All_Name => 1482, - Iir_Kind_Parenthesis_Name => 1486, - Iir_Kind_External_Constant_Name => 1495, - Iir_Kind_External_Signal_Name => 1504, - Iir_Kind_External_Variable_Name => 1513, - Iir_Kind_Package_Pathname => 1516, - Iir_Kind_Absolute_Pathname => 1517, - Iir_Kind_Relative_Pathname => 1518, - Iir_Kind_Pathname_Element => 1522, - Iir_Kind_Base_Attribute => 1524, - Iir_Kind_Left_Type_Attribute => 1529, - Iir_Kind_Right_Type_Attribute => 1534, - Iir_Kind_High_Type_Attribute => 1539, - Iir_Kind_Low_Type_Attribute => 1544, - Iir_Kind_Ascending_Type_Attribute => 1549, - Iir_Kind_Image_Attribute => 1555, - Iir_Kind_Value_Attribute => 1561, - Iir_Kind_Pos_Attribute => 1567, - Iir_Kind_Val_Attribute => 1573, - Iir_Kind_Succ_Attribute => 1579, - Iir_Kind_Pred_Attribute => 1585, - Iir_Kind_Leftof_Attribute => 1591, - Iir_Kind_Rightof_Attribute => 1597, - Iir_Kind_Delayed_Attribute => 1605, - Iir_Kind_Stable_Attribute => 1613, - Iir_Kind_Quiet_Attribute => 1621, - Iir_Kind_Transaction_Attribute => 1629, - Iir_Kind_Event_Attribute => 1633, - Iir_Kind_Active_Attribute => 1637, - Iir_Kind_Last_Event_Attribute => 1641, - Iir_Kind_Last_Active_Attribute => 1645, - Iir_Kind_Last_Value_Attribute => 1649, - Iir_Kind_Driving_Attribute => 1653, - Iir_Kind_Driving_Value_Attribute => 1657, - Iir_Kind_Behavior_Attribute => 1657, - Iir_Kind_Structure_Attribute => 1657, - Iir_Kind_Simple_Name_Attribute => 1664, - Iir_Kind_Instance_Name_Attribute => 1669, - Iir_Kind_Path_Name_Attribute => 1674, - Iir_Kind_Left_Array_Attribute => 1681, - Iir_Kind_Right_Array_Attribute => 1688, - Iir_Kind_High_Array_Attribute => 1695, - Iir_Kind_Low_Array_Attribute => 1702, - Iir_Kind_Length_Array_Attribute => 1709, - Iir_Kind_Ascending_Array_Attribute => 1716, - Iir_Kind_Range_Array_Attribute => 1723, - Iir_Kind_Reverse_Range_Array_Attribute => 1730, - Iir_Kind_Attribute_Name => 1738 + Iir_Kind_Psl_Endpoint_Declaration => 589, + Iir_Kind_Terminal_Declaration => 595, + Iir_Kind_Free_Quantity_Declaration => 604, + Iir_Kind_Across_Quantity_Declaration => 616, + Iir_Kind_Through_Quantity_Declaration => 628, + Iir_Kind_Enumeration_Literal => 639, + 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 @@ -8991,6 +8992,7 @@ package body Nodes_Meta is case K is when Iir_Kind_Attribute_Value | Iir_Kind_Unit_Declaration + | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration diff --git a/src/vhdl/sem_names.adb b/src/vhdl/sem_names.adb index a4a6b44ca..0dc768059 100644 --- a/src/vhdl/sem_names.adb +++ b/src/vhdl/sem_names.adb @@ -1488,7 +1488,8 @@ package body Sem_Names is when Iir_Kinds_Object_Declaration | Iir_Kinds_Quantity_Declaration | Iir_Kind_Enumeration_Literal - | Iir_Kind_Unit_Declaration => + | Iir_Kind_Unit_Declaration + | Iir_Kind_Psl_Endpoint_Declaration => Name_Res := Finish_Sem_Denoting_Name (Name, Res); Set_Base_Name (Name_Res, Res); Set_Name_Staticness (Name_Res, Get_Name_Staticness (Res)); @@ -1598,8 +1599,7 @@ package body Sem_Names is return Res; when Iir_Kind_Psl_Expression => return Res; - when Iir_Kind_Psl_Declaration - | Iir_Kind_Psl_Endpoint_Declaration => + when Iir_Kind_Psl_Declaration => return Name; when Iir_Kind_Element_Declaration | Iir_Kind_Error => |