diff options
author | Tristan Gingold <tgingold@free.fr> | 2020-04-18 07:26:36 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2020-04-18 07:26:36 +0200 |
commit | c261402a951b58e9560a69b9d9822285e7197506 (patch) | |
tree | 3604320687870a9d2863587133ef2df7142cedcb /src | |
parent | 1863bc905e09f84b954ccce6ac9f20ee02d107f2 (diff) | |
download | ghdl-c261402a951b58e9560a69b9d9822285e7197506.tar.gz ghdl-c261402a951b58e9560a69b9d9822285e7197506.tar.bz2 ghdl-c261402a951b58e9560a69b9d9822285e7197506.zip |
netlists-expands: fix handling of non-consective extractions. Fix #1241
Diffstat (limited to 'src')
-rw-r--r-- | src/synth/netlists-expands.adb | 6 | ||||
-rw-r--r-- | src/synth/synth-stmts.adb | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/synth/netlists-expands.adb b/src/synth/netlists-expands.adb index 09ff5d9c4..571b17620 100644 --- a/src/synth/netlists-expands.adb +++ b/src/synth/netlists-expands.adb @@ -89,14 +89,16 @@ package body Netlists.Expands is Els : Case_Element_Array_Acc; Idx : in out Positive; Addr : Net; - Off : in out Uns32; + Init_Off : Uns32; W : Width; Sel : in out Uns64) is Inst : constant Instance := Memidx_Arr (Arr_Idx); Step : constant Uns32 := Get_Param_Uns32 (Inst, 0); Max : constant Uns32 := Get_Param_Uns32 (Inst, 1); + Off : Uns32; begin + Off := Init_Off; for I in 0 .. Max loop if Arr_Idx < Memidx_Arr'Last then -- Recurse. @@ -107,8 +109,8 @@ package body Netlists.Expands is Val => Build_Extract (Ctxt, Val, Off, W)); Idx := Idx + 1; Sel := Sel + 1; - Off := Off + Step; end if; + Off := Off + Step; end loop; end Fill_Els; diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb index c1bf01919..b624afa28 100644 --- a/src/synth/synth-stmts.adb +++ b/src/synth/synth-stmts.adb @@ -135,6 +135,7 @@ package body Synth.Stmts is Dest_Off := (0, 0); Dest_Voff := No_Net; Dest_Rdwd := 0; + when Iir_Kind_Indexed_Name => declare Voff : Net; |