diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-10-20 11:50:14 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-10-20 11:50:14 +0200 |
commit | 56d1edff7fc40f745a47f6860bc2f9860d80052b (patch) | |
tree | 4741f3f3dd46f890c60878ab50147892f374bd34 /src/synth/synth-stmts.adb | |
parent | 663b68d2cc22967352aa43c8135a61c24d8d9503 (diff) | |
download | ghdl-56d1edff7fc40f745a47f6860bc2f9860d80052b.tar.gz ghdl-56d1edff7fc40f745a47f6860bc2f9860d80052b.tar.bz2 ghdl-56d1edff7fc40f745a47f6860bc2f9860d80052b.zip |
synth: add value_const.
Diffstat (limited to 'src/synth/synth-stmts.adb')
-rw-r--r-- | src/synth/synth-stmts.adb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb index 6ffb56fab..2cc37ce67 100644 --- a/src/synth/synth-stmts.adb +++ b/src/synth/synth-stmts.adb @@ -179,11 +179,14 @@ package body Synth.Stmts is Dest_Voff := Build_Addidx (Get_Build (Syn_Inst), Dest_Voff, Voff); end if; - elsif Dest_Obj.Kind = Value_Const_Array then - Dest_Obj := Dest_Obj.Arr.V - (Iir_Index32 ((Dest_W - Dest_Off) / W)); - Dest_Off := 0; - Dest_W := W; + else + Strip_Const (Dest_Obj); + if Dest_Obj.Kind = Value_Const_Array then + Dest_Obj := Dest_Obj.Arr.V + (Iir_Index32 ((Dest_W - Dest_Off) / W)); + Dest_Off := 0; + Dest_W := W; + end if; end if; end; @@ -195,6 +198,7 @@ package body Synth.Stmts is Synth_Assignment_Prefix (Syn_Inst, Get_Prefix (Pfx), Dest_Obj, Dest_Off, Dest_Voff, Dest_Rdwd, Dest_Type); + Strip_Const (Dest_Obj); Dest_Off := Dest_Off + Dest_Type.Rec.E (Idx + 1).Off; Dest_Type := Dest_Type.Rec.E (Idx + 1).Typ; end; |