diff options
| -rw-r--r-- | src/vhdl/vhdl-nodes.ads | 3 | ||||
| -rw-r--r-- | src/vhdl/vhdl-nodes_meta.adb | 126 | ||||
| -rw-r--r-- | src/vhdl/vhdl-sem_assocs.adb | 3 | ||||
| -rw-r--r-- | src/vhdl/vhdl-sem_names.adb | 8 | 
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;  | 
