diff options
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; |