[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Fri, 1 Aug 2014 10:08:23 +0000 (12:08 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 1 Aug 2014 10:08:23 +0000 (12:08 +0200)
2014-08-01  Robert Dewar  <dewar@adacore.com>

* inline.adb, s-os_lib.ads: Minor reformatting.

2014-08-01  Arnaud Charlet  <charlet@adacore.com>

* s-tasdeb.ads, s-tasdeb.adb (Master_Hook, Master_Completed_Hook): New.
* s-tassta.adb (Task_Wrapper, Vulnerable_Complete_Master): Call new
hooks.

From-SVN: r213444

gcc/ada/ChangeLog
gcc/ada/inline.adb
gcc/ada/s-os_lib.ads
gcc/ada/s-tasdeb.adb
gcc/ada/s-tasdeb.ads
gcc/ada/s-tassta.adb

index 88c0e79103d0eb19079925bd3a069cf9d8daac97..cd231664c4a188fd6f13b3f1180e6b47561ea3e9 100644 (file)
@@ -1,3 +1,13 @@
+2014-08-01  Robert Dewar  <dewar@adacore.com>
+
+       * inline.adb, s-os_lib.ads: Minor reformatting.
+
+2014-08-01  Arnaud Charlet  <charlet@adacore.com>
+
+       * 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  <moy@adacore.com>
 
        * inline.adb (Cannot_Inline): Issue info message instead of
index b9531c6c0687d8b1ad020550945202d90deb4e62..36631c2d68fc2c4618dad270c276e40c19381fc5 100644 (file)
@@ -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) :=
index 77052cdb9b656c637f9b15e589344ff4cde20ccd..d3ded15ee4a70b366deca6e2e7e27b7974b81609 100644 (file)
@@ -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");
index d56e0cab20303d4c903ead11f91f86a754f998f8..a18b844bcba4439839fc84a2a648e8c41fa62a25 100644 (file)
@@ -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;
index 2c43dc1d127efa3fdbec724ea957f66b15c40bc4..4302fde526694dd5609bb9564a4df56265c30131 100644 (file)
@@ -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;
index 46a4be55113feb784b7aeab526f449f135dd7df4..1cf83dad09900ed438a07ef1957738221151f0d2 100644 (file)
@@ -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;
 
    ------------------------------