diff options
author | Tristan Gingold | 2015-05-13 06:56:24 +0200 |
---|---|---|
committer | Tristan Gingold | 2015-05-13 06:56:24 +0200 |
commit | 6e168c5503339772dab0768e93a301318d705bcf (patch) | |
tree | 43e33c2fc03aeb0c61ffe7f520d3a50d74b7ed8a /src/vhdl | |
parent | 961d55b955d0a1526ebb7a5ddca8acee50b8ab1a (diff) | |
download | ghdl-6e168c5503339772dab0768e93a301318d705bcf.tar.gz ghdl-6e168c5503339772dab0768e93a301318d705bcf.tar.bz2 ghdl-6e168c5503339772dab0768e93a301318d705bcf.zip |
Change library format: now store file checksum instead of file time stamp.
For ticket 48.
Diffstat (limited to 'src/vhdl')
-rw-r--r-- | src/vhdl/disp_tree.adb | 6 | ||||
-rw-r--r-- | src/vhdl/iirs.adb | 26 | ||||
-rw-r--r-- | src/vhdl/iirs.adb.in | 6 | ||||
-rw-r--r-- | src/vhdl/iirs.ads | 6 | ||||
-rw-r--r-- | src/vhdl/nodes_meta.adb | 42 | ||||
-rw-r--r-- | src/vhdl/nodes_meta.ads | 10 | ||||
-rw-r--r-- | src/vhdl/sem_inst.adb | 3 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap2.adb | 3 |
8 files changed, 74 insertions, 28 deletions
diff --git a/src/vhdl/disp_tree.adb b/src/vhdl/disp_tree.adb index 62fc3c4..34f31fe 100644 --- a/src/vhdl/disp_tree.adb +++ b/src/vhdl/disp_tree.adb @@ -289,6 +289,9 @@ package body Disp_Tree is function Image_Time_Stamp_Id (Id : Time_Stamp_Id) return String renames Files_Map.Get_Time_Stamp_String; + function Image_File_Checksum_Id (Id : File_Checksum_Id) return String + renames Files_Map.Get_File_Checksum_String; + function Image_Iir_Predefined_Functions (F : Iir_Predefined_Functions) return String is begin @@ -467,6 +470,9 @@ package body Disp_Tree is when Type_Time_Stamp_Id => Put_Line (Image_Time_Stamp_Id (Get_Time_Stamp_Id (N, F))); + when Type_File_Checksum_Id => + Put_Line (Image_File_Checksum_Id + (Get_File_Checksum_Id (N, F))); when Type_Token_Type => Put_Line (Image_Token_Type (Get_Token_Type (N, F))); when Type_Name_Id => diff --git a/src/vhdl/iirs.adb b/src/vhdl/iirs.adb index 99b8756..9d056d7 100644 --- a/src/vhdl/iirs.adb +++ b/src/vhdl/iirs.adb @@ -141,6 +141,12 @@ package body Iirs is function Iir_To_Time_Stamp_Id is new Ada.Unchecked_Conversion (Source => Iir, Target => Time_Stamp_Id); + function File_Checksum_Id_To_Iir is new Ada.Unchecked_Conversion + (Source => File_Checksum_Id, Target => Iir); + + function Iir_To_File_Checksum_Id is new Ada.Unchecked_Conversion + (Source => Iir, Target => File_Checksum_Id); + function Iir_To_Iir_List is new Ada.Unchecked_Conversion (Source => Iir, Target => Iir_List); function Iir_List_To_Iir is new Ada.Unchecked_Conversion @@ -536,21 +542,21 @@ package body Iirs is Set_Field1 (Design, Library); end Set_Library_Declaration; - function Get_File_Time_Stamp (Design : Iir) return Time_Stamp_Id is + function Get_File_Checksum (Design : Iir) return File_Checksum_Id is begin pragma Assert (Design /= Null_Iir); - pragma Assert (Has_File_Time_Stamp (Get_Kind (Design)), - "no field File_Time_Stamp"); - return Iir_To_Time_Stamp_Id (Get_Field4 (Design)); - end Get_File_Time_Stamp; + pragma Assert (Has_File_Checksum (Get_Kind (Design)), + "no field File_Checksum"); + return Iir_To_File_Checksum_Id (Get_Field4 (Design)); + end Get_File_Checksum; - procedure Set_File_Time_Stamp (Design : Iir; Stamp : Time_Stamp_Id) is + procedure Set_File_Checksum (Design : Iir; Checksum : File_Checksum_Id) is begin pragma Assert (Design /= Null_Iir); - pragma Assert (Has_File_Time_Stamp (Get_Kind (Design)), - "no field File_Time_Stamp"); - Set_Field4 (Design, Time_Stamp_Id_To_Iir (Stamp)); - end Set_File_Time_Stamp; + pragma Assert (Has_File_Checksum (Get_Kind (Design)), + "no field File_Checksum"); + Set_Field4 (Design, File_Checksum_Id_To_Iir (Checksum)); + end Set_File_Checksum; function Get_Analysis_Time_Stamp (Design : Iir) return Time_Stamp_Id is begin diff --git a/src/vhdl/iirs.adb.in b/src/vhdl/iirs.adb.in index 481a355..40c9d68 100644 --- a/src/vhdl/iirs.adb.in +++ b/src/vhdl/iirs.adb.in @@ -141,6 +141,12 @@ package body Iirs is function Iir_To_Time_Stamp_Id is new Ada.Unchecked_Conversion (Source => Iir, Target => Time_Stamp_Id); + function File_Checksum_Id_To_Iir is new Ada.Unchecked_Conversion + (Source => File_Checksum_Id, Target => Iir); + + function Iir_To_File_Checksum_Id is new Ada.Unchecked_Conversion + (Source => Iir, Target => File_Checksum_Id); + function Iir_To_Iir_List is new Ada.Unchecked_Conversion (Source => Iir, Target => Iir_List); function Iir_List_To_Iir is new Ada.Unchecked_Conversion diff --git a/src/vhdl/iirs.ads b/src/vhdl/iirs.ads index 75db322..c8cc0f9 100644 --- a/src/vhdl/iirs.ads +++ b/src/vhdl/iirs.ads @@ -173,7 +173,7 @@ package Iirs is -- analysis and detecting obsolete units across libraries. -- Get/Set_Analysis_Time_Stamp (Field3) -- - -- Get/Set_File_Time_Stamp (Field4) + -- Get/Set_File_Checksum (Field4) -- -- Get the chain of unit contained in the file. This is a simply linked -- chain, but the tail is kept to speed-up appending operation. @@ -5006,8 +5006,8 @@ package Iirs is -- File time stamp is the system time of the file last modification. -- Field: Field4 (uc) - function Get_File_Time_Stamp (Design : Iir) return Time_Stamp_Id; - procedure Set_File_Time_Stamp (Design : Iir; Stamp : Time_Stamp_Id); + function Get_File_Checksum (Design : Iir) return File_Checksum_Id; + procedure Set_File_Checksum (Design : Iir; Checksum : File_Checksum_Id); -- Time stamp of the last analysis system time. -- Field: Field3 (uc) diff --git a/src/vhdl/nodes_meta.adb b/src/vhdl/nodes_meta.adb index 13422cb..514ed57 100644 --- a/src/vhdl/nodes_meta.adb +++ b/src/vhdl/nodes_meta.adb @@ -22,7 +22,7 @@ package body Nodes_Meta is Field_First_Design_Unit => Type_Iir, Field_Last_Design_Unit => Type_Iir, Field_Library_Declaration => Type_Iir, - Field_File_Time_Stamp => Type_Time_Stamp_Id, + Field_File_Checksum => Type_File_Checksum_Id, Field_Analysis_Time_Stamp => Type_Time_Stamp_Id, Field_Library => Type_Iir, Field_File_Dependence_List => Type_Iir_List, @@ -327,8 +327,8 @@ package body Nodes_Meta is return "last_design_unit"; when Field_Library_Declaration => return "library_declaration"; - when Field_File_Time_Stamp => - return "file_time_stamp"; + when Field_File_Checksum => + return "file_checksum"; when Field_Analysis_Time_Stamp => return "analysis_time_stamp"; when Field_Library => @@ -1407,7 +1407,7 @@ package body Nodes_Meta is return Attr_Ref; when Field_Library_Declaration => return Attr_Ref; - when Field_File_Time_Stamp => + when Field_File_Checksum => return Attr_None; when Field_Analysis_Time_Stamp => return Attr_None; @@ -2004,7 +2004,7 @@ package body Nodes_Meta is Field_Design_File_Directory, Field_Design_File_Filename, Field_Analysis_Time_Stamp, - Field_File_Time_Stamp, + Field_File_Checksum, Field_Elab_Flag, Field_File_Dependence_List, Field_Chain, @@ -4415,6 +4415,30 @@ package body Nodes_Meta is end case; end Set_Date_Type; + function Get_File_Checksum_Id + (N : Iir; F : Fields_Enum) return File_Checksum_Id is + begin + pragma Assert (Fields_Type (F) = Type_File_Checksum_Id); + case F is + when Field_File_Checksum => + return Get_File_Checksum (N); + when others => + raise Internal_Error; + end case; + end Get_File_Checksum_Id; + + procedure Set_File_Checksum_Id + (N : Iir; F : Fields_Enum; V: File_Checksum_Id) is + begin + pragma Assert (Fields_Type (F) = Type_File_Checksum_Id); + case F is + when Field_File_Checksum => + Set_File_Checksum (N, V); + when others => + raise Internal_Error; + end case; + end Set_File_Checksum_Id; + function Get_Iir (N : Iir; F : Fields_Enum) return Iir is begin @@ -5804,8 +5828,6 @@ package body Nodes_Meta is begin pragma Assert (Fields_Type (F) = Type_Time_Stamp_Id); case F is - when Field_File_Time_Stamp => - return Get_File_Time_Stamp (N); when Field_Analysis_Time_Stamp => return Get_Analysis_Time_Stamp (N); when others => @@ -5818,8 +5840,6 @@ package body Nodes_Meta is begin pragma Assert (Fields_Type (F) = Type_Time_Stamp_Id); case F is - when Field_File_Time_Stamp => - Set_File_Time_Stamp (N, V); when Field_Analysis_Time_Stamp => Set_Analysis_Time_Stamp (N, V); when others => @@ -5894,10 +5914,10 @@ package body Nodes_Meta is return K = Iir_Kind_Library_Clause; end Has_Library_Declaration; - function Has_File_Time_Stamp (K : Iir_Kind) return Boolean is + function Has_File_Checksum (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; - end Has_File_Time_Stamp; + end Has_File_Checksum; function Has_Analysis_Time_Stamp (K : Iir_Kind) return Boolean is begin diff --git a/src/vhdl/nodes_meta.ads b/src/vhdl/nodes_meta.ads index f1b874b..830ca25 100644 --- a/src/vhdl/nodes_meta.ads +++ b/src/vhdl/nodes_meta.ads @@ -28,6 +28,7 @@ package Nodes_Meta is Type_Boolean, Type_Date_State_Type, Type_Date_Type, + Type_File_Checksum_Id, Type_Iir, Type_Iir_All_Sensitized, Type_Iir_Constraint, @@ -61,7 +62,7 @@ package Nodes_Meta is Field_First_Design_Unit, Field_Last_Design_Unit, Field_Library_Declaration, - Field_File_Time_Stamp, + Field_File_Checksum, Field_Analysis_Time_Stamp, Field_Library, Field_File_Dependence_List, @@ -401,6 +402,11 @@ package Nodes_Meta is procedure Set_Date_Type (N : Iir; F : Fields_Enum; V: Date_Type); + function Get_File_Checksum_Id + (N : Iir; F : Fields_Enum) return File_Checksum_Id; + procedure Set_File_Checksum_Id + (N : Iir; F : Fields_Enum; V: File_Checksum_Id); + function Get_Iir (N : Iir; F : Fields_Enum) return Iir; procedure Set_Iir @@ -529,7 +535,7 @@ package Nodes_Meta is function Has_First_Design_Unit (K : Iir_Kind) return Boolean; function Has_Last_Design_Unit (K : Iir_Kind) return Boolean; function Has_Library_Declaration (K : Iir_Kind) return Boolean; - function Has_File_Time_Stamp (K : Iir_Kind) return Boolean; + function Has_File_Checksum (K : Iir_Kind) return Boolean; function Has_Analysis_Time_Stamp (K : Iir_Kind) return Boolean; function Has_Library (K : Iir_Kind) return Boolean; function Has_File_Dependence_List (K : Iir_Kind) return Boolean; diff --git a/src/vhdl/sem_inst.adb b/src/vhdl/sem_inst.adb index 4993c83..b60b34b 100644 --- a/src/vhdl/sem_inst.adb +++ b/src/vhdl/sem_inst.adb @@ -252,7 +252,8 @@ package body Sem_Inst is Set_Source_Ptr (Res, F, Get_Source_Ptr (N, F)); when Type_Date_Type | Type_Date_State_Type - | Type_Time_Stamp_Id => + | Type_Time_Stamp_Id + | Type_File_Checksum_Id => -- Can this happen ? raise Internal_Error; when Type_Base_Type => diff --git a/src/vhdl/translate/trans-chap2.adb b/src/vhdl/translate/trans-chap2.adb index 875e4a0..69ec3e5 100644 --- a/src/vhdl/translate/trans-chap2.adb +++ b/src/vhdl/translate/trans-chap2.adb @@ -1015,7 +1015,8 @@ package body Trans.Chap2 is raise Internal_Error; when Type_Date_Type | Type_Date_State_Type - | Type_Time_Stamp_Id => + | Type_Time_Stamp_Id + | Type_File_Checksum_Id => -- Can this happen ? raise Internal_Error; when Type_String8_Id |