aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vhdl/translate/trans-chap7.adb22
-rw-r--r--src/vhdl/translate/trans-chap7.ads4
2 files changed, 15 insertions, 11 deletions
diff --git a/src/vhdl/translate/trans-chap7.adb b/src/vhdl/translate/trans-chap7.adb
index 1627afebc..438eb105c 100644
--- a/src/vhdl/translate/trans-chap7.adb
+++ b/src/vhdl/translate/trans-chap7.adb
@@ -495,6 +495,16 @@ package body Trans.Chap7 is
end if;
end Translate_Composite_Literal;
+ function Translate_Enumeration_Literal (Atype : Iir; Pos : Natural)
+ return O_Cnode
+ is
+ Lit_List : constant Iir_Flist :=
+ Get_Enumeration_Literal_List (Get_Base_Type (Atype));
+ Enum : constant Iir := Get_Nth_Element (Lit_List, Pos);
+ begin
+ return Get_Ortho_Expr (Enum);
+ end Translate_Enumeration_Literal;
+
function Translate_Numeric_Literal (Expr : Iir; Res_Type : O_Tnode)
return O_Cnode is
begin
@@ -504,16 +514,8 @@ package body Trans.Chap7 is
(Res_Type, Integer_64 (Get_Value (Expr)));
when Iir_Kind_Enumeration_Literal =>
- declare
- Enum_Type : constant Iir := Get_Base_Type (Get_Type (Expr));
- Lit_List : constant Iir_Flist :=
- Get_Enumeration_Literal_List (Enum_Type);
- Enum : Iir;
- begin
- Enum := Get_Nth_Element
- (Lit_List, Natural (Get_Enum_Pos (Expr)));
- return Get_Ortho_Expr (Enum);
- end;
+ return Translate_Enumeration_Literal
+ (Get_Type (Expr), Natural (Get_Enum_Pos (Expr)));
when Iir_Kind_Floating_Point_Literal =>
return New_Float_Literal
diff --git a/src/vhdl/translate/trans-chap7.ads b/src/vhdl/translate/trans-chap7.ads
index 33e4c62aa..7cb5662b2 100644
--- a/src/vhdl/translate/trans-chap7.ads
+++ b/src/vhdl/translate/trans-chap7.ads
@@ -61,8 +61,10 @@ package Trans.Chap7 is
-- type must be RES_TYPE. Therefore, an implicite conversion might
-- occurs.
function Translate_Static_Expression (Expr : Iir; Res_Type : Iir)
- return O_Cnode;
+ return O_Cnode;
function Translate_Numeric_Literal (Expr : Iir; Res_Type : O_Tnode)
+ return O_Cnode;
+ function Translate_Enumeration_Literal (Atype : Iir; Pos : Natural)
return O_Cnode;
-- Convert (if necessary) EXPR of type EXPR_TYPE to type ATYPE.