diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-07-03 07:30:34 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-07-03 07:30:34 +0200 |
commit | 7e46a516106dc02905e1c85e1d653c05fbe2292a (patch) | |
tree | 46d549881d7118e5edde53fb75640302cb12365b /src/vhdl/translate | |
parent | a11d847187413ad04a6d98c1e867ccb5e385abe5 (diff) | |
download | ghdl-7e46a516106dc02905e1c85e1d653c05fbe2292a.tar.gz ghdl-7e46a516106dc02905e1c85e1d653c05fbe2292a.tar.bz2 ghdl-7e46a516106dc02905e1c85e1d653c05fbe2292a.zip |
vhdl: add anonymous_signal_declaration.
Diffstat (limited to 'src/vhdl/translate')
-rw-r--r-- | src/vhdl/translate/trans-chap4.adb | 9 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap5.adb | 8 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap6.adb | 12 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap7.adb | 1 | ||||
-rw-r--r-- | src/vhdl/translate/trans-rtis.adb | 9 |
5 files changed, 28 insertions, 11 deletions
diff --git a/src/vhdl/translate/trans-chap4.adb b/src/vhdl/translate/trans-chap4.adb index 419229e66..13688263c 100644 --- a/src/vhdl/translate/trans-chap4.adb +++ b/src/vhdl/translate/trans-chap4.adb @@ -229,7 +229,8 @@ package body Trans.Chap4 is when Iir_Kind_Signal_Declaration | Iir_Kind_Interface_Signal_Declaration => Rtis.Generate_Signal_Rti (Decl); - when Iir_Kind_Guard_Signal_Declaration => + when Iir_Kind_Guard_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => -- No name created for guard signal. null; when others => @@ -1820,7 +1821,8 @@ package body Trans.Chap4 is | Iir_Kind_Constant_Declaration => Create_Object (Decl); - when Iir_Kind_Signal_Declaration => + when Iir_Kind_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => Create_Signal (Decl); when Iir_Kind_Object_Alias_Declaration => @@ -2584,7 +2586,8 @@ package body Trans.Chap4 is Need_Final := True; end if; - when Iir_Kind_Signal_Declaration => + when Iir_Kind_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => Elab_Signal_Declaration (Decl, Parent, False); when Iir_Kind_Object_Alias_Declaration => diff --git a/src/vhdl/translate/trans-chap5.adb b/src/vhdl/translate/trans-chap5.adb index 2aa7cfdea..3df3a7324 100644 --- a/src/vhdl/translate/trans-chap5.adb +++ b/src/vhdl/translate/trans-chap5.adb @@ -448,7 +448,13 @@ package body Trans.Chap5 is -- actual, but the type of the formal may be used by the actual. Set_Map_Env (Formal_Env); Chap6.Translate_Signal_Name (Formal, Formal_Sig, Formal_Val); - Actual_En := Chap7.Translate_Expression (Actual, Formal_Type); + if Get_Kind (Actual) = Iir_Kind_Reference_Name then + -- For vhdl08 association by expression. + Actual_En := Chap7.Translate_Expression + (Get_Referenced_Name (Actual), Formal_Type); + else + Actual_En := Chap7.Translate_Expression (Actual, Formal_Type); + end if; Actual_Sig := E2M (Actual_En, Get_Info (Formal_Type), Mode_Value); Mode := Connect_Value; -- raise Internal_Error; diff --git a/src/vhdl/translate/trans-chap6.adb b/src/vhdl/translate/trans-chap6.adb index a277d452b..eb757d9c7 100644 --- a/src/vhdl/translate/trans-chap6.adb +++ b/src/vhdl/translate/trans-chap6.adb @@ -1071,7 +1071,8 @@ package body Trans.Chap6 is | Iir_Kind_Quiet_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Transaction_Attribute - | Iir_Kind_Guard_Signal_Declaration => + | Iir_Kind_Guard_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => if Mode = Mode_Signal then return Get_Var (Name_Info.Signal_Sig, Type_Info, Mode_Signal); else @@ -1180,7 +1181,8 @@ package body Trans.Chap6 is | Iir_Kind_Delayed_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Guard_Signal_Declaration - | Iir_Kind_Object_Alias_Declaration => + | Iir_Kind_Object_Alias_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => Translate_Signal_Base (Name, Sig, Drv); when Iir_Kind_Slice_Name => declare @@ -1231,7 +1233,8 @@ package body Trans.Chap6 is begin case Get_Kind (Name) is when Iir_Kind_Signal_Declaration - | Iir_Kind_Interface_Signal_Declaration => + | Iir_Kind_Interface_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => declare Name_Type : constant Iir := Get_Type (Name); Name_Info : constant Ortho_Info_Acc := Get_Info (Name); @@ -1290,7 +1293,8 @@ package body Trans.Chap6 is | Iir_Kind_Quiet_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Transaction_Attribute - | Iir_Kind_Guard_Signal_Declaration => + | Iir_Kind_Guard_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => Sig := Get_Var (Name_Info.Signal_Sig, Type_Info, Mode_Signal); Val := Get_Var (Name_Info.Signal_Val, Type_Info, Mode_Value); when Iir_Kind_Interface_Signal_Declaration => diff --git a/src/vhdl/translate/trans-chap7.adb b/src/vhdl/translate/trans-chap7.adb index 3d670cf56..4d6f68fdc 100644 --- a/src/vhdl/translate/trans-chap7.adb +++ b/src/vhdl/translate/trans-chap7.adb @@ -4330,6 +4330,7 @@ package body Trans.Chap7 is | Iir_Kind_Delayed_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Guard_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Attribute_Value | Iir_Kind_Attribute_Name => Res := M2E (Chap6.Translate_Name (Expr, Mode_Value)); diff --git a/src/vhdl/translate/trans-rtis.adb b/src/vhdl/translate/trans-rtis.adb index 759a066cb..e59a12b92 100644 --- a/src/vhdl/translate/trans-rtis.adb +++ b/src/vhdl/translate/trans-rtis.adb @@ -1933,7 +1933,8 @@ package body Trans.Rtis is Start_Record_Aggr (List, Ghdl_Rtin_Object); Mode := 0; case Get_Kind (Decl) is - when Iir_Kind_Signal_Declaration => + when Iir_Kind_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => Comm := Ghdl_Rtik_Signal; Var := Info.Signal_Sig; when Iir_Kind_Interface_Signal_Declaration => @@ -2140,7 +2141,8 @@ package body Trans.Rtis is | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_File_Declaration - | Iir_Kind_Signal_Attribute_Declaration => + | Iir_Kind_Signal_Attribute_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => null; when Iir_Kind_Object_Alias_Declaration | Iir_Kind_Attribute_Declaration => @@ -2270,7 +2272,8 @@ package body Trans.Rtis is Add_Rti_Node (Info.Object_Rti); end; when Iir_Kind_Signal_Declaration - | Iir_Kind_Interface_Signal_Declaration => + | Iir_Kind_Interface_Signal_Declaration + | Iir_Kind_Anonymous_Signal_Declaration => declare Info : constant Signal_Info_Acc := Get_Info (Decl); begin |