diff options
author | Tristan Gingold <tgingold@free.fr> | 2022-09-15 03:13:52 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2022-09-15 03:13:52 +0200 |
commit | 26353d25ad3eead54a5143df0f0298f142911670 (patch) | |
tree | c43c9ed800f4cd6552f36a373c0a037cb8364daf /src | |
parent | 8ada97528f410837465f61128fadda39d2c854ee (diff) | |
download | ghdl-26353d25ad3eead54a5143df0f0298f142911670.tar.gz ghdl-26353d25ad3eead54a5143df0f0298f142911670.tar.bz2 ghdl-26353d25ad3eead54a5143df0f0298f142911670.zip |
synth: handle vhdl-87 files
Diffstat (limited to 'src')
-rw-r--r-- | src/synth/synth-vhdl_stmts.adb | 6 | ||||
-rw-r--r-- | src/vhdl/vhdl-utils.adb | 10 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/synth/synth-vhdl_stmts.adb b/src/synth/synth-vhdl_stmts.adb index ad7382da9..45de83118 100644 --- a/src/synth/synth-vhdl_stmts.adb +++ b/src/synth/synth-vhdl_stmts.adb @@ -1967,6 +1967,12 @@ package body Synth.Vhdl_Stmts is Copy_Memory (Val.Val.Mem, Info.Obj.Val.Mem + Info.Off.Mem_Off, Info.Targ_Type.Sz); + elsif Info.Kind = Target_Simple + and then Info.Obj.Val.Kind = Value_File + then + -- For vhdl-87 + Val := Create_Value_File + (Info.Targ_Type, Info.Obj.Val.File, Instance_Pool); else Val := Synth_Read (Caller_Inst, Info, Assoc); Val := Unshare (Val, Instance_Pool); diff --git a/src/vhdl/vhdl-utils.adb b/src/vhdl/vhdl-utils.adb index 6f362073d..05c1dc0ee 100644 --- a/src/vhdl/vhdl-utils.adb +++ b/src/vhdl/vhdl-utils.adb @@ -681,8 +681,14 @@ package body Vhdl.Utils is function Is_Copyback_Parameter (Inter : Iir) return Boolean is begin - return Get_Kind (Inter) = Iir_Kind_Interface_Variable_Declaration - and then Get_Mode (Inter) in Iir_Out_Mode .. Iir_Inout_Mode; + if Get_Kind (Inter) = Iir_Kind_Interface_Variable_Declaration + and then Get_Mode (Inter) in Iir_Out_Mode .. Iir_Inout_Mode + then + -- For Vhdl-87, files are not copyback. + return Get_Kind (Get_Type (Inter)) /= Iir_Kind_File_Type_Definition; + else + return False; + end if; end Is_Copyback_Parameter; function Find_Name_In_Flist (List : Iir_Flist; Lit : Name_Id) return Iir |