diff options
| author | Tristan Gingold <tgingold@free.fr> | 2020-01-12 10:11:56 +0100 | 
|---|---|---|
| committer | Tristan Gingold <tgingold@free.fr> | 2020-01-12 10:11:56 +0100 | 
| commit | 684e6311e46067d104650713c611a934f287ee5d (patch) | |
| tree | 5269bdc0639dad5f84eab6b4971215955337f427 /src | |
| parent | 7da5c8b0aeca0f824ac7af99dbcdb205d6e1f155 (diff) | |
| download | ghdl-684e6311e46067d104650713c611a934f287ee5d.tar.gz ghdl-684e6311e46067d104650713c611a934f287ee5d.tar.bz2 ghdl-684e6311e46067d104650713c611a934f287ee5d.zip | |
synth: handle constants in assignments.  Fix for #1080
Diffstat (limited to 'src')
| -rw-r--r-- | src/synth/synth-stmts.adb | 2 | ||||
| -rw-r--r-- | src/synth/synth-values.adb | 9 | ||||
| -rw-r--r-- | src/synth/synth-values.ads | 1 | 
3 files changed, 11 insertions, 1 deletions
| diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb index 964bc5d92..d5917eb42 100644 --- a/src/synth/synth-stmts.adb +++ b/src/synth/synth-stmts.adb @@ -479,7 +479,7 @@ package body Synth.Stmts is                      (+Loc, "cannot assign a net to a static value");                 else                    pragma Assert (Target.Off = 0); -                  Assign_Value (Target.Obj, Val, Loc); +                  Assign_Value (Target.Obj, Strip_Const (Val), Loc);                 end if;              end if;           when Target_Memory => diff --git a/src/synth/synth-values.adb b/src/synth/synth-values.adb index 7bbc562ac..9eb6c324c 100644 --- a/src/synth/synth-values.adb +++ b/src/synth/synth-values.adb @@ -707,6 +707,15 @@ package body Synth.Values is        end if;     end Strip_Const; +   function Strip_Const (Val : Value_Acc) return Value_Acc is +   begin +      if Val.Kind = Value_Const then +         return Val.C_Val; +      else +         return Val; +      end if; +   end Strip_Const; +     function Copy (Src : Value_Acc) return Value_Acc;     function Copy_Array (Arr : Value_Array_Acc) return Value_Array_Acc diff --git a/src/synth/synth-values.ads b/src/synth/synth-values.ads index 93f298720..a9a127ec8 100644 --- a/src/synth/synth-values.ads +++ b/src/synth/synth-values.ads @@ -334,6 +334,7 @@ package Synth.Values is     --  If VAL is a const, replace it by its value.     procedure Strip_Const (Val : in out Value_Acc); +   function Strip_Const (Val : Value_Acc) return Value_Acc;     function Unshare (Src : Value_Acc; Pool : Areapool_Acc)                      return Value_Acc; | 
