aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-11-06 04:48:35 +0100
committerTristan Gingold <tgingold@free.fr>2019-11-06 04:48:35 +0100
commit5df1302fbed651ff0a9f7014f4ca8e23546237cd (patch)
tree23f90aa6ab9c09c8526efac803b22e00c8e264d7
parentc6edf7060590f9207bd82a649f2712d5ac50e427 (diff)
downloadghdl-5df1302fbed651ff0a9f7014f4ca8e23546237cd.tar.gz
ghdl-5df1302fbed651ff0a9f7014f4ca8e23546237cd.tar.bz2
ghdl-5df1302fbed651ff0a9f7014f4ca8e23546237cd.zip
synth: do not create a value_const of a value_const.
-rw-r--r--src/synth/synth-decls.adb6
-rw-r--r--src/synth/synth-values.adb1
2 files changed, 6 insertions, 1 deletions
diff --git a/src/synth/synth-decls.adb b/src/synth/synth-decls.adb
index f3ceb64a1..79708f878 100644
--- a/src/synth/synth-decls.adb
+++ b/src/synth/synth-decls.adb
@@ -440,7 +440,11 @@ package body Synth.Decls is
-- For constant functions, the value must be constant.
pragma Assert (not Get_Instance_Const (Syn_Inst)
or else Is_Const (Val));
- Cst := Create_Value_Const (Val, Decl);
+ if Val.Kind = Value_Const then
+ Cst := Val;
+ else
+ Cst := Create_Value_Const (Val, Decl);
+ end if;
Create_Object_Force (Syn_Inst, First_Decl, Cst);
end if;
end Synth_Constant_Declaration;
diff --git a/src/synth/synth-values.adb b/src/synth/synth-values.adb
index 8a9cbaa5b..58fc892ac 100644
--- a/src/synth/synth-values.adb
+++ b/src/synth/synth-values.adb
@@ -580,6 +580,7 @@ package body Synth.Values is
subtype Value_Type_Const is Value_Type (Value_Const);
function Alloc is new Areapools.Alloc_On_Pool_Addr (Value_Type_Const);
begin
+ pragma Assert (Val = null or else Val.Kind /= Value_Const);
return To_Value_Acc (Alloc (Current_Pool,
(Kind => Value_Const,
C_Val => Val,