diff options
Diffstat (limited to 'src/vhdl/vhdl-utils.adb')
-rw-r--r-- | src/vhdl/vhdl-utils.adb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/vhdl/vhdl-utils.adb b/src/vhdl/vhdl-utils.adb index 40b4f7947..461f301f4 100644 --- a/src/vhdl/vhdl-utils.adb +++ b/src/vhdl/vhdl-utils.adb @@ -34,6 +34,34 @@ package body Vhdl.Utils is return Get_Kind (N) = Iir_Kind_Overflow_Literal; end Is_Overflow_Literal; + function Strip_Literal_Origin (N : Iir) return Iir + is + Orig : Iir; + begin + if N = Null_Iir then + return N; + end if; + case Get_Kind (N) is + when Iir_Kind_String_Literal8 + | Iir_Kind_Integer_Literal + | Iir_Kind_Floating_Point_Literal + | Iir_Kind_Physical_Int_Literal + | Iir_Kind_Physical_Fp_Literal + | Iir_Kind_Simple_Aggregate + | Iir_Kind_Overflow_Literal + | Iir_Kind_Enumeration_Literal + | Iir_Kind_Aggregate => + Orig := Get_Literal_Origin (N); + if Orig /= Null_Iir then + return Orig; + else + return N; + end if; + when others => + return N; + end case; + end Strip_Literal_Origin; + function List_To_Flist (L : Iir_List) return Iir_Flist is Len : constant Natural := Get_Nbr_Elements (L); |