diff options
-rw-r--r-- | canon.adb | 2 | ||||
-rw-r--r-- | disp_vhdl.adb | 5 | ||||
-rw-r--r-- | doc/ghdl.texi | 6 | ||||
-rw-r--r-- | evaluation.adb | 12 | ||||
-rw-r--r-- | evaluation.ads | 6 | ||||
-rw-r--r-- | iirs.adb | 1 | ||||
-rw-r--r-- | iirs.ads | 6 | ||||
-rw-r--r-- | sem.adb | 12 | ||||
-rw-r--r-- | sem_assocs.adb | 8 | ||||
-rw-r--r-- | sem_expr.adb | 27 | ||||
-rw-r--r-- | sem_expr.ads | 6 | ||||
-rw-r--r-- | sem_names.adb | 11 | ||||
-rw-r--r-- | sem_stmts.adb | 18 | ||||
-rw-r--r-- | sem_types.adb | 33 | ||||
-rw-r--r-- | translate/gcc/INSTALL | 2 | ||||
-rw-r--r-- | translate/gcc/README | 2 | ||||
-rwxr-xr-x | translate/gcc/dist.sh | 2 | ||||
-rw-r--r-- | translate/ghdldrv/ghdlmain.adb | 4 | ||||
-rw-r--r-- | translate/grt/grt-processes.adb | 4 | ||||
-rw-r--r-- | version.ads | 4 |
20 files changed, 101 insertions, 70 deletions
@@ -930,7 +930,7 @@ package body Canon is -- LRM93 9.1 -- Finally, if the concurrent signal assignment statement is not a -- guarded assignment, and the traget of the concurrent signal - -- assignment is not a guarded target,t hen the statement transform + -- assignment is not a guarded target, then the statement transform -- is as follows: -- signal_transform Chain := Proc; diff --git a/disp_vhdl.adb b/disp_vhdl.adb index e87013674..9a9545318 100644 --- a/disp_vhdl.adb +++ b/disp_vhdl.adb @@ -1952,10 +1952,7 @@ package body Disp_Vhdl is Put (""); return; when Iir_Kind_Selected_Name => - Disp_Expression (Get_Prefix (Expr)); - Put ('.'); - Disp_Expression (Get_Suffix (Expr)); - return; + Disp_Name (Expr); when Iir_Kinds_Type_And_Subtype_Definition => Disp_Type (Expr); diff --git a/doc/ghdl.texi b/doc/ghdl.texi index b0a87c03d..8d0915515 100644 --- a/doc/ghdl.texi +++ b/doc/ghdl.texi @@ -11,12 +11,12 @@ @titlepage @title GHDL guide @subtitle GHDL, a VHDL compiler -@subtitle For GHDL version 0.25 (Sokcho edition) +@subtitle For GHDL version 0.26 (Sokcho edition) @author Tristan Gingold @c The following two commands start the copyright page. @page @vskip 0pt plus 1filll -Copyright @copyright{} 2002, 2003, 2004, 2005, 2006 Tristan Gingold. +Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007 Tristan Gingold. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or @@ -78,7 +78,7 @@ Internal overview @top GHDL guide GHDL, a VHDL compiler. -Copyright @copyright{} 2002, 2003, 2004, 2005, 2006 Tristan Gingold. +Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007 Tristan Gingold. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 diff --git a/evaluation.adb b/evaluation.adb index 77183cce7..44d7b4f3b 100644 --- a/evaluation.adb +++ b/evaluation.adb @@ -1956,13 +1956,16 @@ package body Evaluation is end if; end Eval_Check_Bound; - function Eval_Is_Range_In_Bound (A_Range : Iir; Sub_Type : Iir) + function Eval_Is_Range_In_Bound + (A_Range : Iir; Sub_Type : Iir; Any_Dir : Boolean) return Boolean is Type_Range : Iir; begin Type_Range := Get_Range_Constraint (Sub_Type); - if Get_Direction (Type_Range) /= Get_Direction (A_Range) then + if not Any_Dir + and then Get_Direction (Type_Range) /= Get_Direction (A_Range) + then return True; end if; @@ -2019,10 +2022,11 @@ package body Evaluation is -- and then Eval_Is_In_Bound (Get_Right_Limit (A_Range), Sub_Type); end Eval_Is_Range_In_Bound; - procedure Eval_Check_Range (A_Range : Iir; Sub_Type : Iir) + procedure Eval_Check_Range + (A_Range : Iir; Sub_Type : Iir; Any_Dir : Boolean) is begin - if not Eval_Is_Range_In_Bound (A_Range, Sub_Type) then + if not Eval_Is_Range_In_Bound (A_Range, Sub_Type, Any_Dir) then Error_Msg_Sem ("static range violates bounds", A_Range); end if; end Eval_Check_Range; diff --git a/evaluation.ads b/evaluation.ads index a36286372..a9ae748f0 100644 --- a/evaluation.ads +++ b/evaluation.ads @@ -47,11 +47,13 @@ package Evaluation is procedure Eval_Check_Bound (Expr : Iir; Sub_Type : Iir); -- Return TRUE if range expression A_RANGE is not included in SUB_TYPE. - function Eval_Is_Range_In_Bound (A_Range : Iir; Sub_Type : Iir) + function Eval_Is_Range_In_Bound + (A_Range : Iir; Sub_Type : Iir; Any_Dir : Boolean) return Boolean; -- Emit an error if A_RANGE is not included in SUB_TYPE. - procedure Eval_Check_Range (A_Range : Iir; Sub_Type : Iir); + procedure Eval_Check_Range (A_Range : Iir; Sub_Type : Iir; + Any_Dir : Boolean); -- Same as Eval_Expr, but a range check with SUB_TYPE is performed after -- computation. @@ -2420,6 +2420,7 @@ package body Iirs is begin case Get_Kind (Target) is when Iir_Kind_Attribute_Value + | Iir_Kind_Operator_Symbol | Iir_Kind_Enumeration_Literal | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration @@ -2225,10 +2225,10 @@ package Iirs is -- -- Get/Set_Prefix (Field3) -- - -- Get/Set_Base_Name (Field5) - -- -- Get/Set_Named_Entity (Field4) -- + -- Get/Set_Base_Name (Field5) + -- -- Get/Set_Expr_Staticness (State1) -- Iir_Kind_Operator_Symbol (Short) @@ -2236,6 +2236,8 @@ package Iirs is -- Get/Set_Identifier (Field3) -- -- Get/Set_Named_Entity (Field4) + -- + -- Get/Set_Base_Name (Field5) -- Iir_Kind_Indexed_Name (Short) -- Select the element designed with the INDEX_LIST from array PREFIX. @@ -1224,7 +1224,14 @@ package body Sem is | Iir_Kind_Ascending_Type_Attribute => return Are_Trees_Equal (Get_Prefix (Left), Get_Prefix (Right)); - when Iir_Kind_String_Literal => + when Iir_Kind_String_Literal + | Iir_Kind_Bit_String_Literal => + if Get_Kind (Left) = Iir_Kind_Bit_String_Literal + and then Get_Bit_String_Base (Left) + /= Get_Bit_String_Base (Right) + then + return False; + end if; declare use Str_Table; Len : Nat32; @@ -1265,7 +1272,8 @@ package body Sem is return True; end; - when Iir_Kind_Choice_By_None => + when Iir_Kind_Choice_By_None + | Iir_Kind_Choice_By_Others => return Are_Trees_Equal (Get_Associated (Left), Get_Associated (Right)); when Iir_Kind_Choice_By_Name => diff --git a/sem_assocs.adb b/sem_assocs.adb index 7b96eb603..859226ee3 100644 --- a/sem_assocs.adb +++ b/sem_assocs.adb @@ -1249,6 +1249,14 @@ package body Sem_Assocs is Match := False; return; end if; + -- LRM 4.3.3.2 Associations lists + -- It is an error if an actual of open is associated with a + -- formal that is associated individually. + if Assoc_Kind = Individual then + Error_Msg_Sem ("cannot associate individually with open", + Assoc); + end if; + Xrefs.Xref_Name (Formal); Set_Formal (Assoc, Expr); end if; diff --git a/sem_expr.adb b/sem_expr.adb index acc2daeb5..9131776ea 100644 --- a/sem_expr.adb +++ b/sem_expr.adb @@ -451,7 +451,8 @@ package body Sem_Expr is -- LRM93 3.2.1.1 -- FIXME: avoid to run it on an already semantized node, be careful -- with range_type_expr. - function Sem_Range_Expression (Expr: Iir_Range_Expression; A_Type: Iir) + function Sem_Range_Expression + (Expr: Iir_Range_Expression; A_Type: Iir; Any_Dir : Boolean) return Iir_Range_Expression is Base_Type: Iir; @@ -523,7 +524,7 @@ package body Sem_Expr is and then Get_Type_Staticness (Expr_Type) = Locally and then Get_Kind (Expr_Type) in Iir_Kinds_Subtype_Definition then - Eval_Check_Range (Expr, Expr_Type); + Eval_Check_Range (Expr, Expr_Type, Any_Dir); end if; else Base_Type := Get_Common_Basetype (Get_Base_Type (Get_Type (Left)), @@ -546,14 +547,15 @@ package body Sem_Expr is -- LRM93 3.2.1.1 -- FIXME: avoid to run it on an already semantized node, be careful -- with range_type_expr. - function Sem_Discrete_Range_Expression (Expr: Iir; A_Type: Iir) + function Sem_Discrete_Range_Expression + (Expr: Iir; A_Type: Iir; Any_Dir : Boolean) return Iir is Res : Iir; Res_Type : Iir; begin if Get_Kind (Expr) = Iir_Kind_Range_Expression then - Res := Sem_Range_Expression (Expr, A_Type); + Res := Sem_Range_Expression (Expr, A_Type, Any_Dir); if Res = Null_Iir then return Null_Iir; end if; @@ -607,11 +609,12 @@ package body Sem_Expr is case Get_Kind (Res) is when Iir_Kinds_Type_And_Subtype_Definition => if Get_Type_Staticness (Res) = Locally then - Eval_Check_Range (Get_Range_Constraint (Res), A_Type); + Eval_Check_Range + (Get_Range_Constraint (Res), A_Type, Any_Dir); end if; when others => if Get_Expr_Staticness (Res) = Locally then - Eval_Check_Range (Res, A_Type); + Eval_Check_Range (Res, A_Type, Any_Dir); end if; end case; end if; @@ -622,7 +625,7 @@ package body Sem_Expr is is Range_Type : Iir; begin - Range_Type := Sem_Discrete_Range_Expression (Expr, Null_Iir); + Range_Type := Sem_Discrete_Range_Expression (Expr, Null_Iir, True); if Range_Type = Null_Iir then return Null_Iir; end if; @@ -1917,7 +1920,7 @@ package body Sem_Expr is begin Expr := Get_Expression (El); if Get_Kind (El) = Iir_Kind_Choice_By_Range then - Expr := Sem_Discrete_Range_Expression (Expr, Sub_Type); + Expr := Sem_Discrete_Range_Expression (Expr, Sub_Type, True); elsif Is_Name (Expr) then declare Name : Iir; @@ -2192,7 +2195,7 @@ package body Sem_Expr is and then Get_Type_Staticness (A_Type) = Locally then if Get_Kind (Choice) = Iir_Kind_Choice_By_Range then - Ok := Eval_Is_Range_In_Bound (Expr, A_Type); + Ok := Eval_Is_Range_In_Bound (Expr, A_Type, True); else Ok := Eval_Is_In_Bound (Expr, A_Type); end if; @@ -2478,6 +2481,7 @@ package body Sem_Expr is Expr: Iir; Has_Named : Boolean; Rec_El : Iir_Element_Declaration; + Value_Staticness : Iir_Staticness; begin Ok := True; Assoc_Chain := Get_Association_Choices_Chain (Aggr); @@ -2485,6 +2489,7 @@ package body Sem_Expr is Matches := new Iir_Array (0 .. Natural (Get_Number_Element_Declaration (Base_Type)) - 1); Matches.all := (others => Null_Iir); + Value_Staticness := Locally; El_Type := Null_Iir; Has_Named := False; @@ -2556,6 +2561,8 @@ package body Sem_Expr is Expr := Sem_Expression (Expr, El_Type); if Expr /= Null_Iir then Set_Associated (El, Eval_Expr_If_Static (Expr)); + Value_Staticness := Min (Value_Staticness, + Get_Expr_Staticness (Expr)); else Ok := False; end if; @@ -2581,6 +2588,8 @@ package body Sem_Expr is El := Get_Chain (El); end loop; Free (Matches); + Set_Value_Staticness (Aggr, Value_Staticness); + Set_Expr_Staticness (Aggr, Min (Globally, Value_Staticness)); return Ok; end Sem_Record_Aggregate; diff --git a/sem_expr.ads b/sem_expr.ads index 0ab384758..428e8b683 100644 --- a/sem_expr.ads +++ b/sem_expr.ads @@ -93,8 +93,10 @@ package Sem_Expr is -- Semantize a procedure_call or a concurrent_procedure_call_statement. procedure Sem_Procedure_Call (Call : Iir_Procedure_Call; Stmt : Iir); - function Sem_Discrete_Range_Expression (Expr: Iir; A_Type: Iir) - return Iir; + -- Semantize a discrete range. If ANY_DIR is true, the range can't be a + -- null range (slice vs subtype -- used in static evaluation). + function Sem_Discrete_Range_Expression + (Expr: Iir; A_Type: Iir; Any_Dir: Boolean) return Iir; function Get_Discrete_Range_Staticness (Expr : Iir) return Iir_Staticness; -- Semantize a discrete range and convert to integer if both bounds are diff --git a/sem_names.adb b/sem_names.adb index be727820e..c42c3dab3 100644 --- a/sem_names.adb +++ b/sem_names.adb @@ -606,7 +606,7 @@ package body Sem_Names is -- The bounds of the discrete range [...] must be of the -- type of the index of the array. Suffix := Sem_Discrete_Range_Expression - (Get_Suffix (Name), Index_Type); + (Get_Suffix (Name), Index_Type, False); if Suffix = Null_Iir then return; end if; @@ -1319,6 +1319,7 @@ package body Sem_Names is end loop; Res := Create_Overload_List (Res_List); end if; + Set_Base_Name (Name, Res); Set_Named_Entity (Name, Res); end Sem_Simple_Name; @@ -1585,7 +1586,8 @@ package body Sem_Names is end if; when Iir_Kind_Type_Declaration | Iir_Kind_Subtype_Declaration - | Iir_Kind_Concurrent_Procedure_Call_Statement => + | Iir_Kind_Concurrent_Procedure_Call_Statement + | Iir_Kind_Component_Instantiation_Statement => Error_Msg_Sem (Disp_Node (Prefix) & " cannot be selected by name", Prefix_Loc); @@ -1679,7 +1681,7 @@ package body Sem_Names is Set_Index_List (Res, Create_Iir_List); Append_Element (Get_Index_List (Res), Actual); when Iir_Kind_Slice_Name => - Actual := Sem_Discrete_Range_Expression (Actual, Itype); + Actual := Sem_Discrete_Range_Expression (Actual, Itype, False); if Actual = Null_Iir then return Null_Iir; end if; @@ -2388,7 +2390,8 @@ package body Sem_Names is Attr); return Error_Mark; when others => - Error_Kind ("sem_array_attribute", Prefix); + Error_Msg_Sem ("prefix must denote an array object or type", Attr); + return Error_Mark; end case; case Get_Kind (Prefix_Type) is diff --git a/sem_stmts.adb b/sem_stmts.adb index 555bfbf39..fc0a3ae4f 100644 --- a/sem_stmts.adb +++ b/sem_stmts.adb @@ -462,18 +462,14 @@ package body Sem_Stmts is begin Ok := True; -- Find the signal. - if Sig_Type = Null_Iir then - Ok := False; + Target := Get_Target (Stmt); + Target := Sem_Expression (Target, Sig_Type); + if Target /= Null_Iir then + Set_Target (Stmt, Target); + Check_Target (Stmt, Target); + Sem_Types.Set_Type_Has_Signal (Get_Type (Target)); else - Target := Get_Target (Stmt); - Target := Sem_Expression (Target, Sig_Type); - if Target /= Null_Iir then - Set_Target (Stmt, Target); - Check_Target (Stmt, Target); - Sem_Types.Set_Type_Has_Signal (Get_Type (Target)); - else - Ok := False; - end if; + Ok := False; end if; Expr := Get_Reject_Time_Expression (Stmt); diff --git a/sem_types.adb b/sem_types.adb index d7172c4bf..777a245e7 100644 --- a/sem_types.adb +++ b/sem_types.adb @@ -59,10 +59,13 @@ package body Sem_Types is Mark : Iir; begin Set_Type_Has_Signal (Get_Base_Type (Atype)); - Func := Get_Resolution_Function (Atype); - if Func /= Null_Iir then - Func := Get_Named_Entity (Func); - if Func /= Error_Mark then + -- Mark the resolution function (this may be required by the + -- back-end to generate resolver). + if Get_Resolved_Flag (Atype) then + Func := Get_Resolution_Function (Atype); + -- Maybe the type is resolved through its elements. + if Func /= Null_Iir then + Func := Get_Named_Entity (Func); Set_Resolution_Function_Flag (Func, True); end if; end if; @@ -704,7 +707,7 @@ package body Sem_Types is declare Res : Iir; begin - Res := Sem_Discrete_Range_Expression (Def, Null_Iir); + Res := Sem_Discrete_Range_Expression (Def, Null_Iir, True); if Res = Null_Iir then return Null_Iir; end if; @@ -1051,6 +1054,7 @@ package body Sem_Types is return True; end Is_A_Resolution_Function; + -- Note: this sets resolved_flag. procedure Sem_Resolution_Function (Decl: Iir) is Func: Iir; @@ -1112,7 +1116,7 @@ package body Sem_Types is end if; end Sem_Resolution_Function; - -- Semantize array_subtype_definition DEF using BASE_TYPE as the base type + -- Semantize array_subtype_definition DEF using TYPE_MARK as the base type -- of DEF. -- DEF must have an index list and may have a resolution function. -- Return DEF. @@ -1172,7 +1176,7 @@ package body Sem_Types is Staticness := None; else Subtype_Index := Sem_Discrete_Range_Expression - (Subtype_Index, Type_Index); + (Subtype_Index, Type_Index, True); if Subtype_Index /= Null_Iir then Subtype_Index := Range_To_Subtype_Definition (Subtype_Index); Staticness := Min (Staticness, @@ -1190,9 +1194,7 @@ package body Sem_Types is Set_Type_Staticness (Def, Staticness); Set_Element_Subtype (Def, El_Type); Sem_Resolution_Function (Def); - if Get_Resolution_Function (Def) /= Null_Iir - or else Get_Resolved_Flag (El_Type) - then + if Get_Resolved_Flag (Def) or else Get_Resolved_Flag (El_Type) then Set_Resolved_Flag (Def, True); else Set_Resolved_Flag (Def, False); @@ -1341,7 +1343,7 @@ package body Sem_Types is Set_Type_Staticness (Res, Get_Type_Staticness (Type_Mark)); Sem_Resolution_Function (Res); Set_Signal_Type_Flag (Res, Get_Signal_Type_Flag (Type_Mark)); - if Get_Resolution_Function (Res) /= Null_Iir + if Get_Resolved_Flag (Res) or else Get_Resolved_Flag (Get_Element_Subtype (Type_Mark)) then Set_Resolved_Flag (Res, True); @@ -1385,7 +1387,7 @@ package body Sem_Types is A_Range := Get_Range_Constraint (Type_Mark); else A_Range := Sem_Discrete_Range_Expression - (A_Range, Type_Mark); + (A_Range, Type_Mark, True); if A_Range = Null_Iir then -- Avoid error propagation. A_Range := Get_Range_Constraint (Type_Mark); @@ -1395,8 +1397,6 @@ package body Sem_Types is Set_Type_Staticness (Res, Get_Expr_Staticness (A_Range)); Free_Name (Def); Sem_Resolution_Function (Res); - Set_Resolved_Flag - (Res, Get_Resolution_Function (Res) /= Null_Iir); Set_Signal_Type_Flag (Res, Get_Signal_Type_Flag (Type_Mark)); return Res; end; @@ -1422,7 +1422,7 @@ package body Sem_Types is Constraint := Get_Range_Constraint (Type_Mark); else Constraint := Sem_Discrete_Range_Expression - (Constraint, Type_Mark); + (Constraint, Type_Mark, True); -- FIXME: check bounds, check static end if; Set_Range_Constraint (Res, Constraint); @@ -1430,8 +1430,6 @@ package body Sem_Types is end; Free_Name (Def); Sem_Resolution_Function (Res); - Set_Resolved_Flag - (Res, Get_Resolution_Function (Res) /= Null_Iir); Set_Signal_Type_Flag (Res, True); return Res; @@ -1455,7 +1453,6 @@ package body Sem_Types is Set_Type_Mark (Res, Type_Mark); Set_Resolution_Function (Res, Func); Sem_Resolution_Function (Res); - Set_Resolved_Flag (Res, Func /= Null_Iir); Set_Signal_Type_Flag (Res, Get_Signal_Type_Flag (Type_Mark)); Free_Name (Def); return Res; diff --git a/translate/gcc/INSTALL b/translate/gcc/INSTALL index 26b0ee3cd..f4fb8a0d2 100644 --- a/translate/gcc/INSTALL +++ b/translate/gcc/INSTALL @@ -1,6 +1,6 @@ Install file for the binary distribution of GHDL. -GHDL is Copyright 2002, 2003, 2004, 2005, 2006 Tristan Gingold. +GHDL is Copyright 2002, 2003, 2004, 2005, 2006, 2007 Tristan Gingold. GHDL is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff --git a/translate/gcc/README b/translate/gcc/README index e2e1efbd7..0ef1a8bf0 100644 --- a/translate/gcc/README +++ b/translate/gcc/README @@ -4,7 +4,7 @@ To get the binary distribution or more information, go to http://ghdl.free.fr Copyright: ********** -GHDL is copyright (c) 2002, 2003, 2004, 2005, 2006 Tristan Gingold. +GHDL is copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 Tristan Gingold. See the GHDL manual for more details. This program is free software; you can redistribute it and/or modify diff --git a/translate/gcc/dist.sh b/translate/gcc/dist.sh index 4b0554b2f..7819dd879 100755 --- a/translate/gcc/dist.sh +++ b/translate/gcc/dist.sh @@ -39,7 +39,7 @@ set -e # GCC version -GCCVERSION=4.1.1 +GCCVERSION=4.1.2 # Machine name used by GCC MACHINE=i686-pc-linux-gnu # Directory where GCC sources (and objects) stay. diff --git a/translate/ghdldrv/ghdlmain.adb b/translate/ghdldrv/ghdlmain.adb index 0c2f39ae0..a46e17129 100644 --- a/translate/ghdldrv/ghdlmain.adb +++ b/translate/ghdldrv/ghdlmain.adb @@ -1,5 +1,5 @@ -- GHDL driver - main part. --- Copyright (C) 2002, 2003, 2004, 2005, 2006 Tristan Gingold +-- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Tristan Gingold -- -- GHDL is free software; you can redistribute it and/or modify it under -- the terms of the GNU General Public License as published by the Free @@ -226,7 +226,7 @@ package body Ghdlmain is Put_Line ("Written by Tristan Gingold."); New_Line; -- Display copyright. Assume 80 cols terminal. - Put_Line ("Copyright (C) 2003, 2004, 2005, 2006 Tristan Gingold."); + Put_Line ("Copyright (C) 2003, 2004, 2005, 2006, 2007 Tristan Gingold."); Put_Line ("GHDL is free software, covered by the " & "GNU General Public License. There is NO"); Put_Line ("warranty; not even for MERCHANTABILITY or" diff --git a/translate/grt/grt-processes.adb b/translate/grt/grt-processes.adb index 54eb28bf5..d8d8a61d5 100644 --- a/translate/grt/grt-processes.adb +++ b/translate/grt/grt-processes.adb @@ -853,7 +853,9 @@ package body Grt.Processes is exit; end if; if Current_Time > Stop_Time then - Info ("simulation stopped by --stop-time"); + if Current_Time /= Last_Time then + Info ("simulation stopped by --stop-time"); + end if; exit; end if; end loop; diff --git a/version.ads b/version.ads index 9529f4f30..d71a40e4b 100644 --- a/version.ads +++ b/version.ads @@ -1,5 +1,5 @@ package Version is Ghdl_Release : constant String := - "GHDL 0.26dev (20060819) [Sokcho edition]"; - Ghdl_Ver : constant String := "0.26dev"; + "GHDL 0.26 (20070408) [Sokcho edition]"; + Ghdl_Ver : constant String := "0.26"; end Version; |