aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2016-03-23 05:24:38 +0100
committerTristan Gingold <tgingold@free.fr>2016-03-23 05:24:38 +0100
commit646ab63baa6ada918f6e0f292748bb5e8482b8c3 (patch)
tree9dc26b4caa555a8ee10e2811b7852bf2f9072878 /src/vhdl
parent25faaa93e9b2585dd0e48b4fe365fa53474a3a3b (diff)
downloadghdl-646ab63baa6ada918f6e0f292748bb5e8482b8c3.tar.gz
ghdl-646ab63baa6ada918f6e0f292748bb5e8482b8c3.tar.bz2
ghdl-646ab63baa6ada918f6e0f292748bb5e8482b8c3.zip
Adjust previous patch (detect incorrect use of PSL endpoint in expressions)
Diffstat (limited to 'src/vhdl')
-rw-r--r--src/vhdl/iirs.ads2
-rw-r--r--src/vhdl/nodes_meta.adb330
-rw-r--r--src/vhdl/sem_names.adb6
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 =>