aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ortho/debug/ortho_debug-disp.adb2
-rw-r--r--src/ortho/debug/ortho_debug.adb54
-rw-r--r--src/ortho/debug/ortho_debug.private.ads15
-rw-r--r--src/ortho/gcc/ortho-lang.c10
-rw-r--r--src/ortho/gcc/ortho_gcc.ads10
-rw-r--r--src/ortho/gcc/ortho_gcc.private.ads4
-rw-r--r--src/ortho/llvm/ortho_llvm.adb14
-rw-r--r--src/ortho/llvm/ortho_llvm.ads6
-rw-r--r--src/ortho/mcode/ortho_code-decls.adb18
-rw-r--r--src/ortho/mcode/ortho_code-decls.ads4
-rw-r--r--src/ortho/mcode/ortho_mcode.adb14
-rw-r--r--src/ortho/mcode/ortho_mcode.ads14
-rw-r--r--src/ortho/mcode/ortho_mcode.private.ads4
-rw-r--r--src/ortho/oread/ortho_front.adb8
-rw-r--r--src/ortho/ortho_nodes.common.ads6
-rw-r--r--src/vhdl/translate/trans-chap1.adb4
-rw-r--r--src/vhdl/translate/trans-chap12.adb8
-rw-r--r--src/vhdl/translate/trans-chap14.adb4
-rw-r--r--src/vhdl/translate/trans-chap4.adb4
-rw-r--r--src/vhdl/translate/trans-chap8.adb8
-rw-r--r--src/vhdl/translate/trans-helpers2.adb4
-rw-r--r--src/vhdl/translate/trans-rtis.adb88
-rw-r--r--src/vhdl/translate/trans.adb8
23 files changed, 153 insertions, 158 deletions
diff --git a/src/ortho/debug/ortho_debug-disp.adb b/src/ortho/debug/ortho_debug-disp.adb
index bcca8dbd1..145a4c5e9 100644
--- a/src/ortho/debug/ortho_debug-disp.adb
+++ b/src/ortho/debug/ortho_debug-disp.adb
@@ -885,7 +885,7 @@ package body Ortho_Debug.Disp is
Put (" : ");
Disp_Tnode_Name (Decl.Dtype);
Put_Line (";");
- when ON_Const_Value =>
+ when ON_Init_Value =>
Put_Keyword ("constant");
Put (" ");
Disp_Ident (Decl.Name);
diff --git a/src/ortho/debug/ortho_debug.adb b/src/ortho/debug/ortho_debug.adb
index 00bfcbc5c..218fd9671 100644
--- a/src/ortho/debug/ortho_debug.adb
+++ b/src/ortho/debug/ortho_debug.adb
@@ -1265,58 +1265,57 @@ package body Ortho_Debug is
Storage => Storage,
Scope => Current_Decl_Scope.Parent,
Lineno => 0,
- Const_Value => O_Dnode_Null);
+ Value_Decl => O_Dnode_Null);
Add_Decl (Res);
end New_Const_Decl;
- procedure Start_Const_Value (Const : in out O_Dnode)
+ procedure Start_Init_Value (Decl : in out O_Dnode)
is
- subtype O_Dnode_Const_Value is O_Dnode_Type (ON_Const_Value);
+ subtype O_Dnode_Init_Value is O_Dnode_Type (ON_Init_Value);
N : O_Dnode;
begin
- if Const.Const_Value /= O_Dnode_Null then
+ if Decl.Value_Decl /= O_Dnode_Null then
-- Constant already has a value.
raise Syntax_Error;
end if;
- if Const.Storage = O_Storage_External then
- -- An external constant must not have a value.
+ if Decl.Storage = O_Storage_External then
+ -- An external variable/constant cannot have a value.
raise Syntax_Error;
end if;
-- FIXME: check scope is the same.
- N := new O_Dnode_Const_Value'(Kind => ON_Const_Value,
- Name => Const.Name,
- Next => null,
- Dtype => Const.Dtype,
- Storage => Const.Storage,
- Scope => Current_Decl_Scope.Parent,
- Lineno => 0,
- Const_Decl => Const,
- Value => O_Cnode_Null);
- Const.Const_Value := N;
+ N := new O_Dnode_Init_Value'(Kind => ON_Init_Value,
+ Name => Decl.Name,
+ Next => null,
+ Dtype => Decl.Dtype,
+ Storage => Decl.Storage,
+ Scope => Current_Decl_Scope.Parent,
+ Lineno => 0,
+ Init_Decl => Decl,
+ Value => O_Cnode_Null);
+ Decl.Value_Decl := N;
Add_Decl (N, False);
- end Start_Const_Value;
+ end Start_Init_Value;
- procedure Finish_Const_Value (Const : in out O_Dnode; Val : O_Cnode)
- is
+ procedure Finish_Init_Value (Decl : in out O_Dnode; Val : O_Cnode) is
begin
- if Const.Const_Value = O_Dnode_Null then
- -- Start_Const_Value not called.
+ if Decl.Value_Decl = O_Dnode_Null then
+ -- Start_Init_Value not called.
raise Syntax_Error;
end if;
- if Const.Const_Value.Value /= O_Cnode_Null then
- -- Finish_Const_Value already called.
+ if Decl.Value_Decl.Value /= O_Cnode_Null then
+ -- Finish_Init_Value already called.
raise Syntax_Error;
end if;
if Val = O_Cnode_Null then
-- No value or bad type.
raise Type_Error;
end if;
- Check_Type (Val.Ctype, Const.Dtype);
- Const.Const_Value.Value := Val;
- end Finish_Const_Value;
+ Check_Type (Val.Ctype, Decl.Dtype);
+ Decl.Value_Decl.Value := Val;
+ end Finish_Init_Value;
procedure New_Var_Decl
(Res : out O_Dnode;
@@ -1334,7 +1333,8 @@ package body Ortho_Debug is
Dtype => Atype,
Storage => Storage,
Lineno => 0,
- Scope => Current_Decl_Scope.Parent);
+ Scope => Current_Decl_Scope.Parent,
+ Value_Decl => O_Dnode_Null);
Add_Decl (Res);
end New_Var_Decl;
diff --git a/src/ortho/debug/ortho_debug.private.ads b/src/ortho/debug/ortho_debug.private.ads
index 2a733526c..7a050321a 100644
--- a/src/ortho/debug/ortho_debug.private.ads
+++ b/src/ortho/debug/ortho_debug.private.ads
@@ -48,7 +48,7 @@ private
(ON_Type_Decl, ON_Completed_Type_Decl,
ON_Const_Decl, ON_Var_Decl, ON_Interface_Decl,
ON_Function_Decl, ON_Function_Body,
- ON_Const_Value,
+ ON_Init_Value,
ON_Debug_Line_Decl, ON_Debug_Comment_Decl, ON_Debug_Filename_Decl);
type O_Dnode_Type (<>);
@@ -70,13 +70,14 @@ private
null;
when ON_Completed_Type_Decl =>
null;
- when ON_Const_Decl =>
- Const_Value : O_Dnode;
- when ON_Const_Value =>
- Const_Decl : O_Dnode;
+ when ON_Const_Decl
+ | ON_Var_Decl =>
+ -- Corresponding declaration for initial value (if any).
+ Value_Decl : O_Dnode;
+ when ON_Init_Value =>
+ -- Corresponding declaration of the object.
+ Init_Decl : O_Dnode;
Value : O_Cnode;
- when ON_Var_Decl =>
- null;
when ON_Function_Decl =>
Interfaces : O_Dnode;
Func_Body : O_Dnode;
diff --git a/src/ortho/gcc/ortho-lang.c b/src/ortho/gcc/ortho-lang.c
index 0c38fbfce..b4fdbe388 100644
--- a/src/ortho/gcc/ortho-lang.c
+++ b/src/ortho/gcc/ortho-lang.c
@@ -1623,17 +1623,17 @@ new_const_decl (tree *res, tree ident, enum o_storage storage, tree atype)
}
void
-start_const_value (tree *cst ATTRIBUTE_UNUSED)
+start_init_value (tree *decl ATTRIBUTE_UNUSED)
{
}
void
-finish_const_value (tree *cst, tree val)
+finish_init_value (tree *decl, tree val)
{
- DECL_INITIAL (*cst) = val;
+ DECL_INITIAL (*decl) = val;
TREE_CONSTANT (val) = 1;
- TREE_STATIC (*cst) = 1;
- rest_of_decl_compilation (*cst, current_function_decl == NULL_TREE, 0);
+ TREE_STATIC (*decl) = 1;
+ rest_of_decl_compilation (*decl, current_function_decl == NULL_TREE, 0);
}
void
diff --git a/src/ortho/gcc/ortho_gcc.ads b/src/ortho/gcc/ortho_gcc.ads
index 6f43be4cb..ab7e0e3d0 100644
--- a/src/ortho/gcc/ortho_gcc.ads
+++ b/src/ortho/gcc/ortho_gcc.ads
@@ -350,9 +350,9 @@ package Ortho_Gcc is
Storage : O_Storage;
Atype : O_Tnode);
- -- Set the value of a non-external constant.
- procedure Start_Const_Value (Const : in out O_Dnode);
- procedure Finish_Const_Value (Const : in out O_Dnode; Val : O_Cnode);
+ -- Set the value of a non-external constant or variable.
+ procedure Start_Init_Value (Decl : in out O_Dnode);
+ procedure Finish_Init_Value (Decl : in out O_Dnode; Val : O_Cnode);
-- Create a variable declaration.
-- A variable can be local only inside a function.
@@ -657,8 +657,8 @@ private
pragma Import (C, New_Const_Decl);
pragma Import (C, New_Var_Decl);
- pragma Import (C, Start_Const_Value);
- pragma Import (C, Finish_Const_Value);
+ pragma Import (C, Start_Init_Value);
+ pragma Import (C, Finish_Init_Value);
pragma Import (C, Start_Function_Decl);
pragma Import (C, Start_Procedure_Decl);
diff --git a/src/ortho/gcc/ortho_gcc.private.ads b/src/ortho/gcc/ortho_gcc.private.ads
index 7eacdf48e..615c8aa13 100644
--- a/src/ortho/gcc/ortho_gcc.private.ads
+++ b/src/ortho/gcc/ortho_gcc.private.ads
@@ -225,8 +225,8 @@ private
pragma Import (C, New_Const_Decl);
pragma Import (C, New_Var_Decl);
- pragma Import (C, Start_Const_Value);
- pragma Import (C, Finish_Const_Value);
+ pragma Import (C, Start_Init_Value);
+ pragma Import (C, Finish_Init_Value);
pragma Import (C, Start_Function_Decl);
pragma Import (C, Start_Procedure_Decl);
diff --git a/src/ortho/llvm/ortho_llvm.adb b/src/ortho/llvm/ortho_llvm.adb
index f6e3dbefc..8106f9d7d 100644
--- a/src/ortho/llvm/ortho_llvm.adb
+++ b/src/ortho/llvm/ortho_llvm.adb
@@ -2021,22 +2021,22 @@ package body Ortho_LLVM is
end New_Const_Decl;
-----------------------
- -- Start_Const_Value --
+ -- Start_Init_Value --
-----------------------
- procedure Start_Const_Value (Const : in out O_Dnode) is
+ procedure Start_Init_Value (Decl : in out O_Dnode) is
begin
null;
- end Start_Const_Value;
+ end Start_Init_Value;
------------------------
- -- Finish_Const_Value --
+ -- Finish_Init_Value --
------------------------
- procedure Finish_Const_Value (Const : in out O_Dnode; Val : O_Cnode) is
+ procedure Finish_Init_Value (Decl : in out O_Dnode; Val : O_Cnode) is
begin
- SetInitializer (Const.LLVM, Val.LLVM);
- end Finish_Const_Value;
+ SetInitializer (Decl.LLVM, Val.LLVM);
+ end Finish_Init_Value;
------------------
-- New_Var_Decl --
diff --git a/src/ortho/llvm/ortho_llvm.ads b/src/ortho/llvm/ortho_llvm.ads
index 4cd0feba2..3f77a86b9 100644
--- a/src/ortho/llvm/ortho_llvm.ads
+++ b/src/ortho/llvm/ortho_llvm.ads
@@ -373,9 +373,9 @@ package Ortho_LLVM is
Storage : O_Storage;
Atype : O_Tnode);
- -- Set the value of a non-external constant.
- procedure Start_Const_Value (Const : in out O_Dnode);
- procedure Finish_Const_Value (Const : in out O_Dnode; Val : O_Cnode);
+ -- Set the value of a non-external constant or variable.
+ procedure Start_Init_Value (Decl : in out O_Dnode);
+ procedure Finish_Init_Value (Decl : in out O_Dnode; Val : O_Cnode);
-- Create a variable declaration.
-- A variable can be local only inside a function.
diff --git a/src/ortho/mcode/ortho_code-decls.adb b/src/ortho/mcode/ortho_code-decls.adb
index b95d4a2b8..a3a5e5eb0 100644
--- a/src/ortho/mcode/ortho_code-decls.adb
+++ b/src/ortho/mcode/ortho_code-decls.adb
@@ -345,6 +345,8 @@ package body Ortho_Code.Decls is
procedure New_Init_Value (Decl : O_Dnode; Val : O_Cnode) is
begin
+ pragma Assert (Get_Decl_Kind (Decl) = OD_Const
+ or else Get_Decl_Kind (Decl) = OD_Var);
if Get_Init_Value (Decl) /= O_Cnode_Null then
-- Value was already set.
raise Syntax_Error;
@@ -363,18 +365,10 @@ package body Ortho_Code.Decls is
end if;
end New_Init_Value;
- procedure New_Const_Value (Cst : O_Dnode; Val : O_Cnode) is
- begin
- pragma Assert (Get_Decl_Kind (Cst) = OD_Const);
- New_Init_Value (Cst, Val);
- end New_Const_Value;
-
- procedure New_Var_Decl
- (Res : out O_Dnode;
- Ident : O_Ident;
- Storage : O_Storage;
- Atype : O_Tnode)
- is
+ procedure New_Var_Decl (Res : out O_Dnode;
+ Ident : O_Ident;
+ Storage : O_Storage;
+ Atype : O_Tnode) is
begin
if Storage = O_Storage_Local then
Dnodes.Append (Dnode_Common'(Kind => OD_Local,
diff --git a/src/ortho/mcode/ortho_code-decls.ads b/src/ortho/mcode/ortho_code-decls.ads
index 0cd532593..70a0ba4df 100644
--- a/src/ortho/mcode/ortho_code-decls.ads
+++ b/src/ortho/mcode/ortho_code-decls.ads
@@ -132,8 +132,8 @@ package Ortho_Code.Decls is
Storage : O_Storage;
Atype : O_Tnode);
- -- Set the value to CST.
- procedure New_Const_Value (Cst : O_Dnode; Val : O_Cnode);
+ -- Set the value to DECL.
+ procedure New_Init_Value (Decl : O_Dnode; Val : O_Cnode);
-- Create a variable declaration.
-- A variable can be local only inside a function.
diff --git a/src/ortho/mcode/ortho_mcode.adb b/src/ortho/mcode/ortho_mcode.adb
index 77e101721..cb2ab6663 100644
--- a/src/ortho/mcode/ortho_mcode.adb
+++ b/src/ortho/mcode/ortho_mcode.adb
@@ -29,12 +29,12 @@ package body Ortho_Mcode is
null;
end New_Debug_Comment_Stmt;
- procedure Start_Const_Value (Const : in out O_Dnode)
+ procedure Start_Init_Value (Decl : in out O_Dnode)
is
- pragma Unreferenced (Const);
+ pragma Unreferenced (Decl);
begin
null;
- end Start_Const_Value;
+ end Start_Init_Value;
procedure Start_Record_Type (Elements : out O_Element_List) is
begin
@@ -112,12 +112,12 @@ package body Ortho_Mcode is
Ortho_Code.O_Tnode (Dtype));
end Finish_Access_Type;
- procedure Finish_Const_Value (Const : in out O_Dnode; Val : O_Cnode)
+ procedure Finish_Init_Value (Decl : in out O_Dnode; Val : O_Cnode)
is
- pragma Warnings (Off, Const);
+ pragma Warnings (Off, Decl);
begin
- New_Const_Value (Ortho_Code.O_Dnode (Const), Ortho_Code.O_Cnode (Val));
- end Finish_Const_Value;
+ New_Init_Value (Ortho_Code.O_Dnode (Decl), Ortho_Code.O_Cnode (Val));
+ end Finish_Init_Value;
function New_Array_Type (El_Type : O_Tnode; Index_Type : O_Tnode)
return O_Tnode is
diff --git a/src/ortho/mcode/ortho_mcode.ads b/src/ortho/mcode/ortho_mcode.ads
index 45e803690..ec65fab5c 100644
--- a/src/ortho/mcode/ortho_mcode.ads
+++ b/src/ortho/mcode/ortho_mcode.ads
@@ -297,8 +297,8 @@ package Ortho_Mcode is
function New_Slice (Arr : O_Lnode; Res_Type : O_Tnode; Index : O_Enode)
return O_Lnode;
- -- Get an element of a record.
- -- Type of REC must be a record type.
+ -- Get an element of a record or a union.
+ -- Type of REC must be a record or a union type.
function New_Selected_Element (Rec : O_Lnode; El : O_Fnode)
return O_Lnode;
@@ -357,9 +357,9 @@ package Ortho_Mcode is
Storage : O_Storage;
Atype : O_Tnode);
- -- Set the value of a non-external constant.
- procedure Start_Const_Value (Const : in out O_Dnode);
- procedure Finish_Const_Value (Const : in out O_Dnode; Val : O_Cnode);
+ -- Set the value of a non-external constant or variable.
+ procedure Start_Init_Value (Decl : in out O_Dnode);
+ procedure Finish_Init_Value (Decl : in out O_Dnode; Val : O_Cnode);
-- Create a variable declaration.
-- A variable can be local only inside a function.
@@ -538,8 +538,8 @@ private
pragma Inline (New_Type_Decl);
pragma Inline (New_Const_Decl);
- pragma Inline (Start_Const_Value);
- pragma Inline (Finish_Const_Value);
+ pragma Inline (Start_Init_Value);
+ pragma Inline (Finish_Init_Value);
pragma Inline (New_Var_Decl);
pragma Inline (New_Obj);
diff --git a/src/ortho/mcode/ortho_mcode.private.ads b/src/ortho/mcode/ortho_mcode.private.ads
index 1b414773f..5374ae978 100644
--- a/src/ortho/mcode/ortho_mcode.private.ads
+++ b/src/ortho/mcode/ortho_mcode.private.ads
@@ -106,8 +106,8 @@ private
pragma Inline (New_Type_Decl);
pragma Inline (New_Const_Decl);
- pragma Inline (Start_Const_Value);
- pragma Inline (Finish_Const_Value);
+ pragma Inline (Start_Init_Value);
+ pragma Inline (Finish_Init_Value);
pragma Inline (New_Var_Decl);
pragma Inline (New_Obj);
diff --git a/src/ortho/oread/ortho_front.adb b/src/ortho/oread/ortho_front.adb
index cd01eb368..6ba026221 100644
--- a/src/ortho/oread/ortho_front.adb
+++ b/src/ortho/oread/ortho_front.adb
@@ -2500,9 +2500,9 @@ package body Ortho_Front is
N.Decl_Defined := True;
Next_Token;
- Start_Const_Value (N.Obj_Node);
+ Start_Init_Value (N.Obj_Node);
Val := Parse_Constant_Value (N.Decl_Dtype);
- Finish_Const_Value (N.Obj_Node, Val);
+ Finish_Init_Value (N.Obj_Node, Val);
end if;
end Parse_Constant_Declaration;
@@ -2528,9 +2528,9 @@ package body Ortho_Front is
-- should check the object has no value.
Next_Expect (Tok_Assign);
Next_Token;
- Start_Const_Value (N.Obj_Node);
+ Start_Init_Value (N.Obj_Node);
Val := Parse_Constant_Value (N.Decl_Dtype);
- Finish_Const_Value (N.Obj_Node, Val);
+ Finish_Init_Value (N.Obj_Node, Val);
end Parse_Constant_Value_Declaration;
procedure Parse_Var_Declaration (Storage : O_Storage)
diff --git a/src/ortho/ortho_nodes.common.ads b/src/ortho/ortho_nodes.common.ads
index f9caf32a7..a40323656 100644
--- a/src/ortho/ortho_nodes.common.ads
+++ b/src/ortho/ortho_nodes.common.ads
@@ -344,9 +344,9 @@ package ORTHO_NODES is
Storage : O_Storage;
Atype : O_Tnode);
- -- Set the value of a non-external constant.
- procedure Start_Const_Value (Const : in out O_Dnode);
- procedure Finish_Const_Value (Const : in out O_Dnode; Val : O_Cnode);
+ -- Set the value of a non-external constant or variable.
+ procedure Start_Init_Value (Decl : in out O_Dnode);
+ procedure Finish_Init_Value (Decl : in out O_Dnode; Val : O_Cnode);
-- Create a variable declaration.
-- A variable can be local only inside a function.
diff --git a/src/vhdl/translate/trans-chap1.adb b/src/vhdl/translate/trans-chap1.adb
index a3c8233f0..3e4400071 100644
--- a/src/vhdl/translate/trans-chap1.adb
+++ b/src/vhdl/translate/trans-chap1.adb
@@ -232,8 +232,8 @@ package body Trans.Chap1 is
(Info.Block_Instance_Size, Create_Identifier ("INSTSIZE"),
Global_Storage, Ghdl_Index_Type);
if Global_Storage /= O_Storage_External then
- Start_Const_Value (Info.Block_Instance_Size);
- Finish_Const_Value
+ Start_Init_Value (Info.Block_Instance_Size);
+ Finish_Init_Value
(Info.Block_Instance_Size, Get_Scope_Size (Info.Block_Scope));
end if;
diff --git a/src/vhdl/translate/trans-chap12.adb b/src/vhdl/translate/trans-chap12.adb
index 4786ffbbc..185a01e8f 100644
--- a/src/vhdl/translate/trans-chap12.adb
+++ b/src/vhdl/translate/trans-chap12.adb
@@ -207,8 +207,8 @@ package body Trans.Chap12 is
New_Const_Decl
(Const, Create_Identifier ("INSTSIZE"), O_Storage_Public,
Ghdl_Index_Type);
- Start_Const_Value (Const);
- Finish_Const_Value (Const, Get_Scope_Size (Arch_Info.Block_Scope));
+ Start_Init_Value (Const);
+ Finish_Init_Value (Const, Get_Scope_Size (Arch_Info.Block_Scope));
-- Elaborator.
Start_Procedure_Decl
@@ -306,8 +306,8 @@ package body Trans.Chap12 is
New_Const_Decl
(Const, Create_Identifier ("INSTSIZE"), O_Storage_Public,
Ghdl_Index_Type);
- Start_Const_Value (Const);
- Finish_Const_Value (Const, Ghdl_Index_0);
+ Start_Init_Value (Const);
+ Finish_Init_Value (Const, Ghdl_Index_0);
-- Elaborator.
Start_Procedure_Decl
diff --git a/src/vhdl/translate/trans-chap14.adb b/src/vhdl/translate/trans-chap14.adb
index eacbf759b..3072b5955 100644
--- a/src/vhdl/translate/trans-chap14.adb
+++ b/src/vhdl/translate/trans-chap14.adb
@@ -912,8 +912,8 @@ package body Trans.Chap14 is
Str_Cst := Create_String_Len (Name.Suffix, Create_Uniq_Identifier);
New_Const_Decl (Name_Cst, Create_Uniq_Identifier, O_Storage_Private,
Ghdl_Str_Len_Type_Node);
- Start_Const_Value (Name_Cst);
- Finish_Const_Value (Name_Cst, Str_Cst);
+ Start_Init_Value (Name_Cst);
+ Finish_Init_Value (Name_Cst, Str_Cst);
if Is_Instance then
Start_Association (Constr, Ghdl_Get_Instance_Name);
else
diff --git a/src/vhdl/translate/trans-chap4.adb b/src/vhdl/translate/trans-chap4.adb
index 2fa63f9ee..735464ce4 100644
--- a/src/vhdl/translate/trans-chap4.adb
+++ b/src/vhdl/translate/trans-chap4.adb
@@ -2954,7 +2954,7 @@ package body Trans.Chap4 is
New_Const_Decl (C, Create_Uniq_Identifier, O_Storage_Private,
Ghdl_Location_Type_Node);
- Start_Const_Value (C);
+ Start_Init_Value (C);
Start_Record_Aggr (Constr, Ghdl_Location_Type_Node);
New_Record_Aggr_El
(Constr, New_Global_Address (Current_Filename_Node, Char_Ptr_Type));
@@ -2963,7 +2963,7 @@ package body Trans.Chap4 is
New_Record_Aggr_El (Constr, New_Signed_Literal (Ghdl_I32_Type,
Integer_64 (Col)));
Finish_Record_Aggr (Constr, Aggr);
- Finish_Const_Value (C, Aggr);
+ Finish_Init_Value (C, Aggr);
return C;
--return New_Global_Address (C, Ghdl_Location_Ptr_Node);
diff --git a/src/vhdl/translate/trans-chap8.adb b/src/vhdl/translate/trans-chap8.adb
index 3ca0200e4..e10ef1545 100644
--- a/src/vhdl/translate/trans-chap8.adb
+++ b/src/vhdl/translate/trans-chap8.adb
@@ -1340,7 +1340,7 @@ package body Trans.Chap8 is
New_Type_Decl (Create_Uniq_Identifier, Table_Type);
New_Const_Decl (Table, Create_Uniq_Identifier, O_Storage_Private,
Table_Type);
- Start_Const_Value (Table);
+ Start_Init_Value (Table);
Start_Array_Aggr (List, Table_Type);
El := First;
@@ -1350,7 +1350,7 @@ package body Trans.Chap8 is
El := Choices_Info (El).Choice_Chain;
end loop;
Finish_Array_Aggr (List, Table_Cst);
- Finish_Const_Value (Table, Table_Cst);
+ Finish_Init_Value (Table, Table_Cst);
-- Generate table from choice to statements block.
Assoc_Table_Base_Type :=
@@ -1362,7 +1362,7 @@ package body Trans.Chap8 is
New_Type_Decl (Create_Uniq_Identifier, Assoc_Table_Type);
New_Const_Decl (Assoc_Table, Create_Uniq_Identifier,
O_Storage_Private, Assoc_Table_Type);
- Start_Const_Value (Assoc_Table);
+ Start_Init_Value (Assoc_Table);
Start_Array_Aggr (List, Assoc_Table_Type);
El := First;
while El /= No_Choice_Id loop
@@ -1373,7 +1373,7 @@ package body Trans.Chap8 is
El := Choices_Info (El).Choice_Chain;
end loop;
Finish_Array_Aggr (List, Table_Cst);
- Finish_Const_Value (Assoc_Table, Table_Cst);
+ Finish_Init_Value (Assoc_Table, Table_Cst);
-- Generate dichotomy code.
declare
diff --git a/src/vhdl/translate/trans-helpers2.adb b/src/vhdl/translate/trans-helpers2.adb
index 03e0e8b8b..b6df362ee 100644
--- a/src/vhdl/translate/trans-helpers2.adb
+++ b/src/vhdl/translate/trans-helpers2.adb
@@ -50,7 +50,7 @@ package body Trans.Helpers2 is
Res : O_Cnode;
List : O_Array_Aggr_List;
begin
- Start_Const_Value (Const);
+ Start_Init_Value (Const);
Start_Array_Aggr (List, Const_Type);
for I in Str'Range loop
New_Array_Aggr_El
@@ -59,7 +59,7 @@ package body Trans.Helpers2 is
end loop;
New_Array_Aggr_El (List, New_Unsigned_Literal (Char_Type_Node, 0));
Finish_Array_Aggr (List, Res);
- Finish_Const_Value (Const, Res);
+ Finish_Init_Value (Const, Res);
end Create_String_Value;
function Create_String (Str : String; Id : O_Ident) return O_Dnode
diff --git a/src/vhdl/translate/trans-rtis.adb b/src/vhdl/translate/trans-rtis.adb
index b72443440..8ac312fd2 100644
--- a/src/vhdl/translate/trans-rtis.adb
+++ b/src/vhdl/translate/trans-rtis.adb
@@ -867,7 +867,7 @@ package body Trans.Rtis is
New_Unsigned_Literal (Ghdl_Index_Type,
Unsigned_64 (Cur_Block.Nbr + 1)));
New_Const_Decl (Res, Id, O_Storage_Private, Arr_Type);
- Start_Const_Value (Res);
+ Start_Init_Value (Res);
Start_Array_Aggr (List, Arr_Type);
Nbr := Cur_Block.Nbr;
@@ -896,7 +896,7 @@ package body Trans.Rtis is
New_Array_Aggr_El (List, New_Null_Access (Ghdl_Rti_Access));
Finish_Array_Aggr (List, Val);
- Finish_Const_Value (Res, Val);
+ Finish_Init_Value (Res, Val);
return Res;
end Generate_Rti_Array;
@@ -1094,18 +1094,18 @@ package body Trans.Rtis is
Unsigned_64 (Nbr_Lit)));
New_Const_Decl (Name_Arr, Create_Identifier ("RTINAMES"),
O_Storage_Private, Name_Arr_Type);
- Start_Const_Value (Name_Arr);
+ Start_Init_Value (Name_Arr);
Start_Array_Aggr (Arr_Aggr, Name_Arr_Type);
for I in Name_Lits'Range loop
New_Array_Aggr_El
(Arr_Aggr, New_Global_Address (Name_Lits (I), Char_Ptr_Type));
end loop;
Finish_Array_Aggr (Arr_Aggr, Val);
- Finish_Const_Value (Name_Arr, Val);
+ Finish_Init_Value (Name_Arr, Val);
Name := Generate_Type_Name (Atype);
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
case Info.Type_Mode is
when Type_Mode_B1 =>
Kind := Ghdl_Rtik_Type_B1;
@@ -1126,7 +1126,7 @@ package body Trans.Rtis is
(Rec_Aggr,
New_Global_Address (Name_Arr, Char_Ptr_Array_Ptr_Type));
Finish_Record_Aggr (Rec_Aggr, Val);
- Finish_Const_Value (Info.Type_Rti, Val);
+ Finish_Init_Value (Info.Type_Rti, Val);
end;
end Generate_Enumeration_Type_Definition;
@@ -1146,7 +1146,7 @@ package body Trans.Rtis is
return;
end if;
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
case Info.Type_Mode is
when Type_Mode_I32 =>
Kind := Ghdl_Rtik_Type_I32;
@@ -1163,7 +1163,7 @@ package body Trans.Rtis is
New_Record_Aggr_El (List, Generate_Common_Type (Kind, 0, 0));
New_Record_Aggr_El (List, New_Name_Address (Name));
Finish_Record_Aggr (List, Val);
- Finish_Const_Value (Info.Type_Rti, Val);
+ Finish_Init_Value (Info.Type_Rti, Val);
end Generate_Scalar_Type_Definition;
procedure Generate_Unit_Declaration (Unit : Iir_Unit_Declaration)
@@ -1190,7 +1190,7 @@ package body Trans.Rtis is
end if;
New_Const_Decl (Const, Create_Identifier ("RTI"),
Global_Storage, Rti_Type);
- Start_Const_Value (Const);
+ Start_Init_Value (Const);
Start_Record_Aggr (Aggr, Rti_Type);
New_Record_Aggr_El (Aggr, Generate_Common (Rtik));
New_Record_Aggr_El (Aggr, New_Name_Address (Name));
@@ -1204,7 +1204,7 @@ package body Trans.Rtis is
end if;
New_Record_Aggr_El (Aggr, Val);
Finish_Record_Aggr (Aggr, Val);
- Finish_Const_Value (Const, Val);
+ Finish_Init_Value (Const, Val);
Add_Rti_Node (Const);
Pop_Identifier_Prefix (Mark);
end Generate_Unit_Declaration;
@@ -1239,7 +1239,7 @@ package body Trans.Rtis is
Unit_Arr := Generate_Rti_Array (Create_Identifier ("RTIARRAY"));
Pop_Rti_Node (Prev);
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
Start_Record_Aggr (List, Ghdl_Rtin_Type_Physical);
case Info.Type_Mode is
when Type_Mode_P64 =>
@@ -1258,7 +1258,7 @@ package body Trans.Rtis is
New_Record_Aggr_El
(List, New_Global_Address (Unit_Arr, Ghdl_Rti_Arr_Acc));
Finish_Record_Aggr (List, Val);
- Finish_Const_Value (Info.Type_Rti, Val);
+ Finish_Init_Value (Info.Type_Rti, Val);
end Generate_Physical_Type_Definition;
procedure Generate_Scalar_Subtype_Definition (Atype : Iir)
@@ -1302,7 +1302,7 @@ package body Trans.Rtis is
return;
end if;
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
Start_Record_Aggr (Aggr, Ghdl_Rtin_Subtype_Scalar);
New_Record_Aggr_El
(Aggr, Generate_Common_Type (Ghdl_Rtik_Subtype_Scalar,
@@ -1313,7 +1313,7 @@ package body Trans.Rtis is
New_Record_Aggr_El (Aggr, New_Rti_Address (Base_Info.Type_Rti));
New_Record_Aggr_El (Aggr, Var_Acc_To_Loc (Info.T.Range_Var));
Finish_Record_Aggr (Aggr, Val);
- Finish_Const_Value (Info.Type_Rti, Val);
+ Finish_Init_Value (Info.Type_Rti, Val);
end Generate_Scalar_Subtype_Definition;
procedure Generate_Fileacc_Type_Definition (Atype : Iir)
@@ -1373,14 +1373,14 @@ package body Trans.Rtis is
end if;
Name := Generate_Type_Name (Atype);
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
Start_Record_Aggr (List, Ghdl_Rtin_Type_Fileacc);
New_Record_Aggr_El
(List, Generate_Common_Type (Kind, 0, Info.T.Rti_Max_Depth));
New_Record_Aggr_El (List, New_Name_Address (Name));
New_Record_Aggr_El (List, New_Rti_Address (Base));
Finish_Record_Aggr (List, Val);
- Finish_Const_Value (Info.Type_Rti, Val);
+ Finish_Init_Value (Info.Type_Rti, Val);
end Generate_Fileacc_Type_Definition;
procedure Generate_Array_Type_Indexes
@@ -1412,7 +1412,7 @@ package body Trans.Rtis is
New_Unsigned_Literal (Ghdl_Index_Type, Unsigned_64 (Nbr_Indexes)));
New_Const_Decl (Res, Create_Identifier ("RTIINDEXES"),
Global_Storage, Arr_Type);
- Start_Const_Value (Res);
+ Start_Init_Value (Res);
Start_Array_Aggr (Arr_Aggr, Arr_Type);
for I in 1 .. Nbr_Indexes loop
@@ -1421,7 +1421,7 @@ package body Trans.Rtis is
(Arr_Aggr, New_Rti_Address (Generate_Type_Definition (Index)));
end loop;
Finish_Array_Aggr (Arr_Aggr, Val);
- Finish_Const_Value (Res, Val);
+ Finish_Init_Value (Res, Val);
end Generate_Array_Type_Indexes;
function Type_To_Mode (Atype : Iir) return Natural is
@@ -1481,7 +1481,7 @@ package body Trans.Rtis is
List := Get_Index_Subtype_List (Atype);
-- Generate node.
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
Start_Record_Aggr (Aggr, Ghdl_Rtin_Type_Array);
New_Record_Aggr_El
(Aggr,
@@ -1495,7 +1495,7 @@ package body Trans.Rtis is
Unsigned_64 (Get_Nbr_Elements (List))));
New_Record_Aggr_El (Aggr, New_Global_Address (Arr, Ghdl_Rti_Arr_Acc));
Finish_Record_Aggr (Aggr, Val);
- Finish_Const_Value (Info.Type_Rti, Val);
+ Finish_Init_Value (Info.Type_Rti, Val);
end Generate_Array_Type_Definition;
procedure Generate_Array_Subtype_Definition
@@ -1543,7 +1543,7 @@ package body Trans.Rtis is
Name := Generate_Type_Name (Atype);
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
Start_Record_Aggr (Aggr, Ghdl_Rtin_Subtype_Array);
case Info.Type_Mode is
when Type_Mode_Array =>
@@ -1588,7 +1588,7 @@ package body Trans.Rtis is
end loop;
Finish_Record_Aggr (Aggr, Val);
- Finish_Const_Value (Info.Type_Rti, Val);
+ Finish_Init_Value (Info.Type_Rti, Val);
end Generate_Array_Subtype_Definition;
procedure Generate_Record_Type_Definition (Atype : Iir)
@@ -1634,7 +1634,7 @@ package body Trans.Rtis is
El_Name := Generate_Name (El);
New_Const_Decl (El_Const, Create_Identifier ("RTIEL"),
Global_Storage, Ghdl_Rtin_Element);
- Start_Const_Value (El_Const);
+ Start_Init_Value (El_Const);
Start_Record_Aggr (Aggr, Ghdl_Rtin_Element);
New_Record_Aggr_El (Aggr,
Generate_Common (Ghdl_Rtik_Element));
@@ -1651,7 +1651,7 @@ package body Trans.Rtis is
New_Record_Aggr_El (Aggr, Val);
end loop;
Finish_Record_Aggr (Aggr, Val);
- Finish_Const_Value (El_Const, Val);
+ Finish_Init_Value (El_Const, Val);
Add_Rti_Node (El_Const);
Pop_Identifier_Prefix (Mark);
@@ -1668,7 +1668,7 @@ package body Trans.Rtis is
begin
Name := Generate_Type_Name (Atype);
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
Start_Record_Aggr (Aggr, Ghdl_Rtin_Type_Record);
New_Record_Aggr_El
(Aggr,
@@ -1681,7 +1681,7 @@ package body Trans.Rtis is
New_Record_Aggr_El (Aggr,
New_Global_Address (El_Arr, Ghdl_Rti_Arr_Acc));
Finish_Record_Aggr (Aggr, Res);
- Finish_Const_Value (Info.Type_Rti, Res);
+ Finish_Init_Value (Info.Type_Rti, Res);
end;
end Generate_Record_Type_Definition;
@@ -1699,7 +1699,7 @@ package body Trans.Rtis is
end if;
Name := Generate_Type_Name (Atype);
- Start_Const_Value (Info.Type_Rti);
+ Start_Init_Value (Info.Type_Rti);
Start_Record_Aggr (List, Ghdl_Rtin_Type_Scalar);
New_Record_Aggr_El
(List,
@@ -1707,7 +1707,7 @@ package body Trans.Rtis is
Type_To_Mode (Atype)));
New_Record_Aggr_El (List, New_Name_Address (Name));
Finish_Record_Aggr (List, Val);
- Finish_Const_Value (Info.Type_Rti, Val);
+ Finish_Init_Value (Info.Type_Rti, Val);
end Generate_Protected_Type_Declaration;
-- If FORCE is true, force the creation of the type RTI.
@@ -1886,7 +1886,7 @@ package body Trans.Rtis is
Info := Get_Info (Decl);
- Start_Const_Value (Rti);
+ Start_Init_Value (Rti);
Start_Record_Aggr (List, Ghdl_Rtin_Object);
Mode := 0;
case Get_Kind (Decl) is
@@ -1973,7 +1973,7 @@ package body Trans.Rtis is
New_Record_Aggr_El (List, New_Rti_Address (Type_Info.Type_Rti));
New_Record_Aggr_El (List, Generate_Linecol (Decl));
Finish_Record_Aggr (List, Val);
- Finish_Const_Value (Rti, Val);
+ Finish_Init_Value (Rti, Val);
end if;
Pop_Identifier_Prefix (Mark);
end Generate_Object;
@@ -2009,7 +2009,7 @@ package body Trans.Rtis is
Arr := Generate_Rti_Array (Create_Identifier ("RTIARRAY"));
- Start_Const_Value (Info.Comp_Rti_Const);
+ Start_Init_Value (Info.Comp_Rti_Const);
Start_Record_Aggr (List, Ghdl_Rtin_Component);
New_Record_Aggr_El (List, Generate_Common (Ghdl_Rtik_Component));
New_Record_Aggr_El (List,
@@ -2020,7 +2020,7 @@ package body Trans.Rtis is
New_Record_Aggr_El (List,
New_Global_Address (Arr, Ghdl_Rti_Arr_Acc));
Finish_Record_Aggr (List, Res);
- Finish_Const_Value (Info.Comp_Rti_Const, Res);
+ Finish_Init_Value (Info.Comp_Rti_Const, Res);
Pop_Rti_Node (Prev);
end if;
@@ -2121,7 +2121,7 @@ package body Trans.Rtis is
New_Const_Decl (Info.Block_Rti_Const, Create_Identifier ("RTI"),
Global_Storage, Ghdl_Rtin_Instance);
- Start_Const_Value (Info.Block_Rti_Const);
+ Start_Init_Value (Info.Block_Rti_Const);
Start_Record_Aggr (List, Ghdl_Rtin_Instance);
New_Record_Aggr_El (List, Generate_Common (Ghdl_Rtik_Instance));
New_Record_Aggr_El (List, New_Global_Address (Name, Char_Ptr_Type));
@@ -2145,7 +2145,7 @@ package body Trans.Rtis is
New_Record_Aggr_El (List, Val);
Finish_Record_Aggr (List, Val);
- Finish_Const_Value (Info.Block_Rti_Const, Val);
+ Finish_Init_Value (Info.Block_Rti_Const, Val);
Add_Rti_Node (Info.Block_Rti_Const);
end Generate_Instance;
@@ -2165,12 +2165,12 @@ package body Trans.Rtis is
New_Const_Decl (Rti, Create_Identifier ("RTI"),
O_Storage_Public, Ghdl_Rtin_Type_Scalar);
- Start_Const_Value (Rti);
+ Start_Init_Value (Rti);
Start_Record_Aggr (List, Ghdl_Rtin_Type_Scalar);
New_Record_Aggr_El (List, Generate_Common (Ghdl_Rtik_Psl_Assert));
New_Record_Aggr_El (List, New_Global_Address (Name, Char_Ptr_Type));
Finish_Record_Aggr (List, Res);
- Finish_Const_Value (Rti, Res);
+ Finish_Init_Value (Rti, Res);
Info.Psl_Rti_Const := Rti;
Pop_Identifier_Prefix (Mark);
end Generate_Psl_Directive;
@@ -2362,7 +2362,7 @@ package body Trans.Rtis is
Arr := Generate_Rti_Array (Create_Identifier ("RTIARRAY"));
- Start_Const_Value (Rti);
+ Start_Init_Value (Rti);
Start_Record_Aggr (List, Ghdl_Rtin_Block);
New_Record_Aggr_El (List, Generate_Common (Ghdl_Rtik_If_Generate));
@@ -2385,7 +2385,7 @@ package body Trans.Rtis is
New_Record_Aggr_El (List, New_Global_Address (Arr, Ghdl_Rti_Arr_Acc));
Finish_Record_Aggr (List, Res);
- Finish_Const_Value (Rti, Res);
+ Finish_Init_Value (Rti, Res);
Pop_Rti_Node (Prev);
@@ -2424,7 +2424,7 @@ package body Trans.Rtis is
Name := Generate_Name (Blk);
- Start_Const_Value (Rti);
+ Start_Init_Value (Rti);
Start_Record_Aggr (List, Ghdl_Rtin_Generate);
New_Record_Aggr_El (List, Generate_Common (Ghdl_Rtik_For_Generate));
@@ -2453,7 +2453,7 @@ package body Trans.Rtis is
Finish_Record_Aggr (List, Res);
- Finish_Const_Value (Rti, Res);
+ Finish_Init_Value (Rti, Res);
Pop_Rti_Node (Prev);
@@ -2574,7 +2574,7 @@ package body Trans.Rtis is
Arr := Generate_Rti_Array (Create_Identifier ("RTIARRAY"));
- Start_Const_Value (Rti);
+ Start_Init_Value (Rti);
if Rti_Type = Ghdl_Rtin_Block_File then
Start_Record_Aggr (List_File, Rti_Type);
@@ -2614,7 +2614,7 @@ package body Trans.Rtis is
Finish_Record_Aggr (List_File, Res);
end if;
- Finish_Const_Value (Rti, Res);
+ Finish_Init_Value (Rti, Res);
Pop_Rti_Node (Prev);
@@ -2688,12 +2688,12 @@ package body Trans.Rtis is
Name := Create_String
(Nam_Buffer (1 .. Nam_Length),
Create_Identifier_Without_Prefix (Id, "__RTISTR"));
- Start_Const_Value (Info.Library_Rti_Const);
+ Start_Init_Value (Info.Library_Rti_Const);
Start_Record_Aggr (Aggr, Ghdl_Rtin_Type_Scalar);
New_Record_Aggr_El (Aggr, Generate_Common (Ghdl_Rtik_Library));
New_Record_Aggr_El (Aggr, New_Name_Address (Name));
Finish_Record_Aggr (Aggr, Val);
- Finish_Const_Value (Info.Library_Rti_Const, Val);
+ Finish_Init_Value (Info.Library_Rti_Const, Val);
end if;
end Generate_Library;
diff --git a/src/vhdl/translate/trans.adb b/src/vhdl/translate/trans.adb
index eca2eacc5..481870f89 100644
--- a/src/vhdl/translate/trans.adb
+++ b/src/vhdl/translate/trans.adb
@@ -432,16 +432,16 @@ package body Trans is
if Storage /= O_Storage_External
and then Initial_Value /= O_Cnode_Null
then
- Start_Const_Value (Res);
- Finish_Const_Value (Res, Initial_Value);
+ Start_Init_Value (Res);
+ Finish_Init_Value (Res, Initial_Value);
end if;
return Var_Type'(Kind => Var_Global, E => Res);
end Create_Global_Const;
procedure Define_Global_Const (Const : in out Var_Type; Val : O_Cnode) is
begin
- Start_Const_Value (Const.E);
- Finish_Const_Value (Const.E, Val);
+ Start_Init_Value (Const.E);
+ Finish_Init_Value (Const.E, Val);
end Define_Global_Const;
function Create_Var