diff options
-rw-r--r-- | src/vhdl/translate/trans-chap7.adb | 22 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap7.ads | 4 |
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. |