diff options
Diffstat (limited to 'src')
35 files changed, 310 insertions, 313 deletions
diff --git a/src/ghdldrv/ghdlxml.adb b/src/ghdldrv/ghdlxml.adb index 115f86d57..c55e0c30e 100644 --- a/src/ghdldrv/ghdlxml.adb +++ b/src/ghdldrv/ghdlxml.adb @@ -362,8 +362,8 @@ package body Ghdlxml is                    Put_Field (F, Image_Iir_Mode (Get_Iir_Mode (N, F)));                 when Type_Iir_Index32 =>                    Put_Field (F, Iir_Index32'Image (Get_Iir_Index32 (N, F))); -               when Type_Iir_Int64 => -                  Put_Field (F, Iir_Int64'Image (Get_Iir_Int64 (N, F))); +               when Type_Int64 => +                  Put_Field (F, Int64'Image (Get_Int64 (N, F)));                 when Type_Boolean =>                    Put_Field (F, Image_Boolean (Get_Boolean (N, F)));                 when Type_Iir_Staticness => @@ -398,8 +398,8 @@ package body Ghdlxml is                      (F, Strip (Iir_Int32'Image (Get_Iir_Int32 (N, F))));                 when Type_Int32 =>                    Put_Field (F, Strip (Int32'Image (Get_Int32 (N, F)))); -               when Type_Iir_Fp64 => -                  Put_Field (F, Iir_Fp64'Image (Get_Iir_Fp64 (N, F))); +               when Type_Fp64 => +                  Put_Field (F, Fp64'Image (Get_Fp64 (N, F)));                 when Type_Time_Stamp_Id =>                    Put_Field (F, Image_Time_Stamp_Id                                 (Get_Time_Stamp_Id (N, F))); diff --git a/src/types.ads b/src/types.ads index 2c59f583b..49eafa9a0 100644 --- a/src/types.ads +++ b/src/types.ads @@ -29,6 +29,10 @@ package Types is     type Int32 is range -2**31 .. 2**31 - 1;     for Int32'Size use 32; +   --  64 bits integer. +   type Int64 is range -2**63 .. 2**63 - 1; +   for Int64'Size use 64; +     subtype Nat32 is Int32 range 0 .. Int32'Last;     subtype Pos32 is Nat32 range 1 .. Nat32'Last; @@ -39,18 +43,6 @@ package Types is     type Fp64 is new Interfaces.IEEE_Float_64; -   -- iir_int32 is aimed at containing integer literal values. -   type Iir_Int32 is new Interfaces.Integer_32; - -   -- iir_int64 is aimed at containing units values. -   type Iir_Int64 is new Interfaces.Integer_64; - -   -- iir_fp64 is aimed at containing floating point values. -   subtype Iir_Fp64 is Fp64; - -   --  iir_index32 is aimed at containing an array index. -   type Iir_Index32 is new Nat32; -     --  Useful types.     type String_Acc is access String;     type String_Cst is access constant String; diff --git a/src/vhdl/simulate/simul-execution.adb b/src/vhdl/simulate/simul-execution.adb index a9411d62f..91b506e72 100644 --- a/src/vhdl/simulate/simul-execution.adb +++ b/src/vhdl/simulate/simul-execution.adb @@ -19,6 +19,7 @@  with Ada.Unchecked_Conversion;  with Ada.Text_IO; use Ada.Text_IO;  with System; +with Types; use Types;  with Grt.Types; use Grt.Types;  with Flags; use Flags;  with Vhdl.Errors; use Vhdl.Errors; @@ -1421,7 +1422,7 @@ package body Simul.Execution is                 Unit := Get_Unit_Chain (Vhdl.Std_Package.Time_Type_Definition);                 while Unit /= Null_Iir loop                    exit when Vhdl.Evaluation.Get_Physical_Value (Unit) -                    = Iir_Int64 (Right.I64); +                    = Int64 (Right.I64);                    Unit := Get_Chain (Unit);                 end loop;                 if Unit = Null_Iir then @@ -2394,8 +2395,8 @@ package body Simul.Execution is                 when Iir_Value_I64 =>                    null;                 when Iir_Value_F64 => -                  if Res.F64 > Ghdl_F64 (Iir_Int64'Last) or -                    Res.F64 < Ghdl_F64 (Iir_Int64'First) +                  if Res.F64 > Ghdl_F64 (Int64'Last) or +                    Res.F64 < Ghdl_F64 (Int64'First)                    then                       Error_Msg_Constraint (Loc);                    end if; @@ -3042,7 +3043,7 @@ package body Simul.Execution is           when Iir_Kind_Integer_Literal =>              declare                 Lit_Type : constant Iir := Get_Base_Type (Get_Type (Expr)); -               Lit : constant Iir_Int64 := Get_Value (Expr); +               Lit : constant Int64 := Get_Value (Expr);              begin                 case Get_Info (Lit_Type).Scalar_Mode is                    when Iir_Value_I64 => @@ -4378,11 +4379,11 @@ package body Simul.Execution is           declare              Choice_Type : constant Iir :=                Get_Type (Get_Choice_Expression (Assoc)); -            Choice_Len : Iir_Int64; +            Choice_Len : Int64;           begin              Choice_Len := Vhdl.Evaluation.Eval_Discrete_Type_Length                (Get_String_Type_Bound_Type (Choice_Type)); -            if Choice_Len /= Iir_Int64 (Value.Bounds.D (1).Length) then +            if Choice_Len /= Int64 (Value.Bounds.D (1).Length) then                 Error_Msg_Constraint (Expr);              end if;           end; diff --git a/src/vhdl/simulate/simul-execution.ads b/src/vhdl/simulate/simul-execution.ads index ade4ac085..8df5ed882 100644 --- a/src/vhdl/simulate/simul-execution.ads +++ b/src/vhdl/simulate/simul-execution.ads @@ -16,7 +16,6 @@  --  Software Foundation, 59 Temple Place - Suite 330, Boston, MA  --  02111-1307, USA. -with Types; use Types;  with Vhdl.Nodes; use Vhdl.Nodes;  with Simul.Environments; use Simul.Environments;  with Simul.Elaboration; use Simul.Elaboration; diff --git a/src/vhdl/simulate/simul-grt_interface.adb b/src/vhdl/simulate/simul-grt_interface.adb index 40069e908..e485d7d18 100644 --- a/src/vhdl/simulate/simul-grt_interface.adb +++ b/src/vhdl/simulate/simul-grt_interface.adb @@ -17,7 +17,6 @@  --  02111-1307, USA.  with Vhdl.Nodes; use Vhdl.Nodes; -with Types; use Types;  package body Simul.Grt_Interface is     To_Dir : constant array (Iir_Direction) of Ghdl_Dir_Type := diff --git a/src/vhdl/translate/trans-chap14.adb b/src/vhdl/translate/trans-chap14.adb index e95afb5c4..4618edcb1 100644 --- a/src/vhdl/translate/trans-chap14.adb +++ b/src/vhdl/translate/trans-chap14.adb @@ -577,7 +577,7 @@ package body Trans.Chap14 is        Info        : Type_Info_Acc;        Var         : O_Dnode;        Data        : Last_Time_Data; -      Right_Bound : Iir_Int64; +      Right_Bound : Int64;        If_Blk      : O_If_Block;     begin        Name := Chap6.Translate_Name (Prefix, Mode_Signal); diff --git a/src/vhdl/translate/trans-chap2.adb b/src/vhdl/translate/trans-chap2.adb index 7d32e50f6..5cbf85e62 100644 --- a/src/vhdl/translate/trans-chap2.adb +++ b/src/vhdl/translate/trans-chap2.adb @@ -1455,7 +1455,7 @@ package body Trans.Chap2 is                    | Type_Iir_Constraint                    | Type_Iir_Mode                    | Type_Iir_Index32 -                  | Type_Iir_Int64 +                  | Type_Int64                    | Type_Boolean                    | Type_Iir_Staticness                    | Type_Iir_All_Sensitized @@ -1467,7 +1467,7 @@ package body Trans.Chap2 is                    | Type_Iir_Direction                    | Type_Iir_Int32                    | Type_Int32 -                  | Type_Iir_Fp64 +                  | Type_Fp64                    | Type_Token_Type                    | Type_Name_Id =>                    null; diff --git a/src/vhdl/translate/trans-chap3.adb b/src/vhdl/translate/trans-chap3.adb index 971d52b31..8c3021d43 100644 --- a/src/vhdl/translate/trans-chap3.adb +++ b/src/vhdl/translate/trans-chap3.adb @@ -340,7 +340,7 @@ package body Trans.Chap3 is        St     : constant Iir :=          Get_Subtype_Definition (Get_Type_Declarator (Def));        L, H   : Iir; -      Lv, Hv : Iir_Int64; +      Lv, Hv : Int64;     begin        Get_Low_High_Limit (Get_Range_Constraint (St), L, H);        Lv := Get_Value (L); @@ -983,12 +983,12 @@ package body Trans.Chap3 is     --  Get the length of DEF, ie the number of elements.     --  If the length is not statically defined, returns -1.     function Get_Array_Subtype_Length (Def : Iir_Array_Subtype_Definition) -                                      return Iir_Int64 +                                      return Int64     is        Indexes_List : constant Iir_Flist := Get_Index_Subtype_List (Def);        Index        : Iir; -      Idx_Len      : Iir_Int64; -      Len          : Iir_Int64; +      Idx_Len      : Int64; +      Len          : Int64;     begin        --  Check if the bounds of the array are locally static.        Len := 1; @@ -1059,7 +1059,7 @@ package body Trans.Chap3 is        Info      : constant Type_Info_Acc := Get_Info (Def);        Pinfo     : constant Type_Info_Acc := Get_Info (Parent_Type); -      Len : Iir_Int64; +      Len : Int64;        Id : O_Ident;        El_Constrained : Boolean; @@ -2068,24 +2068,24 @@ package body Trans.Chap3 is              end;           when Type_Mode_I64 =>              declare -               V : Iir_Int64; +               V : Int64;              begin                 V := Get_Value (Lit);                 if Is_Hi then -                  return V = Iir_Int64'Last; +                  return V = Int64'Last;                 else -                  return V = Iir_Int64'First; +                  return V = Int64'First;                 end if;              end;           when Type_Mode_P64 =>              declare -               V : Iir_Int64; +               V : Int64;              begin                 V := Get_Physical_Value (Lit);                 if Is_Hi then -                  return V = Iir_Int64'Last; +                  return V = Int64'Last;                 else -                  return V = Iir_Int64'First; +                  return V = Int64'First;                 end if;              end;           when Type_Mode_F64 => @@ -2657,7 +2657,7 @@ package body Trans.Chap3 is        Indexes_List : constant Iir_Flist := Get_Index_Subtype_List (Atype);        Nbr_Dim      : constant Natural := Get_Nbr_Elements (Indexes_List);        Index        : Iir; -      Val          : Iir_Int64; +      Val          : Int64;        Rng          : Iir;     begin        Val := 1; diff --git a/src/vhdl/translate/trans-chap6.adb b/src/vhdl/translate/trans-chap6.adb index 9d0da87c8..a277d452b 100644 --- a/src/vhdl/translate/trans-chap6.adb +++ b/src/vhdl/translate/trans-chap6.adb @@ -310,8 +310,8 @@ package body Trans.Chap6 is        Cond2           : O_Enode;        Index           : O_Enode;        Index_Base_Type : Iir; -      V               : Iir_Int64; -      B               : Iir_Int64; +      V               : Int64; +      B               : Int64;     begin        B := Eval_Pos (Get_Left_Limit (Index_Range));        if Get_Expr_Staticness (Expr) = Locally then @@ -558,9 +558,9 @@ package body Trans.Chap6 is              Slice_Index_Type : constant Iir := Get_Index_Type (Slice_Type, 0);              Slice_Range : constant Iir :=                Get_Range_Constraint (Slice_Index_Type); -            Prefix_Left, Slice_Left : Iir_Int64; -            Off                     : Iir_Int64; -            Slice_Length            : Iir_Int64; +            Prefix_Left, Slice_Left : Int64; +            Off                     : Int64; +            Slice_Length            : Int64;           begin              Prefix_Left := Eval_Pos (Get_Left_Limit (Index_Range));              Slice_Left := Eval_Pos (Get_Left_Limit (Slice_Range)); diff --git a/src/vhdl/translate/trans-chap7.adb b/src/vhdl/translate/trans-chap7.adb index 98cc8894e..9d1e0796c 100644 --- a/src/vhdl/translate/trans-chap7.adb +++ b/src/vhdl/translate/trans-chap7.adb @@ -199,7 +199,7 @@ package body Trans.Chap7 is                 Index_Type : constant Iir :=                   Get_Index_Type (Aggr_Type, Dim - 1);                 Index_Range : constant Iir := Eval_Static_Range (Index_Type); -               Len : constant Iir_Int64 := +               Len : constant Int64 :=                   Eval_Discrete_Range_Length (Index_Range);                 Assocs : constant Iir := Get_Association_Choices_Chain (Aggr);                 Vect : Iir_Array (0 .. Integer (Len - 1)); @@ -1229,7 +1229,7 @@ package body Trans.Chap7 is        Expr_Type  : constant Iir := Get_Return_Type (Concat_Imp);        Index_Type : constant Iir := Get_Index_Type (Expr_Type, 0);        Info : constant Type_Info_Acc := Get_Info (Expr_Type); -      Static_Length : Iir_Int64 := 0; +      Static_Length : Int64 := 0;        Nbr_Dyn_Expr : Natural := 0;        type Handle_Acc is access procedure (E : Iir); @@ -2971,7 +2971,7 @@ package body Trans.Chap7 is        --  Assign EXPR to current position (defined by index VAR_INDEX), and        --  update VAR_INDEX.  Handles sub-aggregates. -      procedure Do_Assign (Assoc : Iir; Expr : Iir; Assoc_Len : out Iir_Int64) +      procedure Do_Assign (Assoc : Iir; Expr : Iir; Assoc_Len : out Int64)        is           Dest : Mnode;        begin @@ -3008,7 +3008,7 @@ package body Trans.Chap7 is        is           P  : Natural;           El : Iir; -         Assoc_Len : Iir_Int64; +         Assoc_Len : Int64;        begin           --  First, assign positionnal association.           --  FIXME: count the number of positionnal association and generate @@ -3072,7 +3072,7 @@ package body Trans.Chap7 is        procedure Translate_Array_Aggregate_Gen_Named        is           El : Iir; -         Assoc_Len : Iir_Int64; +         Assoc_Len : Int64;        begin           El := Get_Association_Choices_Chain (Aggr); @@ -3525,7 +3525,7 @@ package body Trans.Chap7 is     is        Aggr_Type : constant Iir := Get_Type (Aggr);        Assoc : Iir; -      Static_Len : Iir_Int64; +      Static_Len : Int64;        Var_Len : O_Dnode;        Expr_Type : Iir;        Range_Type : Iir; @@ -4217,7 +4217,7 @@ package body Trans.Chap7 is              declare                 Otype : constant O_Tnode :=                   Get_Ortho_Type (Expr_Type, Mode_Value); -               Val : Iir_Int64; +               Val : Int64;              begin                 --  Get the value now, as it may generate a constraint_error.                 Val := Get_Physical_Value (Expr); diff --git a/src/vhdl/translate/trans-chap8.adb b/src/vhdl/translate/trans-chap8.adb index 79b05a055..427a30464 100644 --- a/src/vhdl/translate/trans-chap8.adb +++ b/src/vhdl/translate/trans-chap8.adb @@ -1206,7 +1206,7 @@ package body Trans.Chap8 is        Expr       : constant Iir := Get_Expression (Stmt);        Expr_Type  : Iir;        Base_Type  : Iir; -      Sel_Length : Iir_Int64; +      Sel_Length : Int64;        Cond       : O_Enode;     begin        --  Translate into if/elsif statements. @@ -1294,7 +1294,7 @@ package body Trans.Chap8 is        --  Number of associations.        Nbr_Assocs  : Natural; -      Sel_Length  : Iir_Int64; +      Sel_Length  : Int64;        --  Dichotomy table (table of choices).        String_Type     : O_Tnode; diff --git a/src/vhdl/translate/trans-chap9.adb b/src/vhdl/translate/trans-chap9.adb index 58e0d6dcb..92ed100d5 100644 --- a/src/vhdl/translate/trans-chap9.adb +++ b/src/vhdl/translate/trans-chap9.adb @@ -1351,7 +1351,7 @@ package body Trans.Chap9 is                   | Type_Iir_Constraint                   | Type_Iir_Mode                   | Type_Iir_Index32 -                 | Type_Iir_Int64 +                 | Type_Int64                   | Type_Boolean                   | Type_Iir_Staticness                   | Type_Iir_All_Sensitized @@ -1363,7 +1363,7 @@ package body Trans.Chap9 is                   | Type_Iir_Direction                   | Type_Iir_Int32                   | Type_Int32 -                 | Type_Iir_Fp64 +                 | Type_Fp64                   | Type_Token_Type                   | Type_Name_Id =>                    null; diff --git a/src/vhdl/vhdl-disp_tree.adb b/src/vhdl/vhdl-disp_tree.adb index 02e750b16..c4953035d 100644 --- a/src/vhdl/vhdl-disp_tree.adb +++ b/src/vhdl/vhdl-disp_tree.adb @@ -530,8 +530,8 @@ package body Vhdl.Disp_Tree is                    Log_Line (Image_Iir_Mode (Get_Iir_Mode (N, F)));                 when Type_Iir_Index32 =>                    Log_Line (Iir_Index32'Image (Get_Iir_Index32 (N, F))); -               when Type_Iir_Int64 => -                  Log_Line (Iir_Int64'Image (Get_Iir_Int64 (N, F))); +               when Type_Int64 => +                  Log_Line (Int64'Image (Get_Int64 (N, F)));                 when Type_Boolean =>                    Log_Line (Image_Boolean                                (Get_Boolean (N, F))); @@ -566,8 +566,8 @@ package body Vhdl.Disp_Tree is                    Log_Line (Iir_Int32'Image (Get_Iir_Int32 (N, F)));                 when Type_Int32 =>                    Log_Line (Int32'Image (Get_Int32 (N, F))); -               when Type_Iir_Fp64 => -                  Log_Line (Iir_Fp64'Image (Get_Iir_Fp64 (N, F))); +               when Type_Fp64 => +                  Log_Line (Fp64'Image (Get_Fp64 (N, F)));                 when Type_Time_Stamp_Id =>                    Log_Line (Image_Time_Stamp_Id                                (Get_Time_Stamp_Id (N, F))); diff --git a/src/vhdl/vhdl-disp_vhdl.adb b/src/vhdl/vhdl-disp_vhdl.adb index f54d06788..e60480dfb 100644 --- a/src/vhdl/vhdl-disp_vhdl.adb +++ b/src/vhdl/vhdl-disp_vhdl.adb @@ -3582,9 +3582,9 @@ package body Vhdl.Disp_Vhdl is        end case;     end Disp_Vhdl; -   procedure Disp_Int64 (Val: Iir_Int64) +   procedure Disp_Int64 (Val: Int64)     is -      Str: constant String := Iir_Int64'Image (Val); +      Str: constant String := Int64'Image (Val);     begin        if Str (Str'First) = ' ' then           Put (Str (Str'First + 1 .. Str'Last)); @@ -3604,9 +3604,9 @@ package body Vhdl.Disp_Vhdl is        end if;     end Disp_Int32; -   procedure Disp_Fp64 (Val: Iir_Fp64) +   procedure Disp_Fp64 (Val: Fp64)     is -      Str: constant String := Iir_Fp64'Image (Val); +      Str: constant String := Fp64'Image (Val);     begin        if Str (Str'First) = ' ' then           Put (Str (Str'First + 1 .. Str'Last)); diff --git a/src/vhdl/vhdl-disp_vhdl.ads b/src/vhdl/vhdl-disp_vhdl.ads index b29a1e736..e69ab29f2 100644 --- a/src/vhdl/vhdl-disp_vhdl.ads +++ b/src/vhdl/vhdl-disp_vhdl.ads @@ -30,11 +30,11 @@ package Vhdl.Disp_Vhdl is     --  Display an expression.     -- Disp an iir_int64, without the leading blank. -   procedure Disp_Int64 (Val: Iir_Int64); +   procedure Disp_Int64 (Val: Int64);     -- Disp an iir_int32, without the leading blank.     procedure Disp_Int32 (Val: Iir_Int32);     -- Disp an iir_Fp64, without the leading blank. -   procedure Disp_Fp64 (Val: Iir_Fp64); +   procedure Disp_Fp64 (Val: Fp64);  end Vhdl.Disp_Vhdl; diff --git a/src/vhdl/vhdl-errors.adb b/src/vhdl/vhdl-errors.adb index ac38f006e..d6a8afd66 100644 --- a/src/vhdl/vhdl-errors.adb +++ b/src/vhdl/vhdl-errors.adb @@ -762,9 +762,9 @@ package body Vhdl.Errors is        end case;     end Disp_Name; -   function Image (N : Iir_Int64) return String +   function Image (N : Int64) return String     is -      Res : constant String := Iir_Int64'Image (N); +      Res : constant String := Int64'Image (N);     begin        if Res (1) = ' ' then           return Res (2 .. Res'Last); @@ -773,7 +773,7 @@ package body Vhdl.Errors is        end if;     end Image; -   function Disp_Discrete (Dtype : Iir; Pos : Iir_Int64) return String is +   function Disp_Discrete (Dtype : Iir; Pos : Int64) return String is     begin        case Get_Kind (Dtype) is           when Iir_Kind_Integer_Type_Definition => diff --git a/src/vhdl/vhdl-errors.ads b/src/vhdl/vhdl-errors.ads index 5987a6782..b1b42c10c 100644 --- a/src/vhdl/vhdl-errors.ads +++ b/src/vhdl/vhdl-errors.ads @@ -114,7 +114,7 @@ package Vhdl.Errors is     function Disp_Subprg (Subprg : Iir) return String;     --  Print element POS of discrete type DTYPE. -   function Disp_Discrete (Dtype : Iir; Pos : Iir_Int64) return String; +   function Disp_Discrete (Dtype : Iir; Pos : Int64) return String;     --  Disp the name of the type of NODE if known.     --  Disp "unknown" if it is not known. diff --git a/src/vhdl/vhdl-evaluation.adb b/src/vhdl/vhdl-evaluation.adb index ae2a38bc4..71ee3b0d7 100644 --- a/src/vhdl/vhdl-evaluation.adb +++ b/src/vhdl/vhdl-evaluation.adb @@ -34,11 +34,11 @@ package body Vhdl.Evaluation is     function Eval_Expr_Keep_Orig (Expr : Iir; Force : Boolean) return Iir;     function Eval_Enum_To_String (Lit : Iir; Orig : Iir) return Iir; -   function Eval_Integer_Image (Val : Iir_Int64; Orig : Iir) return Iir; +   function Eval_Integer_Image (Val : Int64; Orig : Iir) return Iir;     function Eval_Scalar_Compare (Left, Right : Iir) return Compare_Type; -   function Get_Physical_Value (Expr : Iir) return Iir_Int64 +   function Get_Physical_Value (Expr : Iir) return Int64     is        pragma Unsuppress (Overflow_Check);        Kind : constant Iir_Kind := Get_Kind (Expr); @@ -55,8 +55,7 @@ package body Vhdl.Evaluation is                 when Iir_Kind_Physical_Int_Literal =>                    return Get_Value (Expr) * Get_Value (Unit);                 when Iir_Kind_Physical_Fp_Literal => -                  return Iir_Int64 -                    (Get_Fp_Value (Expr) * Iir_Fp64 (Get_Value (Unit))); +                  return Int64 (Get_Fp_Value (Expr) * Fp64 (Get_Value (Unit)));                 when others =>                    raise Program_Error;              end case; @@ -67,7 +66,7 @@ package body Vhdl.Evaluation is        end case;     end Get_Physical_Value; -   function Build_Integer (Val : Iir_Int64; Origin : Iir) +   function Build_Integer (Val : Int64; Origin : Iir)       return Iir_Integer_Literal     is        Res : Iir_Integer_Literal; @@ -81,7 +80,7 @@ package body Vhdl.Evaluation is        return Res;     end Build_Integer; -   function Build_Floating (Val : Iir_Fp64; Origin : Iir) +   function Build_Floating (Val : Fp64; Origin : Iir)       return Iir_Floating_Point_Literal     is        Res : Iir_Floating_Point_Literal; @@ -111,7 +110,7 @@ package body Vhdl.Evaluation is        return Res;     end Build_Enumeration_Constant; -   function Build_Physical (Val : Iir_Int64; Origin : Iir) +   function Build_Physical (Val : Int64; Origin : Iir)       return Iir_Physical_Int_Literal     is        Res : Iir_Physical_Int_Literal; @@ -128,7 +127,7 @@ package body Vhdl.Evaluation is        return Res;     end Build_Physical; -   function Build_Discrete (Val : Iir_Int64; Origin : Iir) return Iir is +   function Build_Discrete (Val : Int64; Origin : Iir) return Iir is     begin        case Get_Kind (Get_Type (Origin)) is           when Iir_Kind_Enumeration_Type_Definition @@ -309,9 +308,9 @@ package body Vhdl.Evaluation is        case Get_Kind (Orig_Type) is           when Iir_Kind_Integer_Type_Definition =>              if Is_Pos then -               return Build_Integer (Iir_Int64'Last, Origin); +               return Build_Integer (Int64'Last, Origin);              else -               return Build_Integer (Iir_Int64'First, Origin); +               return Build_Integer (Int64'First, Origin);              end if;           when others =>              Error_Kind ("build_extreme_value", Orig_Type); @@ -322,12 +321,12 @@ package body Vhdl.Evaluation is     --  left_limit and direction are set.     --  Type of A_RANGE must have a range_constraint.     --  Set the right limit of A_RANGE from LEN. -   procedure Set_Right_Limit_By_Length (A_Range : Iir; Len : Iir_Int64) +   procedure Set_Right_Limit_By_Length (A_Range : Iir; Len : Int64)     is        A_Type : constant Iir := Get_Type (A_Range);        Left : constant Iir := Get_Left_Limit (A_Range);        Right : Iir; -      Pos : Iir_Int64; +      Pos : Int64;     begin        pragma Assert (Get_Expr_Staticness (A_Range) = Locally); @@ -358,7 +357,7 @@ package body Vhdl.Evaluation is     --  * the right bound     --  The left bound *IS NOT* created, but points to the left bound of A_TYPE.     function Create_Range_By_Length -     (A_Type : Iir; Len : Iir_Int64; Loc : Location_Type) +     (A_Type : Iir; Len : Int64; Loc : Location_Type)       return Iir     is        Index_Constraint : Iir; @@ -405,7 +404,7 @@ package body Vhdl.Evaluation is     --  Create a subtype of A_TYPE whose length is LEN.     --  This is used to create subtypes for strings or aggregates.     function Create_Range_Subtype_By_Length -     (A_Type : Iir; Len : Iir_Int64; Loc : Location_Type) +     (A_Type : Iir; Len : Int64; Loc : Location_Type)       return Iir     is        Res : Iir; @@ -432,7 +431,7 @@ package body Vhdl.Evaluation is     end Create_Unidim_Array_From_Index;     function Create_Unidim_Array_By_Length -     (Base_Type : Iir; Len : Iir_Int64; Loc : Iir) +     (Base_Type : Iir; Len : Int64; Loc : Iir)       return Iir_Array_Subtype_Definition     is        Index_Type : constant Iir := Get_Index_Type (Base_Type, 0); @@ -490,8 +489,8 @@ package body Vhdl.Evaluation is     --  Assume no overflow.     function Eval_Pos_In_Range (Rng : Iir; Expr : Iir) return Iir_Index32     is -      Left_Pos : constant Iir_Int64 := Eval_Pos (Get_Left_Limit (Rng)); -      Pos : constant Iir_Int64 := Eval_Pos (Expr); +      Left_Pos : constant Int64 := Eval_Pos (Get_Left_Limit (Rng)); +      Pos : constant Int64 := Eval_Pos (Expr);     begin        case Get_Direction (Rng) is           when Iir_To => @@ -528,7 +527,7 @@ package body Vhdl.Evaluation is                 declare                    Rng : constant Iir := Get_Choice_Range (Assoc);                    Rng_Start : Iir; -                  Rng_Len : Iir_Int64; +                  Rng_Len : Int64;                 begin                    if Get_Direction (Rng) = Get_Direction (Choice_Range) then                       Rng_Start := Get_Left_Limit (Rng); @@ -564,7 +563,7 @@ package body Vhdl.Evaluation is        Aggr_Type : constant Iir := Get_Type (Aggr);        Index_Type : constant Iir := Get_Index_Type (Aggr_Type, 0);        Index_Range : constant Iir := Eval_Static_Range (Index_Type); -      Len : constant Iir_Int64 := Eval_Discrete_Range_Length (Index_Range); +      Len : constant Int64 := Eval_Discrete_Range_Length (Index_Range);        Assocs : constant Iir := Get_Association_Choices_Chain (Aggr);        Vect : Iir_Array (0 .. Integer (Len - 1));        List : Iir_Flist; @@ -905,7 +904,7 @@ package body Vhdl.Evaluation is       (Left, Right : Iir; Origin : Iir; Func : Iir_Predefined_Shift_Functions)       return Iir     is -      Count : constant Iir_Int64 := Get_Value (Right); +      Count : constant Int64 := Get_Value (Right);        Arr_List : constant Iir_Flist := Get_Simple_Aggregate_List (Left);        Len : constant Natural := Get_Nbr_Elements (Arr_List);        Cnt : Natural; @@ -1118,7 +1117,7 @@ package body Vhdl.Evaluation is                 Set_Left_Limit (A_Range, Get_Left_Limit (Left_Range));                 Set_Direction (A_Range, Get_Direction (Left_Range));                 Location_Copy (A_Range, Orig); -               Set_Right_Limit_By_Length (A_Range, Iir_Int64 (Res_Len)); +               Set_Right_Limit_By_Length (A_Range, Int64 (Res_Len));                 Index_Type := Create_Range_Subtype_From_Type                   (Left_Index, Get_Location (Orig));                 Set_Range_Constraint (Index_Type, A_Range); @@ -1133,7 +1132,7 @@ package body Vhdl.Evaluation is              --  concatenation is the direction of S, and the left bound of the              --  result is S'LEFT.              Res_Type := Create_Unidim_Array_By_Length -              (Origin_Type, Iir_Int64 (Res_Len), Orig); +              (Origin_Type, Int64 (Res_Len), Orig);           end if;        end if;        --  FIXME: this is not necessarily a string, it may be an aggregate if @@ -1166,8 +1165,8 @@ package body Vhdl.Evaluation is              end;           when Iir_Kind_Physical_Type_Definition =>              declare -               L_Val : constant Iir_Int64 := Get_Physical_Value (Left); -               R_Val : constant Iir_Int64 := Get_Physical_Value (Right); +               L_Val : constant Int64 := Get_Physical_Value (Left); +               R_Val : constant Int64 := Get_Physical_Value (Right);              begin                 if L_Val = R_Val then                    return Compare_Eq; @@ -1181,8 +1180,8 @@ package body Vhdl.Evaluation is              end;           when Iir_Kind_Integer_Type_Definition =>              declare -               L_Val : constant Iir_Int64 := Get_Value (Left); -               R_Val : constant Iir_Int64 := Get_Value (Right); +               L_Val : constant Int64 := Get_Value (Left); +               R_Val : constant Int64 := Get_Value (Right);              begin                 if L_Val = R_Val then                    return Compare_Eq; @@ -1196,8 +1195,8 @@ package body Vhdl.Evaluation is              end;           when Iir_Kind_Floating_Type_Definition =>              declare -               L_Val : constant Iir_Fp64 := Get_Fp_Value (Left); -               R_Val : constant Iir_Fp64 := Get_Fp_Value (Right); +               L_Val : constant Fp64 := Get_Fp_Value (Left); +               R_Val : constant Fp64 := Get_Fp_Value (Right);              begin                 if L_Val = R_Val then                    return Compare_Eq; @@ -1395,9 +1394,9 @@ package body Vhdl.Evaluation is              end if;           when Iir_Predefined_Floating_Exp =>              declare -               Exp : Iir_Int64; -               Res : Iir_Fp64; -               Val : Iir_Fp64; +               Exp : Int64; +               Res : Fp64; +               Val : Fp64;              begin                 Res := 1.0;                 Val := Get_Fp_Value (Left); @@ -1478,25 +1477,25 @@ package body Vhdl.Evaluation is           when Iir_Predefined_Real_Physical_Mul =>              --  FIXME: overflow??              return Build_Physical -              (Iir_Int64 (Get_Fp_Value (Left) -                          * Iir_Fp64 (Get_Physical_Value (Right))), Orig); +              (Int64 (Get_Fp_Value (Left) +                          * Fp64 (Get_Physical_Value (Right))), Orig);           when Iir_Predefined_Physical_Real_Mul =>              --  FIXME: overflow??              return Build_Physical -              (Iir_Int64 (Iir_Fp64 (Get_Physical_Value (Left)) +              (Int64 (Fp64 (Get_Physical_Value (Left))                            * Get_Fp_Value (Right)), Orig);           when Iir_Predefined_Physical_Real_Div =>              --  FIXME: overflow??              return Build_Physical -              (Iir_Int64 (Iir_Fp64 (Get_Physical_Value (Left)) +              (Int64 (Fp64 (Get_Physical_Value (Left))                            / Get_Fp_Value (Right)), Orig);           when Iir_Predefined_Physical_Minimum => -            return Build_Physical (Iir_Int64'Min (Get_Physical_Value (Left), +            return Build_Physical (Int64'Min (Get_Physical_Value (Left),                                                    Get_Physical_Value (Right)),                                     Orig);           when Iir_Predefined_Physical_Maximum => -            return Build_Physical (Iir_Int64'Max (Get_Physical_Value (Left), +            return Build_Physical (Int64'Max (Get_Physical_Value (Left),                                                    Get_Physical_Value (Right)),                                     Orig); @@ -1578,13 +1577,13 @@ package body Vhdl.Evaluation is           when Iir_Predefined_Universal_R_I_Mul =>              return Build_Floating -              (Get_Fp_Value (Left) * Iir_Fp64 (Get_Value (Right)), Orig); +              (Get_Fp_Value (Left) * Fp64 (Get_Value (Right)), Orig);           when Iir_Predefined_Universal_I_R_Mul =>              return Build_Floating -              (Iir_Fp64 (Get_Value (Left)) * Get_Fp_Value (Right), Orig); +              (Fp64 (Get_Value (Left)) * Get_Fp_Value (Right), Orig);           when Iir_Predefined_Universal_R_I_Div =>              return Build_Floating -              (Get_Fp_Value (Left) / Iir_Fp64 (Get_Value (Right)), Orig); +              (Get_Fp_Value (Left) / Fp64 (Get_Value (Right)), Orig);           when Iir_Predefined_Array_Sll             | Iir_Predefined_Array_Srl @@ -1777,12 +1776,12 @@ package body Vhdl.Evaluation is        return Get_Nth_Element (Get_Index_Subtype_List (Prefix_Type), Dim - 1);     end Eval_Array_Attribute; -   function Eval_Integer_Image (Val : Iir_Int64; Orig : Iir) return Iir +   function Eval_Integer_Image (Val : Int64; Orig : Iir) return Iir     is        use Str_Table;        Img : String (1 .. 24); --  23 is enough, 24 is rounded.        L : Natural; -      V : Iir_Int64; +      V : Int64;        Id : String8_Id;     begin        V := Val; @@ -1804,7 +1803,7 @@ package body Vhdl.Evaluation is        return Build_String (Id, Nat32 (Img'Last - L), Orig);     end Eval_Integer_Image; -   function Eval_Floating_Image (Val : Iir_Fp64; Orig : Iir) return Iir +   function Eval_Floating_Image (Val : Fp64; Orig : Iir) return Iir     is        use Str_Table;        Id : String8_Id; @@ -1827,7 +1826,7 @@ package body Vhdl.Evaluation is        Res := Build_String (Id, Int32 (P), Orig);        --  FIXME: this is not correct since the type is *not* constrained.        Set_Type (Res, Create_Unidim_Array_By_Length -                (Get_Type (Orig), Iir_Int64 (P), Orig)); +                (Get_Type (Orig), Int64 (P), Orig));        return Res;     end Eval_Floating_Image; @@ -1872,7 +1871,7 @@ package body Vhdl.Evaluation is     function Eval_Physical_Image (Phys, Expr: Iir) return Iir     is        --  Reduces to the base unit (e.g. femtoseconds). -      Value : constant String := Iir_Int64'Image (Get_Physical_Value (Phys)); +      Value : constant String := Int64'Image (Get_Physical_Value (Phys));        Unit : constant Iir :=          Get_Primary_Unit (Get_Base_Type (Get_Type (Phys)));        UnitName : constant String := Image_Identifier (Unit); @@ -1898,7 +1897,7 @@ package body Vhdl.Evaluation is     function Build_Physical_Value (Val: String; Phys_Type, Expr: Iir) return Iir     is        UnitName : String (Val'range); -      Mult : Iir_Int64; +      Mult : Int64;        Sep : Natural;        Found_Unit : Boolean := false;        Found_Real : Boolean := false; @@ -1939,12 +1938,12 @@ package body Vhdl.Evaluation is        Mult := Get_Value (Get_Physical_Literal (Unit));        if Found_Real then           return Build_Physical -           (Iir_Int64 (Iir_Fp64'Value (Val (Val'First .. Sep)) -                         * Iir_Fp64 (Mult)), +           (Int64 (Fp64'Value (Val (Val'First .. Sep)) +                         * Fp64 (Mult)),              Expr);        else           return Build_Physical -           (Iir_Int64'Value (Val (Val'First .. Sep)) * Mult, Expr); +           (Int64'Value (Val (Val'First .. Sep)) * Mult, Expr);        end if;     end Build_Physical_Value; @@ -2002,17 +2001,17 @@ package body Vhdl.Evaluation is        return Build_String (Image_Id, Nat32 (Len), Orig);     end Eval_Enum_To_String; -   function Eval_Incdec (Expr : Iir; N : Iir_Int64; Origin : Iir) return Iir +   function Eval_Incdec (Expr : Iir; N : Int64; Origin : Iir) return Iir     is -      P : Iir_Int64; +      P : Int64;     begin        case Get_Kind (Expr) is           when Iir_Kind_Integer_Literal =>              return Build_Integer (Get_Value (Expr) + N, Origin);           when Iir_Kind_Enumeration_Literal => -            P := Iir_Int64 (Get_Enum_Pos (Expr)) + N; +            P := Int64 (Get_Enum_Pos (Expr)) + N;              if P < 0 -              or else (P >= Iir_Int64 +              or else (P >= Int64                           (Get_Nbr_Elements                              (Get_Enumeration_Literal_List                                 (Get_Base_Type (Get_Type (Expr)))))) @@ -2130,14 +2129,14 @@ package body Vhdl.Evaluation is                       Res := Build_Integer (Get_Value (Val), Conv);                    when Iir_Kind_Floating_Type_Definition =>                       Res := Build_Integer -                       (Iir_Int64 (Get_Fp_Value (Val)), Conv); +                       (Int64 (Get_Fp_Value (Val)), Conv);                    when others =>                       Error_Kind ("eval_type_conversion(1)", Val_Type);                 end case;              when Iir_Kind_Floating_Type_Definition =>                 case Get_Kind (Val_Type) is                    when Iir_Kind_Integer_Type_Definition => -                     Res := Build_Floating (Iir_Fp64 (Get_Value (Val)), Conv); +                     Res := Build_Floating (Fp64 (Get_Value (Val)), Conv);                    when Iir_Kind_Floating_Type_Definition =>                       Res := Build_Floating (Get_Fp_Value (Val), Conv);                    when others => @@ -2207,11 +2206,11 @@ package body Vhdl.Evaluation is        begin           case Get_Kind (Base_Type) is              when Iir_Kind_Integer_Type_Definition => -               return Build_Discrete (Iir_Int64'Value (Value1), Orig); +               return Build_Discrete (Int64'Value (Value1), Orig);              when Iir_Kind_Enumeration_Type_Definition =>                 return Build_Enumeration_Value (Value1, Base_Type, Orig);              when Iir_Kind_Floating_Type_Definition => -               return Build_Floating (Iir_Fp64'value (Value1), Orig); +               return Build_Floating (Fp64'value (Value1), Orig);              when Iir_Kind_Physical_Type_Definition =>                 return Build_Physical_Value (Value1, Base_Type, Orig);              when others => @@ -2310,7 +2309,7 @@ package body Vhdl.Evaluation is        Assoc_Expr : Iir;        Aggr_Bounds : Iir;        Aggr : Iir; -      Cur_Pos : Iir_Int64; +      Cur_Pos : Int64;        Res : Iir;     begin        Aggr := Prefix; @@ -2458,8 +2457,8 @@ package body Vhdl.Evaluation is        Aggr_Bounds : Iir;        Cur_Off : Iir_Index32;        Res : Iir; -      Left_Pos : Iir_Int64; -      Assoc_Pos : Iir_Int64; +      Left_Pos : Int64; +      Assoc_Pos : Int64;     begin        Aggr_Bounds := Eval_Static_Range (Get_Nth_Element (Indexes_Type, Dim));        Left_Pos := Eval_Pos (Eval_Discrete_Range_Left (Aggr_Bounds)); @@ -2502,9 +2501,9 @@ package body Vhdl.Evaluation is              when Iir_Kind_Choice_By_Range =>                 declare                    Rng : Iir; -                  Left : Iir_Int64; -                  Right : Iir_Int64; -                  Hi, Lo : Iir_Int64; +                  Left : Int64; +                  Right : Int64; +                  Hi, Lo : Int64;                    Lo_Off, Hi_Off : Iir_Index32;                 begin                    Rng := Eval_Range (Get_Choice_Range (Assoc)); @@ -2688,7 +2687,7 @@ package body Vhdl.Evaluation is              declare                 Expr_Type : constant Iir := Get_Type (Expr);                 Val_Expr : Iir; -               Val : Iir_Int64; +               Val : Int64;              begin                 Val_Expr := Eval_Static_Expr (Get_Parameter (Expr));                 Val := Eval_Pos (Val_Expr); @@ -2835,7 +2834,7 @@ package body Vhdl.Evaluation is             | Iir_Kind_Rightof_Attribute =>              declare                 Rng : Iir; -               N : Iir_Int64; +               N : Int64;                 Prefix_Type : constant Iir := Get_Type (Get_Prefix (Expr));                 Res : Iir;              begin @@ -2949,7 +2948,7 @@ package body Vhdl.Evaluation is     is        Expr_Type : constant Iir := Get_Type (Expr);        Indexes : Iir_Flist; -      Len : Iir_Int64; +      Len : Int64;     begin        --  Consider only arrays.  Records are never composite.        if Get_Kind (Expr_Type) /= Iir_Kind_Array_Subtype_Definition then @@ -3128,7 +3127,7 @@ package body Vhdl.Evaluation is        end if;     end Eval_Expr_Check_If_Static; -   function Eval_Int_In_Range (Val : Iir_Int64; Bound : Iir) return Boolean is +   function Eval_Int_In_Range (Val : Int64; Bound : Iir) return Boolean is     begin        case Get_Kind (Bound) is           when Iir_Kind_Range_Expression => @@ -3152,9 +3151,9 @@ package body Vhdl.Evaluation is        return True;     end Eval_Int_In_Range; -   function Eval_Phys_In_Range (Val : Iir_Int64; Bound : Iir) return Boolean +   function Eval_Phys_In_Range (Val : Int64; Bound : Iir) return Boolean     is -      Left, Right : Iir_Int64; +      Left, Right : Int64;     begin        case Get_Kind (Bound) is           when Iir_Kind_Range_Expression => @@ -3186,7 +3185,7 @@ package body Vhdl.Evaluation is        return True;     end Eval_Phys_In_Range; -   function Eval_Fp_In_Range (Val : Iir_Fp64; Bound : Iir) return Boolean is +   function Eval_Fp_In_Range (Val : Fp64; Bound : Iir) return Boolean is     begin        case Get_Kind (Bound) is           when Iir_Kind_Range_Expression => @@ -3267,7 +3266,7 @@ package body Vhdl.Evaluation is              --  'val attribute.              Type_Range := Get_Range_Constraint (Sub_Type);              return Eval_Int_In_Range -              (Iir_Int64 (Get_Enum_Pos (Val)), Type_Range); +              (Int64 (Get_Enum_Pos (Val)), Type_Range);           when Iir_Kind_Physical_Subtype_Definition =>              if Get_Expr_Staticness (Val) /= Locally @@ -3390,7 +3389,7 @@ package body Vhdl.Evaluation is             | Iir_Kind_Enumeration_Subtype_Definition             | Iir_Kind_Enumeration_Type_Definition =>              declare -               L, R : Iir_Int64; +               L, R : Int64;              begin                 --  Check for null range.                 L := Eval_Pos (Get_Left_Limit (Range_Constraint)); @@ -3410,7 +3409,7 @@ package body Vhdl.Evaluation is              end;           when Iir_Kind_Floating_Subtype_Definition =>              declare -               L, R : Iir_Fp64; +               L, R : Fp64;              begin                 --  Check for null range.                 L := Get_Fp_Value (Get_Left_Limit (Range_Constraint)); @@ -3446,12 +3445,12 @@ package body Vhdl.Evaluation is        end if;     end Eval_Check_Range; -   function Eval_Discrete_Range_Length (Constraint : Iir) return Iir_Int64 +   function Eval_Discrete_Range_Length (Constraint : Iir) return Int64     is        --  We don't want to deal with very large ranges here.        pragma Suppress (Overflow_Check); -      Res : Iir_Int64; -      Left, Right : Iir_Int64; +      Res : Int64; +      Left, Right : Int64;     begin        Left := Eval_Pos (Get_Left_Limit (Constraint));        Right := Eval_Pos (Get_Right_Limit (Constraint)); @@ -3474,7 +3473,7 @@ package body Vhdl.Evaluation is        return Res;     end Eval_Discrete_Range_Length; -   function Eval_Discrete_Type_Length (Sub_Type : Iir) return Iir_Int64 +   function Eval_Discrete_Type_Length (Sub_Type : Iir) return Int64     is     begin        case Get_Kind (Sub_Type) is @@ -3490,7 +3489,7 @@ package body Vhdl.Evaluation is     function Eval_Is_Null_Discrete_Range (Rng : Iir) return Boolean     is -      Left, Right : Iir_Int64; +      Left, Right : Int64;     begin        Left := Eval_Pos (Get_Left_Limit (Rng));        Right := Eval_Pos (Get_Right_Limit (Rng)); @@ -3502,13 +3501,13 @@ package body Vhdl.Evaluation is        end case;     end Eval_Is_Null_Discrete_Range; -   function Eval_Pos (Expr : Iir) return Iir_Int64 is +   function Eval_Pos (Expr : Iir) return Int64 is     begin        case Get_Kind (Expr) is           when Iir_Kind_Integer_Literal =>              return Get_Value (Expr);           when Iir_Kind_Enumeration_Literal => -            return Iir_Int64 (Get_Enum_Pos (Expr)); +            return Int64 (Get_Enum_Pos (Expr));           when Iir_Kind_Physical_Int_Literal             | Iir_Kind_Physical_Fp_Literal             | Iir_Kind_Unit_Declaration => diff --git a/src/vhdl/vhdl-evaluation.ads b/src/vhdl/vhdl-evaluation.ads index 6d913a4d2..48a36a886 100644 --- a/src/vhdl/vhdl-evaluation.ads +++ b/src/vhdl/vhdl-evaluation.ads @@ -43,7 +43,7 @@ package Vhdl.Evaluation is     --  Get the value of a physical integer literal or unit.  May propagate     --  Constraint_Error. -   function Get_Physical_Value (Expr : Iir) return Iir_Int64; +   function Get_Physical_Value (Expr : Iir) return Int64;     --  Get the parameter of an attribute, or 1 if doesn't exist.     function Eval_Attribute_Parameter_Or_1 (Attr : Iir) return Natural; @@ -115,13 +115,13 @@ package Vhdl.Evaluation is       return Boolean;     --  Return TRUE iff VAL belongs to BOUND. -   function Eval_Int_In_Range (Val : Iir_Int64; Bound : Iir) return Boolean; +   function Eval_Int_In_Range (Val : Int64; Bound : Iir) return Boolean;     --  Return the length of the discrete range CONSTRAINT. -   function Eval_Discrete_Range_Length (Constraint : Iir) return Iir_Int64; +   function Eval_Discrete_Range_Length (Constraint : Iir) return Int64;     --  Return the length of SUB_TYPE. -   function Eval_Discrete_Type_Length (Sub_Type : Iir) return Iir_Int64; +   function Eval_Discrete_Type_Length (Sub_Type : Iir) return Int64;     --  Get the left bound of a range constraint.     --  Note: the range constraint may be an attribute or a subtype. @@ -133,7 +133,7 @@ package Vhdl.Evaluation is     --  Return the position of EXPR, ie the result of sub_type'pos (EXPR), where     --  sub_type is the type of expr.     --  EXPR must be of a discrete subtype. -   function Eval_Pos (Expr : Iir) return Iir_Int64; +   function Eval_Pos (Expr : Iir) return Int64;     --  Return True iff L and R (scalar literals) are equal.     function Eval_Is_Eq (L, R : Iir) return Boolean; @@ -155,13 +155,13 @@ package Vhdl.Evaluation is     --  Create an array subtype from LEN and BASE_TYPE, according to rules     --  of LRM93 7.3.2.2. (which are the same as LRM93 7.2.4).     function Create_Unidim_Array_By_Length -     (Base_Type : Iir; Len : Iir_Int64; Loc : Iir) +     (Base_Type : Iir; Len : Int64; Loc : Iir)       return Iir_Array_Subtype_Definition;     --  Create a subtype of A_TYPE whose length is LEN.     --  This is used to create subtypes for strings or aggregates.     function Create_Range_Subtype_By_Length -     (A_Type : Iir; Len : Iir_Int64; Loc : Location_Type) +     (A_Type : Iir; Len : Int64; Loc : Location_Type)       return Iir;     --  Compute ATYPE'value (VALUE) using origin ORIG, but without checking diff --git a/src/vhdl/vhdl-ieee-vital_timing.adb b/src/vhdl/vhdl-ieee-vital_timing.adb index af68caabc..89cfc7df0 100644 --- a/src/vhdl/vhdl-ieee-vital_timing.adb +++ b/src/vhdl/vhdl-ieee-vital_timing.adb @@ -553,10 +553,10 @@ package body Vhdl.Ieee.Vital_Timing is        --  If P is a scalar port, return PORT_LENGTH_SCALAR        --  If P is a vector, return the length of the vector (>= 0)        --  Otherwise, return PORT_LENGTH_ERROR. -      Port_Length_Unknown : constant Iir_Int64 := -1; -      Port_Length_Scalar  : constant Iir_Int64 := -2; -      Port_Length_Error   : constant Iir_Int64 := -3; -      function Get_Port_Length (P : Iir) return Iir_Int64 +      Port_Length_Unknown : constant Int64 := -1; +      Port_Length_Scalar  : constant Int64 := -2; +      Port_Length_Error   : constant Int64 := -3; +      function Get_Port_Length (P : Iir) return Int64        is           Ptype : constant Iir := Get_Type (P);           Itype : Iir; @@ -631,7 +631,7 @@ package body Vhdl.Ieee.Vital_Timing is           return Timing_Type_Bad;        end Get_Timing_Generic_Type_Kind; -      function Get_Timing_Generic_Type_Length return Iir_Int64 +      function Get_Timing_Generic_Type_Length return Int64        is           Itype : Iir;        begin @@ -657,8 +657,8 @@ package body Vhdl.Ieee.Vital_Timing is                                          Is_Scalar : Boolean := False)        is           Kind : Timing_Generic_Type_Kind; -         Len : Iir_Int64; -         Len1 : Iir_Int64; +         Len : Int64; +         Len1 : Int64;        begin           Kind := Get_Timing_Generic_Type_Kind;           if P = Null_Iir or Kind = Timing_Type_Bad then @@ -722,9 +722,9 @@ package body Vhdl.Ieee.Vital_Timing is           Is_Scalar : Boolean := False)        is           Kind : Timing_Generic_Type_Kind; -         Len1 : Iir_Int64; -         Len2 : Iir_Int64; -         Lenp : Iir_Int64; +         Len1 : Int64; +         Len2 : Int64; +         Lenp : Int64;        begin           Kind := Get_Timing_Generic_Type_Kind;           if P1 = Null_Iir or P2 = Null_Iir or Kind = Timing_Type_Bad then diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb index 007209b23..71f1eb722 100644 --- a/src/vhdl/vhdl-nodes.adb +++ b/src/vhdl/vhdl-nodes.adb @@ -1616,37 +1616,37 @@ package body Vhdl.Nodes is        Set_Field12 (Design_Unit, Int32_To_Iir (Line));     end Set_Design_Unit_Source_Col; -   type Iir_Int64_Conv is record +   type Int64_Conv is record        Field4: Iir;        Field5: Iir;     end record; -   pragma Pack (Iir_Int64_Conv); -   pragma Assert (Iir_Int64_Conv'Size = Iir_Int64'Size); +   pragma Pack (Int64_Conv); +   pragma Assert (Int64_Conv'Size = Int64'Size); -   function Get_Value (Lit : Iir) return Iir_Int64 +   function Get_Value (Lit : Iir) return Int64     is -      function To_Iir_Int64 is new Ada.Unchecked_Conversion -         (Iir_Int64_Conv, Iir_Int64); -      Conv : Iir_Int64_Conv; +      function To_Int64 is new Ada.Unchecked_Conversion +         (Int64_Conv, Int64); +      Conv : Int64_Conv;     begin        pragma Assert (Lit /= Null_Iir);        pragma Assert (Has_Value (Get_Kind (Lit)),                       "no field Value");        Conv.Field4 := Get_Field4 (Lit);        Conv.Field5 := Get_Field5 (Lit); -      return To_Iir_Int64 (Conv); +      return To_Int64 (Conv);     end Get_Value; -   procedure Set_Value (Lit : Iir; Val : Iir_Int64) +   procedure Set_Value (Lit : Iir; Val : Int64)     is -      function To_Iir_Int64_Conv is new Ada.Unchecked_Conversion -         (Iir_Int64, Iir_Int64_Conv); -      Conv : Iir_Int64_Conv; +      function To_Int64_Conv is new Ada.Unchecked_Conversion +         (Int64, Int64_Conv); +      Conv : Int64_Conv;     begin        pragma Assert (Lit /= Null_Iir);        pragma Assert (Has_Value (Get_Kind (Lit)),                       "no field Value"); -      Conv := To_Iir_Int64_Conv (Val); +      Conv := To_Int64_Conv (Val);        Set_Field4 (Lit, Conv.Field4);        Set_Field5 (Lit, Conv.Field5);     end Set_Value; @@ -1683,37 +1683,37 @@ package body Vhdl.Nodes is        Set_Field4 (Unit, Lit);     end Set_Physical_Literal; -   type Iir_Fp64_Conv is record +   type Fp64_Conv is record        Field4: Iir;        Field5: Iir;     end record; -   pragma Pack (Iir_Fp64_Conv); -   pragma Assert (Iir_Fp64_Conv'Size = Iir_Fp64'Size); +   pragma Pack (Fp64_Conv); +   pragma Assert (Fp64_Conv'Size = Fp64'Size); -   function Get_Fp_Value (Lit : Iir) return Iir_Fp64 +   function Get_Fp_Value (Lit : Iir) return Fp64     is -      function To_Iir_Fp64 is new Ada.Unchecked_Conversion -         (Iir_Fp64_Conv, Iir_Fp64); -      Conv : Iir_Fp64_Conv; +      function To_Fp64 is new Ada.Unchecked_Conversion +         (Fp64_Conv, Fp64); +      Conv : Fp64_Conv;     begin        pragma Assert (Lit /= Null_Iir);        pragma Assert (Has_Fp_Value (Get_Kind (Lit)),                       "no field Fp_Value");        Conv.Field4 := Get_Field4 (Lit);        Conv.Field5 := Get_Field5 (Lit); -      return To_Iir_Fp64 (Conv); +      return To_Fp64 (Conv);     end Get_Fp_Value; -   procedure Set_Fp_Value (Lit : Iir; Val : Iir_Fp64) +   procedure Set_Fp_Value (Lit : Iir; Val : Fp64)     is -      function To_Iir_Fp64_Conv is new Ada.Unchecked_Conversion -         (Iir_Fp64, Iir_Fp64_Conv); -      Conv : Iir_Fp64_Conv; +      function To_Fp64_Conv is new Ada.Unchecked_Conversion +         (Fp64, Fp64_Conv); +      Conv : Fp64_Conv;     begin        pragma Assert (Lit /= Null_Iir);        pragma Assert (Has_Fp_Value (Get_Kind (Lit)),                       "no field Fp_Value"); -      Conv := To_Iir_Fp64_Conv (Val); +      Conv := To_Fp64_Conv (Val);        Set_Field4 (Lit, Conv.Field4);        Set_Field5 (Lit, Conv.Field5);     end Set_Fp_Value; diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads index 261633812..4fc779c6b 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -4945,6 +4945,12 @@ package Vhdl.Nodes is       Procedure_Parameter_Interface_List ..       Function_Parameter_Interface_List; +   -- iir_int32 is aimed at containing integer literal values. +   type Iir_Int32 is new Int32; + +   --  iir_index32 is aimed at containing an array index. +   type Iir_Index32 is new Nat32; +     ---------------     -- subranges --     --------------- @@ -6007,8 +6013,8 @@ package Vhdl.Nodes is     --  Value of an integer/physical literal.     --  Field: Field4,Field5 (grp) -   function Get_Value (Lit : Iir) return Iir_Int64; -   procedure Set_Value (Lit : Iir; Val : Iir_Int64); +   function Get_Value (Lit : Iir) return Int64; +   procedure Set_Value (Lit : Iir; Val : Int64);     --  Position (same as lit_type'pos) of an enumeration literal.     --  Field: Field5 (pos) @@ -6021,8 +6027,8 @@ package Vhdl.Nodes is     --  Value of a floating point literal.     --  Field: Field4,Field5 (grp) -   function Get_Fp_Value (Lit : Iir) return Iir_Fp64; -   procedure Set_Fp_Value (Lit : Iir; Val : Iir_Fp64); +   function Get_Fp_Value (Lit : Iir) return Fp64; +   procedure Set_Fp_Value (Lit : Iir; Val : Fp64);     --  List of elements of a simple aggregate.     --  Field: Field4 Ref (uc) diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index f2752d528..f7486e875 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -43,10 +43,10 @@ package body Vhdl.Nodes_Meta is        Field_Design_Unit_Source_Pos => Type_Source_Ptr,        Field_Design_Unit_Source_Line => Type_Int32,        Field_Design_Unit_Source_Col => Type_Int32, -      Field_Value => Type_Iir_Int64, +      Field_Value => Type_Int64,        Field_Enum_Pos => Type_Iir_Int32,        Field_Physical_Literal => Type_Iir, -      Field_Fp_Value => Type_Iir_Fp64, +      Field_Fp_Value => Type_Fp64,        Field_Simple_Aggregate_List => Type_Iir_Flist,        Field_String8_Id => Type_String8_Id,        Field_String_Length => Type_Int32, @@ -5060,6 +5060,30 @@ package body Vhdl.Nodes_Meta is        end case;     end Set_File_Checksum_Id; +   function Get_Fp64 +      (N : Iir; F : Fields_Enum) return Fp64 is +   begin +      pragma Assert (Fields_Type (F) = Type_Fp64); +      case F is +         when Field_Fp_Value => +            return Get_Fp_Value (N); +         when others => +            raise Internal_Error; +      end case; +   end Get_Fp64; + +   procedure Set_Fp64 +      (N : Iir; F : Fields_Enum; V: Fp64) is +   begin +      pragma Assert (Fields_Type (F) = Type_Fp64); +      case F is +         when Field_Fp_Value => +            Set_Fp_Value (N, V); +         when others => +            raise Internal_Error; +      end case; +   end Set_Fp64; +     function Get_Iir        (N : Iir; F : Fields_Enum) return Iir is     begin @@ -6016,30 +6040,6 @@ package body Vhdl.Nodes_Meta is        end case;     end Set_Iir_Flist; -   function Get_Iir_Fp64 -      (N : Iir; F : Fields_Enum) return Iir_Fp64 is -   begin -      pragma Assert (Fields_Type (F) = Type_Iir_Fp64); -      case F is -         when Field_Fp_Value => -            return Get_Fp_Value (N); -         when others => -            raise Internal_Error; -      end case; -   end Get_Iir_Fp64; - -   procedure Set_Iir_Fp64 -      (N : Iir; F : Fields_Enum; V: Iir_Fp64) is -   begin -      pragma Assert (Fields_Type (F) = Type_Iir_Fp64); -      case F is -         when Field_Fp_Value => -            Set_Fp_Value (N, V); -         when others => -            raise Internal_Error; -      end case; -   end Set_Iir_Fp64; -     function Get_Iir_Index32        (N : Iir; F : Fields_Enum) return Iir_Index32 is     begin @@ -6108,30 +6108,6 @@ package body Vhdl.Nodes_Meta is        end case;     end Set_Iir_Int32; -   function Get_Iir_Int64 -      (N : Iir; F : Fields_Enum) return Iir_Int64 is -   begin -      pragma Assert (Fields_Type (F) = Type_Iir_Int64); -      case F is -         when Field_Value => -            return Get_Value (N); -         when others => -            raise Internal_Error; -      end case; -   end Get_Iir_Int64; - -   procedure Set_Iir_Int64 -      (N : Iir; F : Fields_Enum; V: Iir_Int64) is -   begin -      pragma Assert (Fields_Type (F) = Type_Iir_Int64); -      case F is -         when Field_Value => -            Set_Value (N, V); -         when others => -            raise Internal_Error; -      end case; -   end Set_Iir_Int64; -     function Get_Iir_List        (N : Iir; F : Fields_Enum) return Iir_List is     begin @@ -6356,6 +6332,30 @@ package body Vhdl.Nodes_Meta is        end case;     end Set_Int32; +   function Get_Int64 +      (N : Iir; F : Fields_Enum) return Int64 is +   begin +      pragma Assert (Fields_Type (F) = Type_Int64); +      case F is +         when Field_Value => +            return Get_Value (N); +         when others => +            raise Internal_Error; +      end case; +   end Get_Int64; + +   procedure Set_Int64 +      (N : Iir; F : Fields_Enum; V: Int64) is +   begin +      pragma Assert (Fields_Type (F) = Type_Int64); +      case F is +         when Field_Value => +            Set_Value (N, V); +         when others => +            raise Internal_Error; +      end case; +   end Set_Int64; +     function Get_Name_Id        (N : Iir; F : Fields_Enum) return Name_Id is     begin diff --git a/src/vhdl/vhdl-nodes_meta.ads b/src/vhdl/vhdl-nodes_meta.ads index 38113509f..02f86439e 100644 --- a/src/vhdl/vhdl-nodes_meta.ads +++ b/src/vhdl/vhdl-nodes_meta.ads @@ -28,16 +28,15 @@ package Vhdl.Nodes_Meta is        Type_Date_State_Type,        Type_Date_Type,        Type_File_Checksum_Id, +      Type_Fp64,        Type_Iir,        Type_Iir_All_Sensitized,        Type_Iir_Constraint,        Type_Iir_Delay_Mechanism,        Type_Iir_Direction,        Type_Iir_Flist, -      Type_Iir_Fp64,        Type_Iir_Index32,        Type_Iir_Int32, -      Type_Iir_Int64,        Type_Iir_List,        Type_Iir_Mode,        Type_Iir_Predefined_Functions, @@ -45,6 +44,7 @@ package Vhdl.Nodes_Meta is        Type_Iir_Signal_Kind,        Type_Iir_Staticness,        Type_Int32, +      Type_Int64,        Type_Name_Id,        Type_Number_Base_Type,        Type_PSL_NFA, @@ -453,6 +453,11 @@ package Vhdl.Nodes_Meta is     procedure Set_File_Checksum_Id        (N : Iir; F : Fields_Enum; V: File_Checksum_Id); +   function Get_Fp64 +      (N : Iir; F : Fields_Enum) return Fp64; +   procedure Set_Fp64 +      (N : Iir; F : Fields_Enum; V: Fp64); +     function Get_Iir        (N : Iir; F : Fields_Enum) return Iir;     procedure Set_Iir @@ -483,11 +488,6 @@ package Vhdl.Nodes_Meta is     procedure Set_Iir_Flist        (N : Iir; F : Fields_Enum; V: Iir_Flist); -   function Get_Iir_Fp64 -      (N : Iir; F : Fields_Enum) return Iir_Fp64; -   procedure Set_Iir_Fp64 -      (N : Iir; F : Fields_Enum; V: Iir_Fp64); -     function Get_Iir_Index32        (N : Iir; F : Fields_Enum) return Iir_Index32;     procedure Set_Iir_Index32 @@ -498,11 +498,6 @@ package Vhdl.Nodes_Meta is     procedure Set_Iir_Int32        (N : Iir; F : Fields_Enum; V: Iir_Int32); -   function Get_Iir_Int64 -      (N : Iir; F : Fields_Enum) return Iir_Int64; -   procedure Set_Iir_Int64 -      (N : Iir; F : Fields_Enum; V: Iir_Int64); -     function Get_Iir_List        (N : Iir; F : Fields_Enum) return Iir_List;     procedure Set_Iir_List @@ -538,6 +533,11 @@ package Vhdl.Nodes_Meta is     procedure Set_Int32        (N : Iir; F : Fields_Enum; V: Int32); +   function Get_Int64 +      (N : Iir; F : Fields_Enum) return Int64; +   procedure Set_Int64 +      (N : Iir; F : Fields_Enum; V: Int64); +     function Get_Name_Id        (N : Iir; F : Fields_Enum) return Name_Id;     procedure Set_Name_Id diff --git a/src/vhdl/vhdl-parse.adb b/src/vhdl/vhdl-parse.adb index 63c67ec29..d21fd97ff 100644 --- a/src/vhdl/vhdl-parse.adb +++ b/src/vhdl/vhdl-parse.adb @@ -5461,7 +5461,7 @@ package body Vhdl.Parse is     --  postcond: likewise     --     --  Return an integer_literal or a physical_literal. -   function Parse_Integer_Literal (Val : Iir_Int64) return Iir +   function Parse_Integer_Literal (Val : Int64) return Iir     is        Res : Iir;     begin @@ -5509,8 +5509,8 @@ package body Vhdl.Parse is     function Parse_Primary return Iir_Expression     is        Res: Iir_Expression; -      Int: Iir_Int64; -      Fp: Iir_Fp64; +      Int: Int64; +      Fp: Fp64;        Loc: Location_Type;     begin        case Current_Token is diff --git a/src/vhdl/vhdl-scanner-scan_literal.adb b/src/vhdl/vhdl-scanner-scan_literal.adb index 9006587fc..b13f328e8 100644 --- a/src/vhdl/vhdl-scanner-scan_literal.adb +++ b/src/vhdl/vhdl-scanner-scan_literal.adb @@ -106,7 +106,7 @@ begin           --  a universal integer.           Current_Token := Tok_Integer;           --  No possible overflow. -         Current_Context.Int64 := Iir_Int64 (D); +         Current_Context.Lit_Int64 := Int64 (D);           return;        elsif D >= (Natural'Last / 10) - 1 then           --  Number may be greather than the natural limit. @@ -130,7 +130,7 @@ begin        if C not in '0' .. '9' then           Error_Msg_Scan ("a dot must be followed by a digit");           Current_Token := Tok_Real; -         Current_Context.Fp64 := Fp64 (To_Float_64 (False, Res, Base, 0)); +         Current_Context.Lit_Fp64 := Fp64 (To_Float_64 (False, Res, Base, 0));           return;        end if;        Scan_Integer; @@ -283,7 +283,7 @@ begin        -- a universal real.        Current_Token := Tok_Real; -      Current_Context.Fp64 := +      Current_Context.Lit_Fp64 :=          Fp64 (To_Float_64 (False, Res, Base, Exp - Scale));     else        -- a universal integer. @@ -298,10 +298,10 @@ begin           U : Unsigned_64;        begin           Bignum_To_Int (Res, U, Ok); -         if U > Unsigned_64 (Iir_Int64'Last) then +         if U > Unsigned_64 (Int64'Last) then              Ok := False;           else -            Current_Context.Int64 := Iir_Int64 (U); +            Current_Context.Lit_Int64 := Int64 (U);           end if;        end;        if not Ok then @@ -313,5 +313,5 @@ exception        Error_Msg_Scan ("literal overflow");        Current_Token := Tok_Integer; -      Current_Context.Int64 := 0; +      Current_Context.Lit_Int64 := 0;  end Scan_Literal; diff --git a/src/vhdl/vhdl-scanner.adb b/src/vhdl/vhdl-scanner.adb index 734b0c7ce..5c787d756 100644 --- a/src/vhdl/vhdl-scanner.adb +++ b/src/vhdl/vhdl-scanner.adb @@ -158,8 +158,8 @@ package body Vhdl.Scanner is        Str_Id : String8_Id;        Str_Len : Nat32;        Identifier: Name_Id; -      Int64 : Iir_Int64; -      Fp64 : Iir_Fp64; +      Lit_Int64 : Int64; +      Lit_Fp64 : Fp64;     end record;     pragma Suppress_Initialization (Scan_Context); @@ -212,8 +212,8 @@ package body Vhdl.Scanner is                                       Bit_Str_Sign => ' ',                                       Str_Id => Null_String8,                                       Str_Len => 0, -                                     Int64 => 0, -                                     Fp64 => 0.0); +                                     Lit_Int64 => 0, +                                     Lit_Fp64 => 0.0);     Source: File_Buffer_Acc renames Current_Context.Source;     Pos: Source_Ptr renames Current_Context.Pos; @@ -259,14 +259,14 @@ package body Vhdl.Scanner is        return Current_Context.Bit_Str_Sign;     end Get_Bit_String_Sign; -   function Current_Iir_Int64 return Iir_Int64 is +   function Current_Iir_Int64 return Int64 is     begin -      return Current_Context.Int64; +      return Current_Context.Lit_Int64;     end Current_Iir_Int64; -   function Current_Iir_Fp64 return Iir_Fp64 is +   function Current_Iir_Fp64 return Fp64 is     begin -      return Current_Context.Fp64; +      return Current_Context.Lit_Fp64;     end Current_Iir_Fp64;     function Get_Current_Source_File return Source_File_Entry is @@ -333,8 +333,8 @@ package body Vhdl.Scanner is                            Bit_Str_Sign => ' ',                            Str_Id => Null_String8,                            Str_Len => 0, -                          Int64 => -1, -                          Fp64 => 0.0); +                          Lit_Int64 => -1, +                          Lit_Fp64 => 0.0);        Current_Token := Tok_Invalid;     end Set_File; diff --git a/src/vhdl/vhdl-scanner.ads b/src/vhdl/vhdl-scanner.ads index 797e2f6e1..64f54bb3b 100644 --- a/src/vhdl/vhdl-scanner.ads +++ b/src/vhdl/vhdl-scanner.ads @@ -59,11 +59,11 @@ package Vhdl.Scanner is     -- When CURRENT_TOKEN is tok_integer, returns the value.     -- When CURRENT_TOKEN is tok_bit_string, returns the log of the base. -   function Current_Iir_Int64 return Iir_Int64; +   function Current_Iir_Int64 return Int64;     pragma Inline (Current_Iir_Int64);     -- When CURRENT_TOKEN is tok_real, it returns the value. -   function Current_Iir_Fp64 return Iir_Fp64; +   function Current_Iir_Fp64 return Fp64;     pragma Inline (Current_Iir_Fp64);     -- Advances the lexical analyser.  Put a new token into current_token. diff --git a/src/vhdl/vhdl-sem_expr.adb b/src/vhdl/vhdl-sem_expr.adb index 988ee5df4..8f8333cec 100644 --- a/src/vhdl/vhdl-sem_expr.adb +++ b/src/vhdl/vhdl-sem_expr.adb @@ -2068,7 +2068,7 @@ package body Vhdl.Sem_Expr is           --  The type of the context is constrained.           Index_Type := Get_Index_Type (Lit_Type, 0);           if Get_Type_Staticness (Index_Type) = Locally then -            if Eval_Discrete_Type_Length (Index_Type) /= Iir_Int64 (Len) then +            if Eval_Discrete_Type_Length (Index_Type) /= Int64 (Len) then                 Error_Msg_Sem (+Lit, "string length does not match that of %n",                                +Index_Type);              end if; @@ -2081,7 +2081,7 @@ package body Vhdl.Sem_Expr is           -- Context type is not constained.  Set type of the string literal,           -- according to LRM93 7.3.2.2.           N_Type := Create_Unidim_Array_By_Length -           (Lit_Base_Type, Iir_Int64 (Len), Lit); +           (Lit_Base_Type, Int64 (Len), Lit);           Set_Type (Lit, N_Type);           Set_Literal_Subtype (Lit, N_Type);        end if; @@ -2206,10 +2206,10 @@ package body Vhdl.Sem_Expr is        --  Type of the element of SEL.        Sel_El_Type : Iir;        --  Number of literals in the element type. -      Sel_El_Length : Iir_Int64; +      Sel_El_Length : Int64;        --  Length of SEL (number of characters in SEL). -      Sel_Length : Iir_Int64; +      Sel_Length : Int64;        --  True if length of a choice mismatches        Has_Length_Error : Boolean := False; @@ -2221,7 +2221,7 @@ package body Vhdl.Sem_Expr is        procedure Sem_Simple_Choice (Choice : Iir)        is           Expr : Iir; -         Choice_Len : Iir_Int64; +         Choice_Len : Int64;        begin           --  LRM93 8.8           --  In such case, each choice appearing in any of the case statement @@ -2364,7 +2364,7 @@ package body Vhdl.Sem_Expr is        --  easily overflow.        if Info.Others_Choice = Null_Iir then           declare -            Nbr : Iir_Int64 := Iir_Int64 (Info.Nbr_Choices); +            Nbr : Int64 := Int64 (Info.Nbr_Choices);           begin              for I in 1 .. Sel_Length loop                 Nbr := Nbr / Sel_El_Length; @@ -2537,7 +2537,7 @@ package body Vhdl.Sem_Expr is           --  Emit an error message for absence of choices in position L to H           --  of index type BT at location LOC.           procedure Error_No_Choice (Bt : Iir; -                                    L, H : Iir_Int64; +                                    L, H : Int64;                                      Loc : Location_Type) is           begin              if L = H then @@ -2551,9 +2551,9 @@ package body Vhdl.Sem_Expr is           --  Lowest and highest bounds.           Lb, Hb : Iir; -         Pos : Iir_Int64; -         Pos_Max : Iir_Int64; -         E_Pos : Iir_Int64; +         Pos : Int64; +         Pos_Max : Int64; +         E_Pos : Int64;           Choice : Iir;           Need_Others : Boolean; @@ -2654,7 +2654,7 @@ package body Vhdl.Sem_Expr is                                  Is_Case_Stmt : Boolean)     is        --  Number of positionnal choice. -      Nbr_Pos : Iir_Int64; +      Nbr_Pos : Int64;        --  Number of named choices.        Nbr_Named : Natural; @@ -2664,7 +2664,7 @@ package body Vhdl.Sem_Expr is        Has_Error : Boolean; -      Pos_Max : Iir_Int64; +      Pos_Max : Int64;        El : Iir;        Prev_El : Iir; @@ -3593,7 +3593,7 @@ package body Vhdl.Sem_Expr is                and then Len_Staticness = Locally              then                 Info.Index_Subtype := Create_Range_Subtype_By_Length -                 (Index_Type, Iir_Int64 (Len), Get_Location (Aggr)); +                 (Index_Type, Int64 (Len), Get_Location (Aggr));              end if;           else              --  Create an index subtype. @@ -3698,7 +3698,7 @@ package body Vhdl.Sem_Expr is                 Error_Msg_Sem (+Aggr, "subaggregate bounds mismatch");              else                 if Eval_Discrete_Type_Length (Info.Index_Subtype) -                 /= Iir_Int64 (Len) +                 /= Int64 (Len)                 then                    Error_Msg_Sem (+Aggr, "subaggregate length mismatch");                 end if; @@ -3795,7 +3795,7 @@ package body Vhdl.Sem_Expr is              --  Compute ratio of elements vs size of the aggregate to determine              --  if the aggregate can be expanded.              declare -               Size : Iir_Int64; +               Size : Int64;              begin                 Size := 1;                 for I in Infos'Range loop diff --git a/src/vhdl/vhdl-sem_inst.adb b/src/vhdl/vhdl-sem_inst.adb index 2fa563987..0611fc8f1 100644 --- a/src/vhdl/vhdl-sem_inst.adb +++ b/src/vhdl/vhdl-sem_inst.adb @@ -352,8 +352,8 @@ package body Vhdl.Sem_Inst is              Set_Iir_Mode (Res, F, Get_Iir_Mode (N, F));           when Type_Iir_Index32 =>              Set_Iir_Index32 (Res, F, Get_Iir_Index32 (N, F)); -         when Type_Iir_Int64 => -            Set_Iir_Int64 (Res, F, Get_Iir_Int64 (N, F)); +         when Type_Int64 => +            Set_Int64 (Res, F, Get_Int64 (N, F));           when Type_Boolean =>              Set_Boolean (Res, F, Get_Boolean (N, F));           when Type_Iir_Staticness => @@ -377,8 +377,8 @@ package body Vhdl.Sem_Inst is              Set_Iir_Int32 (Res, F, Get_Iir_Int32 (N, F));           when Type_Int32 =>              Set_Int32 (Res, F, Get_Int32 (N, F)); -         when Type_Iir_Fp64 => -            Set_Iir_Fp64 (Res, F, Get_Iir_Fp64 (N, F)); +         when Type_Fp64 => +            Set_Fp64 (Res, F, Get_Fp64 (N, F));           when Type_Token_Type =>              Set_Token_Type (Res, F, Get_Token_Type (N, F));           when Type_Name_Id => diff --git a/src/vhdl/vhdl-sem_names.adb b/src/vhdl/vhdl-sem_names.adb index 1e104fbff..ac3ec321a 100644 --- a/src/vhdl/vhdl-sem_names.adb +++ b/src/vhdl/vhdl-sem_names.adb @@ -1031,7 +1031,7 @@ package body Vhdl.Sem_Names is        end if;        declare -         Dim : Iir_Int64; +         Dim : Int64;           Indexes_List : constant Iir_Flist :=             Get_Index_Subtype_List (Prefix_Type);        begin @@ -1042,7 +1042,7 @@ package body Vhdl.Sem_Names is           else              Dim := Get_Value (Parameter);           end if; -         if Dim < 1 or else Dim > Iir_Int64 (Get_Nbr_Elements (Indexes_List)) +         if Dim < 1 or else Dim > Int64 (Get_Nbr_Elements (Indexes_List))           then              Error_Msg_Sem (+Attr, "parameter value out of bound");              Dim := 1; @@ -3633,7 +3633,7 @@ package body Vhdl.Sem_Names is                 Set_Simple_Name_Identifier (Res, Id);                 Attr_Type := Create_Unidim_Array_By_Length                   (String_Type_Definition, -                  Iir_Int64 (Name_Table.Get_Name_Length (Id)), +                  Int64 (Name_Table.Get_Name_Length (Id)),                    Attr);                 Set_Simple_Name_Subtype (Res, Attr_Type);                 Set_Expr_Staticness (Res, Locally); diff --git a/src/vhdl/vhdl-sem_stmts.adb b/src/vhdl/vhdl-sem_stmts.adb index 8248aee36..0d30dda9a 100644 --- a/src/vhdl/vhdl-sem_stmts.adb +++ b/src/vhdl/vhdl-sem_stmts.adb @@ -477,7 +477,7 @@ package body Vhdl.Sem_Stmts is     is        Expr: Iir;        We: Iir_Waveform_Element; -      Time, Last_Time : Iir_Int64; +      Time, Last_Time : Int64;     begin        if Get_Kind (Waveform_Chain) = Iir_Kind_Unaffected_Waveform then           --  Unaffected. diff --git a/src/vhdl/vhdl-sem_types.adb b/src/vhdl/vhdl-sem_types.adb index 1ecf718f7..aa243bb23 100644 --- a/src/vhdl/vhdl-sem_types.adb +++ b/src/vhdl/vhdl-sem_types.adb @@ -318,7 +318,7 @@ package body Vhdl.Sem_Types is        return Res;     end Range_Expr_To_Type_Definition; -   function Create_Physical_Literal (Val : Iir_Int64; Unit : Iir) return Iir +   function Create_Physical_Literal (Val : Int64; Unit : Iir) return Iir     is        Lit : Iir;     begin diff --git a/src/vhdl/vhdl-std_package.adb b/src/vhdl/vhdl-std_package.adb index d112b0daf..cb6e3809d 100644 --- a/src/vhdl/vhdl-std_package.adb +++ b/src/vhdl/vhdl-std_package.adb @@ -26,7 +26,7 @@ with Vhdl.Sem_Utils;  with Vhdl.Nodes_Utils; use Vhdl.Nodes_Utils;  package body Vhdl.Std_Package is -   type Bound_Array is array (Boolean) of Iir_Int64; +   type Bound_Array is array (Boolean) of Int64;     Low_Bound : constant Bound_Array := (False => -(2 ** 31),                                          True => -(2 ** 63));     High_Bound : constant Bound_Array := (False => (2 ** 31) - 1, @@ -120,7 +120,7 @@ package body Vhdl.Std_Package is           Set_Visible_Flag (Decl, True);        end Set_Std_Identifier; -      function Create_Std_Integer (Val : Iir_Int64; Lit_Type : Iir) +      function Create_Std_Integer (Val : Int64; Lit_Type : Iir)          return Iir_Integer_Literal        is           Res : Iir_Integer_Literal; @@ -132,7 +132,7 @@ package body Vhdl.Std_Package is           return Res;        end Create_Std_Integer; -      function Create_Std_Fp (Val : Iir_Fp64; Lit_Type : Iir) +      function Create_Std_Fp (Val : Fp64; Lit_Type : Iir)          return Iir_Floating_Point_Literal        is           Res : Iir_Floating_Point_Literal; @@ -650,8 +650,8 @@ package body Vhdl.Std_Package is           Set_Base_Type (Universal_Real_Subtype_Definition,                          Universal_Real_Type_Definition);           Constraint := Create_Std_Range_Expr -           (Create_Std_Fp (Iir_Fp64'First, Universal_Real_Type_Definition), -            Create_Std_Fp (Iir_Fp64'Last, Universal_Real_Type_Definition), +           (Create_Std_Fp (Fp64'First, Universal_Real_Type_Definition), +            Create_Std_Fp (Fp64'Last, Universal_Real_Type_Definition),              Universal_Real_Type_Definition);           Set_Range_Constraint (Universal_Real_Subtype_Definition, Constraint);           Set_Type_Staticness (Universal_Real_Subtype_Definition, Locally); @@ -764,8 +764,8 @@ package body Vhdl.Std_Package is             Create_Std_Iir (Iir_Kind_Floating_Subtype_Definition);           Set_Base_Type (Real_Subtype_Definition, Real_Type_Definition);           Constraint := Create_Std_Range_Expr -           (Create_Std_Fp (Iir_Fp64'First, Universal_Real_Type_Definition), -            Create_Std_Fp (Iir_Fp64'Last, Universal_Real_Type_Definition), +           (Create_Std_Fp (Fp64'First, Universal_Real_Type_Definition), +            Create_Std_Fp (Fp64'Last, Universal_Real_Type_Definition),               Universal_Real_Type_Definition);           Set_Range_Constraint (Real_Subtype_Definition, Constraint);           Set_Type_Staticness (Real_Subtype_Definition, Locally); @@ -792,7 +792,7 @@ package body Vhdl.Std_Package is           Time_Staticness : Iir_Staticness;           First_Unit, Last_Unit : Iir_Unit_Declaration; -         function Create_Std_Phys_Lit_Wo_Unit (Value : Iir_Int64; Unit : Iir) +         function Create_Std_Phys_Lit_Wo_Unit (Value : Int64; Unit : Iir)                                        return Iir_Physical_Int_Literal           is              Lit: Iir_Physical_Int_Literal; @@ -806,7 +806,7 @@ package body Vhdl.Std_Package is              return Lit;           end Create_Std_Phys_Lit_Wo_Unit; -         function Create_Std_Phys_Lit (Value : Iir_Int64; Unit : Iir) +         function Create_Std_Phys_Lit (Value : Int64; Unit : Iir)                                        return Iir_Physical_Int_Literal           is              Lit: Iir_Physical_Int_Literal; @@ -820,7 +820,7 @@ package body Vhdl.Std_Package is           end Create_Std_Phys_Lit;           procedure Create_Unit (Unit : out Iir_Unit_Declaration; -                                Multiplier_Value : Iir_Int64; +                                Multiplier_Value : Int64;                                  Multiplier : in Iir_Unit_Declaration;                                  Name : Name_Id)           is diff --git a/src/vhdl/vhdl-types.ads b/src/vhdl/vhdl-types.ads index 18b9b2ccb..b9fd673b5 100644 --- a/src/vhdl/vhdl-types.ads +++ b/src/vhdl/vhdl-types.ads @@ -15,6 +15,7 @@  --  along with GHDL; see the file COPYING.  If not, write to the Free  --  Software Foundation, 59 Temple Place - Suite 330, Boston, MA  --  02111-1307, USA. +  with Vhdl.Nodes_Priv;  package Vhdl.Types is  | 
