aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-10-18 07:36:30 +0200
committerTristan Gingold <tgingold@free.fr>2022-10-18 07:36:30 +0200
commit262219200fe35559e926e9123cf968ec62e2419d (patch)
tree1fe141461f9edfe34e5c93b1ee98edf617025e9f
parentbca0e23bccab46dedd0bcbf1d75f898b4c6a77b2 (diff)
downloadghdl-262219200fe35559e926e9123cf968ec62e2419d.tar.gz
ghdl-262219200fe35559e926e9123cf968ec62e2419d.tar.bz2
ghdl-262219200fe35559e926e9123cf968ec62e2419d.zip
vhdl-sem_assocs: handle association with external signal names.
Fix #2221
-rw-r--r--src/vhdl/vhdl-nodes.ads3
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb126
-rw-r--r--src/vhdl/vhdl-sem_assocs.adb3
-rw-r--r--src/vhdl/vhdl-sem_names.adb8
4 files changed, 77 insertions, 63 deletions
diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads
index fe74d7796..a82fc46c1 100644
--- a/src/vhdl/vhdl-nodes.ads
+++ b/src/vhdl/vhdl-nodes.ads
@@ -4499,6 +4499,9 @@ package Vhdl.Nodes is
-- Only for Iir_Kind_External_Variable_Name:
-- Get/Set_Shared_Flag (Flag2)
--
+ -- Only for Iir_Kind_External_Signal_Name:
+ -- Get/Set_Has_Active_Flag (Flag2)
+ --
-- Get/Set_Expr_Staticness (State1)
--
-- Get/Set_Name_Staticness (State2)
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index 9ddb1a3dd..20ed0a51f 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -4921,6 +4921,7 @@ package body Vhdl.Nodes_Meta is
Field_Subtype_Indication,
-- Iir_Kind_External_Signal_Name
Field_Is_Ref,
+ Field_Has_Active_Flag,
Field_Expr_Staticness,
Field_Name_Staticness,
Field_Parent,
@@ -5613,68 +5614,68 @@ package body Vhdl.Nodes_Meta is
Iir_Kind_Operator_Symbol => 2040,
Iir_Kind_Reference_Name => 2045,
Iir_Kind_External_Constant_Name => 2054,
- Iir_Kind_External_Signal_Name => 2063,
- Iir_Kind_External_Variable_Name => 2073,
- Iir_Kind_Selected_By_All_Name => 2079,
- Iir_Kind_Parenthesis_Name => 2084,
- Iir_Kind_Package_Pathname => 2088,
- Iir_Kind_Absolute_Pathname => 2089,
- Iir_Kind_Relative_Pathname => 2090,
- Iir_Kind_Pathname_Element => 2095,
- Iir_Kind_Base_Attribute => 2097,
- Iir_Kind_Subtype_Attribute => 2102,
- Iir_Kind_Element_Attribute => 2107,
- Iir_Kind_Across_Attribute => 2112,
- Iir_Kind_Through_Attribute => 2117,
- Iir_Kind_Nature_Reference_Attribute => 2121,
- Iir_Kind_Left_Type_Attribute => 2126,
- Iir_Kind_Right_Type_Attribute => 2131,
- Iir_Kind_High_Type_Attribute => 2136,
- Iir_Kind_Low_Type_Attribute => 2141,
- Iir_Kind_Ascending_Type_Attribute => 2146,
- Iir_Kind_Image_Attribute => 2152,
- Iir_Kind_Value_Attribute => 2158,
- Iir_Kind_Pos_Attribute => 2164,
- Iir_Kind_Val_Attribute => 2170,
- Iir_Kind_Succ_Attribute => 2176,
- Iir_Kind_Pred_Attribute => 2182,
- Iir_Kind_Leftof_Attribute => 2188,
- Iir_Kind_Rightof_Attribute => 2194,
- Iir_Kind_Signal_Slew_Attribute => 2202,
- Iir_Kind_Quantity_Slew_Attribute => 2210,
- Iir_Kind_Ramp_Attribute => 2218,
- Iir_Kind_Zoh_Attribute => 2226,
- Iir_Kind_Ltf_Attribute => 2234,
- Iir_Kind_Ztf_Attribute => 2244,
- Iir_Kind_Dot_Attribute => 2251,
- Iir_Kind_Integ_Attribute => 2258,
- Iir_Kind_Quantity_Delayed_Attribute => 2266,
- Iir_Kind_Above_Attribute => 2274,
- Iir_Kind_Delayed_Attribute => 2283,
- Iir_Kind_Stable_Attribute => 2292,
- Iir_Kind_Quiet_Attribute => 2301,
- Iir_Kind_Transaction_Attribute => 2310,
- Iir_Kind_Event_Attribute => 2314,
- Iir_Kind_Active_Attribute => 2318,
- Iir_Kind_Last_Event_Attribute => 2322,
- Iir_Kind_Last_Active_Attribute => 2326,
- Iir_Kind_Last_Value_Attribute => 2330,
- Iir_Kind_Driving_Attribute => 2334,
- Iir_Kind_Driving_Value_Attribute => 2338,
- Iir_Kind_Behavior_Attribute => 2338,
- Iir_Kind_Structure_Attribute => 2338,
- Iir_Kind_Simple_Name_Attribute => 2345,
- Iir_Kind_Instance_Name_Attribute => 2350,
- Iir_Kind_Path_Name_Attribute => 2355,
- Iir_Kind_Left_Array_Attribute => 2362,
- Iir_Kind_Right_Array_Attribute => 2369,
- Iir_Kind_High_Array_Attribute => 2376,
- Iir_Kind_Low_Array_Attribute => 2383,
- Iir_Kind_Length_Array_Attribute => 2390,
- Iir_Kind_Ascending_Array_Attribute => 2397,
- Iir_Kind_Range_Array_Attribute => 2404,
- Iir_Kind_Reverse_Range_Array_Attribute => 2411,
- Iir_Kind_Attribute_Name => 2420
+ Iir_Kind_External_Signal_Name => 2064,
+ Iir_Kind_External_Variable_Name => 2074,
+ Iir_Kind_Selected_By_All_Name => 2080,
+ Iir_Kind_Parenthesis_Name => 2085,
+ Iir_Kind_Package_Pathname => 2089,
+ Iir_Kind_Absolute_Pathname => 2090,
+ Iir_Kind_Relative_Pathname => 2091,
+ Iir_Kind_Pathname_Element => 2096,
+ Iir_Kind_Base_Attribute => 2098,
+ Iir_Kind_Subtype_Attribute => 2103,
+ Iir_Kind_Element_Attribute => 2108,
+ Iir_Kind_Across_Attribute => 2113,
+ Iir_Kind_Through_Attribute => 2118,
+ Iir_Kind_Nature_Reference_Attribute => 2122,
+ Iir_Kind_Left_Type_Attribute => 2127,
+ Iir_Kind_Right_Type_Attribute => 2132,
+ Iir_Kind_High_Type_Attribute => 2137,
+ Iir_Kind_Low_Type_Attribute => 2142,
+ Iir_Kind_Ascending_Type_Attribute => 2147,
+ Iir_Kind_Image_Attribute => 2153,
+ Iir_Kind_Value_Attribute => 2159,
+ Iir_Kind_Pos_Attribute => 2165,
+ Iir_Kind_Val_Attribute => 2171,
+ Iir_Kind_Succ_Attribute => 2177,
+ Iir_Kind_Pred_Attribute => 2183,
+ Iir_Kind_Leftof_Attribute => 2189,
+ Iir_Kind_Rightof_Attribute => 2195,
+ Iir_Kind_Signal_Slew_Attribute => 2203,
+ Iir_Kind_Quantity_Slew_Attribute => 2211,
+ Iir_Kind_Ramp_Attribute => 2219,
+ Iir_Kind_Zoh_Attribute => 2227,
+ Iir_Kind_Ltf_Attribute => 2235,
+ Iir_Kind_Ztf_Attribute => 2245,
+ Iir_Kind_Dot_Attribute => 2252,
+ Iir_Kind_Integ_Attribute => 2259,
+ Iir_Kind_Quantity_Delayed_Attribute => 2267,
+ Iir_Kind_Above_Attribute => 2275,
+ Iir_Kind_Delayed_Attribute => 2284,
+ Iir_Kind_Stable_Attribute => 2293,
+ Iir_Kind_Quiet_Attribute => 2302,
+ Iir_Kind_Transaction_Attribute => 2311,
+ Iir_Kind_Event_Attribute => 2315,
+ Iir_Kind_Active_Attribute => 2319,
+ Iir_Kind_Last_Event_Attribute => 2323,
+ Iir_Kind_Last_Active_Attribute => 2327,
+ Iir_Kind_Last_Value_Attribute => 2331,
+ Iir_Kind_Driving_Attribute => 2335,
+ Iir_Kind_Driving_Value_Attribute => 2339,
+ Iir_Kind_Behavior_Attribute => 2339,
+ Iir_Kind_Structure_Attribute => 2339,
+ Iir_Kind_Simple_Name_Attribute => 2346,
+ Iir_Kind_Instance_Name_Attribute => 2351,
+ Iir_Kind_Path_Name_Attribute => 2356,
+ Iir_Kind_Left_Array_Attribute => 2363,
+ Iir_Kind_Right_Array_Attribute => 2370,
+ Iir_Kind_High_Array_Attribute => 2377,
+ Iir_Kind_Low_Array_Attribute => 2384,
+ Iir_Kind_Length_Array_Attribute => 2391,
+ Iir_Kind_Ascending_Array_Attribute => 2398,
+ Iir_Kind_Range_Array_Attribute => 2405,
+ Iir_Kind_Reverse_Range_Array_Attribute => 2412,
+ Iir_Kind_Attribute_Name => 2421
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -12281,6 +12282,7 @@ package body Vhdl.Nodes_Meta is
when Iir_Kind_Guard_Signal_Declaration
| Iir_Kind_Signal_Declaration
| Iir_Kind_Interface_Signal_Declaration
+ | Iir_Kind_External_Signal_Name
| Iir_Kind_Delayed_Attribute
| Iir_Kind_Stable_Attribute
| Iir_Kind_Quiet_Attribute
diff --git a/src/vhdl/vhdl-sem_assocs.adb b/src/vhdl/vhdl-sem_assocs.adb
index b9d41eeaa..3bf51c400 100644
--- a/src/vhdl/vhdl-sem_assocs.adb
+++ b/src/vhdl/vhdl-sem_assocs.adb
@@ -268,7 +268,8 @@ package body Vhdl.Sem_Assocs is
when Iir_Kind_Interface_Signal_Declaration
| Iir_Kind_Signal_Declaration
| Iir_Kind_Guard_Signal_Declaration
- | Iir_Kinds_Signal_Attribute =>
+ | Iir_Kinds_Signal_Attribute
+ | Iir_Kind_External_Signal_Name =>
-- LRM93 2.1.1.2
-- If an actual signal is associated with
-- a signal parameter of any mode, the actual
diff --git a/src/vhdl/vhdl-sem_names.adb b/src/vhdl/vhdl-sem_names.adb
index 0a6b58921..1a3654f42 100644
--- a/src/vhdl/vhdl-sem_names.adb
+++ b/src/vhdl/vhdl-sem_names.adb
@@ -5079,6 +5079,14 @@ package body Vhdl.Sem_Names is
Set_Expr_Staticness (Name, None);
+ case Iir_Kinds_External_Name (Get_Kind (Name)) is
+ when Iir_Kind_External_Signal_Name =>
+ -- By default.
+ Set_Has_Active_Flag (Name, True);
+ when others =>
+ null;
+ end case;
+
-- Consider the node as analyzed.
Set_Named_Entity (Name, Name);
end Sem_External_Name;