diff options
author | Tristan Gingold | 2014-07-17 20:34:57 +0200 |
---|---|---|
committer | Tristan Gingold | 2014-07-17 20:34:57 +0200 |
commit | caba1d1b21d9756ede50f40d53fbc816d3b84320 (patch) | |
tree | ee0b8459472a8e7aba4ab7465bc46c74be56cd33 /translate | |
parent | 1bc00453a725214de4964add2b7f8423d1a5d2da (diff) | |
download | ghdl-caba1d1b21d9756ede50f40d53fbc816d3b84320.tar.gz ghdl-caba1d1b21d9756ede50f40d53fbc816d3b84320.tar.bz2 ghdl-caba1d1b21d9756ede50f40d53fbc816d3b84320.zip |
vhdl 2008: visibility, more implicit subprograms, alias...
Use Type_Definition in type_declarator.
Diffstat (limited to 'translate')
-rw-r--r-- | translate/grt/grt-cbinding.c | 13 | ||||
-rw-r--r-- | translate/grt/grt-files.adb | 23 | ||||
-rw-r--r-- | translate/grt/grt-files.ads | 4 | ||||
-rw-r--r-- | translate/grt/grt-vstrings.adb | 81 | ||||
-rw-r--r-- | translate/grt/grt-vstrings.ads | 33 | ||||
-rw-r--r-- | translate/trans_decls.ads | 2 | ||||
-rw-r--r-- | translate/translation.adb | 134 |
7 files changed, 222 insertions, 68 deletions
diff --git a/translate/grt/grt-cbinding.c b/translate/grt/grt-cbinding.c index a913a44..4da06c5 100644 --- a/translate/grt/grt-cbinding.c +++ b/translate/grt/grt-cbinding.c @@ -46,6 +46,19 @@ __ghdl_snprintf_g (char *buf, unsigned int len, double val) } void +__ghdl_snprintf_nf (char *buf, unsigned int len, int ndigits, double val) +{ + snprintf (buf, len, "%.*f", ndigits, val); +} + +void +__ghdl_snprintf_fmtf (const char *buf, unsigned int len, + const char *format, double v) +{ + snprintf (buf, len, format, v); +} + +void __ghdl_fprintf_g (FILE *stream, double val) { fprintf (stream, "%g", val); diff --git a/translate/grt/grt-files.adb b/translate/grt/grt-files.adb index 1688a26..30d51cf 100644 --- a/translate/grt/grt-files.adb +++ b/translate/grt/grt-files.adb @@ -32,6 +32,8 @@ pragma Elaborate_All (Grt.Table); package body Grt.Files is subtype C_Files is Grt.Stdio.FILEs; + Auto_Flush : constant Boolean := False; + type File_Entry_Type is record Stream : C_Files; Signature : Ghdl_C_String; @@ -307,7 +309,9 @@ package body Grt.Files is -- FIXME: check r -- Write '\n'. R1 := fputc (Character'Pos (Nl), Res); - R1 := fflush (Res); + if Auto_Flush then + fflush (Res); + end if; end Ghdl_Text_Write; procedure Ghdl_Write_Scalar (File : Ghdl_File_Index; @@ -316,8 +320,6 @@ package body Grt.Files is is Res : C_Files; R : size_t; - R1 : int; - pragma Unreferenced (R1); begin Res := Get_File (File); Check_File_Mode (File, False); @@ -329,7 +331,9 @@ package body Grt.Files is if R /= 1 then Error ("write_scalar failed"); end if; - R1 := fflush (Res); + if Auto_Flush then + fflush (Res); + end if; end Ghdl_Write_Scalar; procedure Ghdl_Read_Scalar (File : Ghdl_File_Index; @@ -433,5 +437,16 @@ package body Grt.Files is begin File_Close (File, False); end Ghdl_File_Close; + + procedure Ghdl_File_Flush (File : Ghdl_File_Index) + is + Stream : C_Files; + begin + Stream := Get_File (File); + if Stream = NULL_Stream then + return; + end if; + fflush (Stream); + end Ghdl_File_Flush; end Grt.Files; diff --git a/translate/grt/grt-files.ads b/translate/grt/grt-files.ads index 2d4b105..14f9984 100644 --- a/translate/grt/grt-files.ads +++ b/translate/grt/grt-files.ads @@ -89,6 +89,8 @@ package Grt.Files is procedure Ghdl_Text_File_Close (File : Ghdl_File_Index); procedure Ghdl_File_Close (File : Ghdl_File_Index); + + procedure Ghdl_File_Flush (File : Ghdl_File_Index); private pragma Export (Ada, Ghdl_File_Endfile, "__ghdl_file_endfile"); @@ -116,4 +118,6 @@ private pragma Export (C, Ghdl_Text_File_Close, "__ghdl_text_file_close"); pragma Export (C, Ghdl_File_Close, "__ghdl_file_close"); + + pragma Export (C, Ghdl_File_Flush, "__ghdl_file_flush"); end Grt.Files; diff --git a/translate/grt/grt-vstrings.adb b/translate/grt/grt-vstrings.adb index 005bc89..30c58ab 100644 --- a/translate/grt/grt-vstrings.adb +++ b/translate/grt/grt-vstrings.adb @@ -338,4 +338,85 @@ package body Grt.Vstrings is Last := P - 1; end To_String; + procedure To_String (Str : out String_Real_Digits; + Last : out Natural; + N : Ghdl_F64; + Nbr_Digits : Ghdl_I32) + is + procedure Snprintf_Nf (Str : in out String; + Len : Natural; + Ndigits : Ghdl_I32; + V : Ghdl_F64); + pragma Import (C, Snprintf_Nf, "__ghdl_snprintf_nf"); + begin + Snprintf_Nf (Str, Str'Length, Nbr_Digits, N); + Last := strlen (To_Ghdl_C_String (Str'Address)); + end To_String; + + procedure To_String (Str : out String_Real_Digits; + Last : out Natural; + N : Ghdl_F64; + Format : Ghdl_C_String) + is + procedure Snprintf_Fmtf (Str : in out String; + Len : Natural; + Format : Ghdl_C_String; + V : Ghdl_F64); + pragma Import (C, Snprintf_Fmtf, "__ghdl_snprintf_fmtf"); + begin + -- FIXME: check format ('%', f/g/e/a) + Snprintf_Fmtf (Str, Str'Length, Format, N); + Last := strlen (To_Ghdl_C_String (Str'Address)); + end To_String; + + procedure To_String (Str : out String_Time_Unit; + First : out Natural; + Value : Ghdl_I64; + Unit : Ghdl_I64) + is + V, U : Ghdl_I64; + D : Natural; + P : Natural := Str'Last; + Has_Digits : Boolean; + begin + -- Always work on negative values. + if Value > 0 then + V := -Value; + else + V := Value; + end if; + + Has_Digits := False; + U := Unit; + loop + if U = 1 then + if Has_Digits then + Str (P) := '.'; + P := P - 1; + else + Has_Digits := True; + end if; + end if; + + D := Natural (-(V rem 10)); + if D /= 0 or else Has_Digits then + Str (P) := Character'Val (48 + D); + P := P - 1; + Has_Digits := True; + end if; + U := U / 10; + V := V / 10; + exit when V = 0 and then U = 0; + end loop; + if not Has_Digits then + Str (P) := '0'; + else + P := P + 1; + end if; + if Value < 0 then + P := P - 1; + Str (P) := '-'; + end if; + First := P; + end To_String; end Grt.Vstrings; diff --git a/translate/grt/grt-vstrings.ads b/translate/grt/grt-vstrings.ads index 0f5938e..94967bb 100644 --- a/translate/grt/grt-vstrings.ads +++ b/translate/grt/grt-vstrings.ads @@ -77,18 +77,49 @@ package Grt.Vstrings is -- Copy RSTR to STR, and return length of the string to LEN. procedure Copy (Rstr : Rstring; Str : in out String; Len : out Natural); - -- FIRST is the index of the first character. + -- Write the image of N into STR padded to the right. FIRST is the index + -- of the first character, so the result is in STR (FIRST .. STR'last). -- Requires at least 11 characters. procedure To_String (Str : out String; First : out Natural; N : Ghdl_I32); + -- Write the image of N into STR padded to the right. FIRST is the index + -- of the first character, so the result is in STR (FIRST .. STR'last). -- Requires at least 21 characters. procedure To_String (Str : out String; First : out Natural; N : Ghdl_I64); + -- Write the image of N into STR. LAST is the index of the last character, + -- so the result is in STR (STR'first .. LAST). -- Requires at least 24 characters. -- Sign (1) + digit (1) + dot (1) + digits (15) + exp (1) + sign (1) -- + exp_digits (4) -> 24. procedure To_String (Str : out String; Last : out Natural; N : Ghdl_F64); + subtype String_Real_Digits is String (1 .. 128); + + -- Write the image of N into STR using NBR_DIGITS digits after the decimal + -- point. + procedure To_String (Str : out String_Real_Digits; + Last : out Natural; + N : Ghdl_F64; + Nbr_Digits : Ghdl_I32); + + subtype String_Real_Format is String (1 .. 128); + + -- Write the image of N into STR using NBR_DIGITS digits after the decimal + -- point. + procedure To_String (Str : out String_Real_Digits; + Last : out Natural; + N : Ghdl_F64; + Format : Ghdl_C_String); + + -- Write the image of VALUE to STR using UNIT as unit. The output is in + -- STR (FIRST .. STR'last). + subtype String_Time_Unit is String (1 .. 22); + procedure To_String (Str : out String_Time_Unit; + First : out Natural; + Value : Ghdl_I64; + Unit : Ghdl_I64); + private subtype Fat_String is String (Positive); type Fat_String_Acc is access Fat_String; diff --git a/translate/trans_decls.ads b/translate/trans_decls.ads index f5aab5c..9226c58 100644 --- a/translate/trans_decls.ads +++ b/translate/trans_decls.ads @@ -26,8 +26,6 @@ package Trans_Decls is Ghdl_Psl_Cover_Failed : O_Dnode; -- Procedure for report statement. Ghdl_Report : O_Dnode; - -- Ortho node for default report message. - Ghdl_Assert_Default_Report : O_Dnode; -- Register a process. Ghdl_Process_Register : O_Dnode; diff --git a/translate/translation.adb b/translate/translation.adb index 38f4bdf..a80e40e 100644 --- a/translate/translation.adb +++ b/translate/translation.adb @@ -1978,7 +1978,13 @@ package body Translation is -- Generate an error if VALUE (computed from EXPR which may be NULL_IIR -- if not from a tree) is not in range specified by ATYPE. - procedure Check_Range (Value : O_Dnode; Expr : Iir; Atype : Iir); + procedure Check_Range + (Value : O_Dnode; Expr : Iir; Atype : Iir; Loc : Iir); + + -- Insert a scalar check for VALUE of type ATYPE. EXPR may be NULL_IIR. + function Insert_Scalar_Check + (Value : O_Enode; Expr : Iir; Atype : Iir; Loc : Iir) + return O_Enode; -- The base type of EXPR and the base type of ATYPE must be the same. -- If the type is a scalar type, and if a range check is needed, this @@ -5101,7 +5107,7 @@ package body Translation is raise Internal_Error; when Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration => - Atype := Get_Type (Decl); + Atype := Get_Type_Definition (Decl); case Iir_Kinds_Type_And_Subtype_Definition (Get_Kind (Atype)) is when Iir_Kinds_Scalar_Type_Definition => @@ -7156,7 +7162,7 @@ package body Translation is -- types not used before the full type declaration). return; end if; - Ctype := Get_Type (Get_Type_Declarator (Def)); + Ctype := Get_Type_Of_Type_Mark (Get_Type_Declarator (Def)); Info := Add_Info (Ctype, Kind_Incomplete_Type); Info.Incomplete_Type := Def; Info.Incomplete_Array := null; @@ -8050,7 +8056,7 @@ package body Translation is Tinfo : Type_Info_Acc; Id : Name_Id; begin - Def := Get_Type (Decl); + Def := Get_Type_Definition (Decl); if Get_Kind (Def) in Iir_Kinds_Subtype_Definition then -- Also elaborate the base type, iff DEF and its BASE_TYPE have @@ -8203,7 +8209,7 @@ package body Translation is procedure Elab_Type_Declaration (Decl : Iir) is begin - Elab_Type_Definition (Get_Type (Decl)); + Elab_Type_Definition (Get_Type_Definition (Decl)); end Elab_Type_Declaration; procedure Elab_Subtype_Declaration (Decl : Iir_Subtype_Declaration) @@ -8971,9 +8977,8 @@ package body Translation is function Need_Range_Check (Expr : Iir; Atype : Iir) return Boolean is - Info : Type_Info_Acc; + Info : constant Type_Info_Acc := Get_Info (Atype); begin - Info := Get_Info (Atype); if Info.T.Nocheck_Low and Info.T.Nocheck_Hi then return False; end if; @@ -8983,7 +8988,9 @@ package body Translation is return True; end Need_Range_Check; - procedure Check_Range (Value : O_Dnode; Expr : Iir; Atype : Iir) is + procedure Check_Range + (Value : O_Dnode; Expr : Iir; Atype : Iir; Loc : Iir) + is If_Blk : O_If_Block; begin if not Need_Range_Check (Expr, Atype) then @@ -8995,32 +9002,40 @@ package body Translation is and then Get_Type_Staticness (Atype) = Locally then if not Eval_Is_In_Bound (Eval_Static_Expr (Expr), Atype) then - Chap6.Gen_Bound_Error (Expr); + Chap6.Gen_Bound_Error (Loc); end if; else Open_Temp; Start_If_Stmt (If_Blk, Not_In_Range (Value, Atype)); - Chap6.Gen_Bound_Error (Expr); + Chap6.Gen_Bound_Error (Loc); Finish_If_Stmt (If_Blk); Close_Temp; end if; end Check_Range; + function Insert_Scalar_Check + (Value : O_Enode; Expr : Iir; Atype : Iir; Loc : Iir) + return O_Enode + is + Var : O_Dnode; + begin + Var := Create_Temp_Init + (Get_Ortho_Type (Get_Base_Type (Atype), Mode_Value), Value); + Check_Range (Var, Expr, Atype, Loc); + return New_Obj_Value (Var); + end Insert_Scalar_Check; + function Maybe_Insert_Scalar_Check (Value : O_Enode; Expr : Iir; Atype : Iir) return O_Enode is Expr_Type : constant Iir := Get_Type (Expr); - Var : O_Dnode; begin -- pragma Assert (Base_Type = Get_Base_Type (Atype)); if Get_Kind (Expr_Type) in Iir_Kinds_Scalar_Type_Definition and then Need_Range_Check (Expr, Atype) then - Var := Create_Temp_Init - (Get_Ortho_Type (Get_Base_Type (Atype), Mode_Value), Value); - Check_Range (Var, Expr, Atype); - return New_Obj_Value (Var); + return Insert_Scalar_Check (Value, Expr, Atype, Expr); else return Value; end if; @@ -9279,7 +9294,7 @@ package body Translation is New_Dyadic_Op (Op, Left_Bound, Diff)); -- Check the right bounds is inside the bounds of the index type. - Chap3.Check_Range (Var_Right, Null_Iir, Index_Type); + Chap3.Check_Range (Var_Right, Null_Iir, Index_Type, Null_Iir); New_Assign_Stmt (New_Selected_Acc_Value (New_Obj (Range_Ptr), Iinfo.T.Range_Right), New_Obj_Value (Var_Right)); @@ -10614,7 +10629,7 @@ package body Translation is procedure Translate_Type_Declaration (Decl : Iir) is begin - Chap3.Translate_Named_Type_Definition (Get_Type (Decl), + Chap3.Translate_Named_Type_Definition (Get_Type_Definition (Decl), Get_Identifier (Decl)); end Translate_Type_Declaration; @@ -10625,7 +10640,7 @@ package body Translation is begin Push_Identifier_Prefix (Mark, Get_Identifier (Decl)); Push_Identifier_Prefix (Mark1, "BT"); - Chap3.Translate_Type_Definition (Get_Type (Decl)); + Chap3.Translate_Type_Definition (Get_Type_Definition (Decl)); Pop_Identifier_Prefix (Mark1); Pop_Identifier_Prefix (Mark); end Translate_Anonymous_Type_Declaration; @@ -10642,7 +10657,7 @@ package body Translation is Mark : Id_Mark_Type; begin Push_Identifier_Prefix (Mark, Get_Identifier (Decl)); - Chap3.Translate_Bool_Type_Definition (Get_Type (Decl)); + Chap3.Translate_Bool_Type_Definition (Get_Type_Definition (Decl)); Pop_Identifier_Prefix (Mark); end Translate_Bool_Type_Declaration; @@ -15378,25 +15393,13 @@ package body Translation is procedure Translate_Assign (Target : Mnode; Val : O_Enode; Expr : Iir; Target_Type : Iir) is - T_Info : Type_Info_Acc; + T_Info : constant Type_Info_Acc := Get_Info (Target_Type); begin - T_Info := Get_Info (Target_Type); case T_Info.Type_Mode is when Type_Mode_Scalar => - if not Chap3.Need_Range_Check (Expr, Target_Type) then - New_Assign_Stmt (M2Lv (Target), Val); - else - declare - V : O_Dnode; - begin - Open_Temp; - V := Create_Temp_Init (T_Info.Ortho_Type (Mode_Value), - Val); - Chap3.Check_Range (V, Expr, Target_Type); - New_Assign_Stmt (M2Lv (Target), New_Obj_Value (V)); - Close_Temp; - end; - end if; + New_Assign_Stmt + (M2Lv (Target), + Chap3.Maybe_Insert_Scalar_Check (Val, Expr, Target_Type)); when Type_Mode_Acc | Type_Mode_File => New_Assign_Stmt (M2Lv (Target), Val); @@ -16229,14 +16232,17 @@ package body Translation is (Expr : O_Enode; Expr_Type : Iir; Res_Type : Iir; Loc : Iir) return O_Enode is - Res_Info : Type_Info_Acc; + Res_Info : constant Type_Info_Acc := Get_Info (Res_Type); + Res : O_Enode; begin - Res_Info := Get_Info (Res_Type); case Get_Kind (Res_Type) is when Iir_Kinds_Scalar_Type_Definition => - -- If res_type = expr_type, do not convert. - -- FIXME: range check ? - return New_Convert_Ov (Expr, Res_Info.Ortho_Type (Mode_Value)); + Res := New_Convert_Ov (Expr, Res_Info.Ortho_Type (Mode_Value)); + if Chap3.Need_Range_Check (Null_Iir, Res_Type) then + Res := Chap3.Insert_Scalar_Check + (Res, Null_Iir, Res_Type, Loc); + end if; + return Res; when Iir_Kinds_Array_Type_Definition => if Get_Constraint_State (Res_Type) = Fully_Constrained then return Translate_Array_Subtype_Conversion @@ -17784,7 +17790,7 @@ package body Translation is Finish_If_Stmt (If_Blk); -- Check the right bounds is inside the bounds of the -- index type. - Chap3.Check_Range (Var_Right, Null_Iir, Index_Type); + Chap3.Check_Range (Var_Right, Null_Iir, Index_Type, Subprg); New_Assign_Stmt (M2Lv (Chap3.Range_To_Right (Chap3.Bounds_To_Range (V_Bounds, Arr_Type, 1))), @@ -18739,10 +18745,6 @@ package body Translation is when Iir_Predefined_Now_Function => null; - when Iir_Predefined_Array_To_String => - -- Not yet supported! - null; - when others => Error_Kind ("translate_implicit_subprogram (" & Iir_Predefined_Functions'Image (Kind) & ")", @@ -18809,7 +18811,7 @@ package body Translation is V := Create_Temp (Ret_Info.Ortho_Type (Mode_Value)); New_Assign_Stmt (New_Obj (V), R); Stack2_Release; - Chap3.Check_Range (V, Expr, Ret_Type); + Chap3.Check_Range (V, Expr, Ret_Type, Expr); Gen_Return_Value (New_Obj_Value (V)); else Gen_Return_Value (R); @@ -20379,7 +20381,9 @@ package body Translation is Last_Individual : Natural; Ptr : O_Lnode; In_Conv : Iir; + In_Expr : Iir; Out_Conv : Iir; + Out_Expr : Iir; Formal_Object_Kind : Object_Kind_Type; Bounds : O_Enode; Obj : Iir; @@ -20463,10 +20467,15 @@ package body Translation is Ptr := New_Selected_Element (New_Obj (Res), Formal_Info.Interface_Field); Param := Lv2M (Ptr, Ftype_Info, Mode_Value); + if In_Conv /= Null_Iir then + In_Expr := In_Conv; + else + In_Expr := Act; + end if; Chap7.Translate_Assign (Param, Do_Conversion (In_Conv, Act, Params (Pos)), - In_Conv, --FIXME: may be null. + In_Expr, Formal_Type); end if; elsif Ftype_Info.Type_Mode not in Type_Mode_By_Value then @@ -20635,13 +20644,18 @@ package body Translation is if Formal_Info.Interface_Field /= O_Fnode_Null then -- OUT parameters. Out_Conv := Get_Out_Conversion (El); + if Out_Conv = Null_Iir then + Out_Expr := Formal; + else + Out_Expr := Out_Conv; + end if; Ptr := New_Selected_Element (New_Obj (Res), Formal_Info.Interface_Field); Param := Lv2M (Ptr, Ftype_Info, Mode_Value); Chap7.Translate_Assign (Params (Pos), Do_Conversion (Out_Conv, Formal, Param), - Out_Conv, --FIXME: use real expr. + Out_Expr, Get_Type (Get_Actual (El))); elsif Base_Formal /= Formal then -- By individual. @@ -24484,7 +24498,7 @@ package body Translation is case Get_Kind (Prefix) is when Iir_Kind_Type_Declaration | Iir_Kind_Subtype_Declaration => - Arr := T2M (Get_Type (Prefix), Mode_Value); + Arr := T2M (Get_Type_Of_Type_Mark (Prefix), Mode_Value); when others => Arr := Chap6.Translate_Name (Prefix); end case; @@ -24702,7 +24716,8 @@ package body Translation is end case; New_Assign_Stmt (New_Obj (Res_Var), New_Convert_Ov (Val, Res_Type)); - Chap3.Check_Range (Res_Var, Attr, Get_Type (Get_Prefix (Attr))); + Chap3.Check_Range + (Res_Var, Attr, Get_Type_Of_Type_Mark (Get_Prefix (Attr)), Attr); return New_Obj_Value (Res_Var); end Translate_Val_Attribute; @@ -24718,7 +24733,7 @@ package body Translation is (New_Obj (T), New_Convert_Ov (Chap7.Translate_Expression (Get_Parameter (Attr)), Ttype)); - Chap3.Check_Range (T, Attr, Res_Type); + Chap3.Check_Range (T, Attr, Res_Type, Attr); return New_Obj_Value (T); end Translate_Pos_Attribute; @@ -25231,7 +25246,8 @@ package body Translation is Assoc : O_Assoc_List; Conv : O_Tnode; begin - Prefix_Type := Get_Base_Type (Get_Type (Get_Prefix (Attr))); + Prefix_Type := + Get_Base_Type (Get_Type_Of_Type_Mark (Get_Prefix (Attr))); Pinfo := Get_Info (Prefix_Type); Res := Create_Temp (Std_String_Node); Create_Temp_Stack2_Mark; @@ -25293,7 +25309,8 @@ package body Translation is Subprg : O_Dnode; Assoc : O_Assoc_List; begin - Prefix_Type := Get_Base_Type (Get_Type (Get_Prefix (Attr))); + Prefix_Type := + Get_Base_Type (Get_Type_Of_Type_Mark (Get_Prefix (Attr))); Pinfo := Get_Info (Prefix_Type); case Pinfo.Type_Mode is when Type_Mode_B2 => @@ -26986,7 +27003,7 @@ package body Translation is Info : Type_Info_Acc; Rti_Type : O_Tnode; begin - Ndef := Get_Type (Get_Type_Declarator (Def)); + Ndef := Get_Type_Of_Type_Mark (Get_Type_Declarator (Def)); Info := Get_Info (Ndef); case Get_Kind (Ndef) is when Iir_Kind_Integer_Type_Definition @@ -27027,7 +27044,7 @@ package body Translation is begin Id := Get_Identifier (Decl); Push_Identifier_Prefix (Mark, Id); - Def := Get_Type (Decl); + Def := Get_Type_Of_Type_Mark (Decl); if Get_Kind (Def) = Iir_Kind_Incomplete_Type_Definition then Rti := Generate_Incomplete_Type_Definition (Def); else @@ -27245,7 +27262,7 @@ package body Translation is null; when Iir_Kind_Type_Declaration => -- FIXME: physicals ? - if Get_Kind (Get_Type (Decl)) + if Get_Kind (Get_Type_Definition (Decl)) = Iir_Kind_Enumeration_Type_Definition then Add_Rti_Node (Generate_Type_Decl (Decl)); @@ -28690,11 +28707,6 @@ package body Translation is Create_Report_Subprg ("__ghdl_report", Ghdl_Report); end; - New_Var_Decl (Ghdl_Assert_Default_Report, - Get_Identifier ("__ghdl_assert_default_report"), - O_Storage_External, - Get_Info (String_Type_Definition).Ortho_Type (Mode_Value)); - -- procedure __ghdl_text_write (file : __ghdl_file_index; -- str : std_string_ptr); Start_Procedure_Decl |