diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 88c0e79103d..cd231664c4a 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2014-08-01 Robert Dewar + + * inline.adb, s-os_lib.ads: Minor reformatting. + +2014-08-01 Arnaud Charlet + + * s-tasdeb.ads, s-tasdeb.adb (Master_Hook, Master_Completed_Hook): New. + * s-tassta.adb (Task_Wrapper, Vulnerable_Complete_Master): Call new + hooks. + 2014-08-01 Yannick Moy * inline.adb (Cannot_Inline): Issue info message instead of diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb index b9531c6c068..36631c2d68f 100644 --- a/gcc/ada/inline.adb +++ b/gcc/ada/inline.adb @@ -1239,10 +1239,14 @@ package body Inline is and then Msg (Msg'First .. Msg'First + 12) = "cannot inline" then declare - Len1 : constant Positive := 13; -- length of "cannot inline" + Len1 : constant Positive := 13; + -- Length of "cannot inline" + Len2 : constant Positive := 31; - -- lenth of "info: no contextual analysis of" + -- Length of "info: no contextual analysis of" + New_Msg : String (1 .. Msg'Length + Len2 - Len1); + begin New_Msg (1 .. Len2) := "info: no contextual analysis of"; New_Msg (Len2 + 1 .. Msg'Length + Len2 - Len1) := diff --git a/gcc/ada/s-os_lib.ads b/gcc/ada/s-os_lib.ads index 77052cdb9b6..d3ded15ee4a 100644 --- a/gcc/ada/s-os_lib.ads +++ b/gcc/ada/s-os_lib.ads @@ -426,7 +426,9 @@ package System.OS_Lib is -- to the current position (origin = SEEK_CUR), end of file (origin = -- SEEK_END), or start of file (origin = SEEK_SET). - type Large_File_Size is range -2 ** 63 .. 2 ** 63 - 1; + type Large_File_Size is range -2**63 .. 2**63 - 1; + -- Maximum supported size for a file (8 exabytes = 8 million terabytes, + -- should be enough to accomodate all possible needs for quite a while). function File_Length (FD : File_Descriptor) return Long_Integer; pragma Import (C, File_Length, "__gnat_file_length_long"); diff --git a/gcc/ada/s-tasdeb.adb b/gcc/ada/s-tasdeb.adb index d56e0cab203..a18b844bcba 100644 --- a/gcc/ada/s-tasdeb.adb +++ b/gcc/ada/s-tasdeb.adb @@ -437,4 +437,34 @@ package body System.Tasking.Debug is (Fd, S'Address, System.CRTL.size_t (Count)); end Write; + ----------------- + -- Master_Hook -- + ----------------- + + procedure Master_Hook + (Dependent : Task_Id; + Parent : Task_Id; + Master_Level : Integer) + is + pragma Inspection_Point (Dependent); + pragma Inspection_Point (Parent); + pragma Inspection_Point (Master_Level); + begin + null; + end Master_Hook; + + --------------------------- + -- Master_Completed_Hook -- + --------------------------- + + procedure Master_Completed_Hook + (Self_ID : Task_Id; + Master_Level : Integer) + is + pragma Inspection_Point (Self_ID); + pragma Inspection_Point (Master_Level); + begin + null; + end Master_Completed_Hook; + end System.Tasking.Debug; diff --git a/gcc/ada/s-tasdeb.ads b/gcc/ada/s-tasdeb.ads index 2c43dc1d127..4302fde5266 100644 --- a/gcc/ada/s-tasdeb.ads +++ b/gcc/ada/s-tasdeb.ads @@ -145,4 +145,21 @@ package System.Tasking.Debug is -- Enable or disable tracing for Flag. By default, flags in the range -- 'A' .. 'Z' are disabled, others are enabled. + --------------------------------- + -- Hooks for Valgrind/Helgrind -- + --------------------------------- + + procedure Master_Hook + (Dependent : Task_Id; + Parent : Task_Id; + Master_Level : Integer); + -- Indicate to Valgrind/Helgrind that the master of Dependent + -- is Parent + Master_Level. + + procedure Master_Completed_Hook + (Self_ID : Task_Id; + Master_Level : Integer); + -- Indicate to Valgrind/Helgrind that Self_ID has completed + -- the master Master_Level. + end System.Tasking.Debug; diff --git a/gcc/ada/s-tassta.adb b/gcc/ada/s-tassta.adb index 46a4be55113..1cf83dad099 100644 --- a/gcc/ada/s-tassta.adb +++ b/gcc/ada/s-tassta.adb @@ -1119,6 +1119,9 @@ package body System.Tasking.Stages is begin pragma Assert (Self_ID.Deferral_Level = 1); + Debug.Master_Hook + (Self_ID, Self_ID.Common.Parent, Self_ID.Master_of_Task); + -- Assume a size of the stack taken at this stage if not Parameters.Sec_Stack_Dynamic then @@ -1985,6 +1988,8 @@ package body System.Tasking.Stages is -- since the value is only updated by each task for itself. Self_ID.Master_Within := CM - 1; + + Debug.Master_Completed_Hook (Self_ID, CM); end Vulnerable_Complete_Master; ------------------------------