aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2017-11-16 04:35:11 +0100
committerTristan Gingold <tgingold@free.fr>2017-11-16 05:10:13 +0100
commit9a8b35ac990386252bfb4e65f76acaa739d7967c (patch)
treeb81a3e3a09fa1a9b4c168d0c600953fd0692f812 /src
parent24b3d4b43611a9d95a951ce2334522d9bf92d784 (diff)
downloadghdl-9a8b35ac990386252bfb4e65f76acaa739d7967c.tar.gz
ghdl-9a8b35ac990386252bfb4e65f76acaa739d7967c.tar.bz2
ghdl-9a8b35ac990386252bfb4e65f76acaa739d7967c.zip
Abstract Translate_Enumeration_Literal
Diffstat (limited to 'src')
-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.