[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 7 Jan 2015 10:12:03 +0000 (11:12 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 7 Jan 2015 10:12:03 +0000 (11:12 +0100)
2015-01-07  Robert Dewar  <dewar@adacore.com>

* a-reatim.adb, make.adb, exp_pakd.adb, i-cpoint.adb, sem_ch8.adb,
exp_ch3.adb: Minor reformatting.

2015-01-07  Doug Rupp  <rupp@adacore.com>

* s-linux.ads (clockid_t): New subtype.
* s-osinte-linux.ads (pragma Linker Options): Add -lrt.
(clockid_t): New subtype.
(clock_getres): Import system call.
* s-taprop-linux.adb (System.OS_Constants): With and rename.
(RT_Resolution): Remove
hardcoded value and call clock_getres.
* s-linux-sparc.ads, s-linux-mipsel.ads, s-linux-hppa.ads,
s-linux-alpha.ads, s-linux-x32.ads (clockid_t): Add new subtype.

2015-01-07  Robert Dewar  <dewar@adacore.com>

* sem_warn.adb (Check_One_Unit): Guard against context item
with no Entity field.

From-SVN: r219289

16 files changed:
gcc/ada/ChangeLog
gcc/ada/a-reatim.adb
gcc/ada/exp_ch3.adb
gcc/ada/exp_pakd.adb
gcc/ada/i-cpoint.adb
gcc/ada/make.adb
gcc/ada/s-linux-alpha.ads
gcc/ada/s-linux-hppa.ads
gcc/ada/s-linux-mipsel.ads
gcc/ada/s-linux-sparc.ads
gcc/ada/s-linux-x32.ads
gcc/ada/s-linux.ads
gcc/ada/s-osinte-linux.ads
gcc/ada/s-taprop-linux.adb
gcc/ada/sem_ch8.adb
gcc/ada/sem_warn.adb

index c0e8fc2fc2b90a6e05cc79d3615830041124f8e3..ed5e35202ee13513c3ae2d96fa35ef24b2c1351f 100644 (file)
@@ -1,3 +1,25 @@
+2015-01-07  Robert Dewar  <dewar@adacore.com>
+
+       * a-reatim.adb, make.adb, exp_pakd.adb, i-cpoint.adb, sem_ch8.adb,
+       exp_ch3.adb: Minor reformatting.
+
+2015-01-07  Doug Rupp  <rupp@adacore.com>
+
+       * s-linux.ads (clockid_t): New subtype.
+       * s-osinte-linux.ads (pragma Linker Options): Add -lrt.
+       (clockid_t): New subtype.
+       (clock_getres): Import system call.
+       * s-taprop-linux.adb (System.OS_Constants): With and rename.
+       (RT_Resolution): Remove
+       hardcoded value and call clock_getres.
+       * s-linux-sparc.ads, s-linux-mipsel.ads, s-linux-hppa.ads,
+       s-linux-alpha.ads, s-linux-x32.ads (clockid_t): Add new subtype.
+
+2015-01-07  Robert Dewar  <dewar@adacore.com>
+
+       * sem_warn.adb (Check_One_Unit): Guard against context item
+       with no Entity field.
+
 2015-01-07  Vincent Celier  <celier@adacore.com>
 
        * clean.adb (Gnatclean): Warn that 'gnatclean -P' is obsolete.
index 1a233c49481a35f17856637b898d5f77040554ae..4597dc3b5a7407480589f4e2363eb2798795edc6 100644 (file)
@@ -222,8 +222,8 @@ package body Ada.Real_Time is
       --  the intermediate result Time (SC) we take advantage of the different
       --  signs in SC and TS (when that is the case).
 
-      --  If signs of SC and TS are different then we avoid converting SC to
-      --  Time (as we do in the else part). The reason for that is that SC
+      --  If the signs of SC and TS are different then we avoid converting SC
+      --  to Time (as we do in the else part). The reason for that is that SC
       --  converted to Time may overflow the range of Time, while the addition
       --  of SC plus TS does not overflow (because of their different signs).
       --  The approach is to add and remove the greatest value of time
@@ -231,9 +231,7 @@ package body Ada.Real_Time is
       --  signs, so we add the positive constant to the negative value, and the
       --  negative constant to the positive value, to prevent overflows.
 
-      if (SC > 0 and then TS < 0.0)
-        or else (SC < 0 and then TS > 0.0)
-      then
+      if (SC > 0 and then TS < 0.0) or else (SC < 0 and then TS > 0.0) then
          declare
             Closest_Boundary : constant Seconds_Count :=
               (if TS >= 0.0 then
index 74afb6034c6e470a63c73b600b019063a123e96a..3ee51ef8662323040753efa07d133242bc47d4ac 100644 (file)
@@ -2395,14 +2395,16 @@ package body Exp_Ch3 is
                      declare
                         Parent_IP : constant Name_Id :=
                                       Make_Init_Proc_Name (Etype (Rec_Ent));
-                        Stmt      : Node_Id := First (Stmts);
-                        IP_Call   : Node_Id := Empty;
+                        Stmt      : Node_Id;
+                        IP_Call   : Node_Id;
                         IP_Stmts  : List_Id;
 
                      begin
                         --  Look for a call to the parent IP at the beginning
                         --  of Stmts associated with the record extension
 
+                        Stmt := First (Stmts);
+                        IP_Call := Empty;
                         while Present (Stmt) loop
                            if Nkind (Stmt) = N_Procedure_Call_Statement
                              and then Chars (Name (Stmt)) = Parent_IP
index cd592dc35290de45f75089b372391d7450227136..d0836118851176582265a3485bca5eba69d517a1 100644 (file)
@@ -765,9 +765,9 @@ package body Exp_Pakd is
       elsif not Is_Constrained (Typ) then
 
          --  When generating standard DWARF, the ___XP suffix will be stripped
-         --  by the back-end, but generate it anyway to ease compiler
-         --  debugging: this will help to distinguish implementation types from
-         --  original packed arrays.
+         --  by the back-end but generate it anyway to ease compiler debugging.
+         --  This will help to distinguish implementation types from original
+         --  packed arrays.
 
          PAT :=
            Make_Defining_Identifier (Loc,
index 39c7bef72a2fbb8f85a70e374a7d0f208d1f6678..8da412bdea7baf685bad9da55be6f67198c24ed0 100644 (file)
@@ -145,12 +145,14 @@ package body Interfaces.C.Pointers is
    is
       L : ptrdiff_t;
       S : Pointer := Source;
+
    begin
       if Source = null or Target = null then
          raise Dereference_Error;
       end if;
 
       --  Compute array length (including the terminator)
+
       L := 1;
       while S.all /= Terminator and then L < Limit loop
          L := L + 1;
index 8bbe0949955f8c2548ef591ef30ea751f2cb8e5e..8fc4763e71c0b54e6adaf5f19144f73c6c2d8dd4 100644 (file)
@@ -6490,8 +6490,8 @@ package body Make is
 
       if Project_File_Name /= null then
          Write_Line
-           ("warning: gnatmake -P is obsolete and will not be available " &
-            "in the next release. Use gprbuild instead.");
+           ("warning: gnatmake -P is obsolete and will not be available "
+            & "in the next release; use gprbuild instead");
       end if;
 
       --  If --subdirs= is specified, but not -P, this is equivalent to -D,
index e1c97ad9a335a9340745b0b8793be2d8e379af6b..23ca44aad7cd10800b1af922832707457038a0a9 100644 (file)
@@ -47,6 +47,7 @@ package System.Linux is
    subtype long        is Interfaces.C.long;
    subtype suseconds_t is Interfaces.C.long;
    subtype time_t      is Interfaces.C.long;
+   subtype clockid_t   is Interfaces.C.int;
 
    type timespec is record
       tv_sec  : time_t;
index 8f7d811757654c0bf71d79f67e5f3a675d526cc3..d72c96ebcaf9ce4c2d37f8bd8b7a96097ac13a28 100644 (file)
@@ -47,6 +47,7 @@ package System.Linux is
    subtype long        is Interfaces.C.long;
    subtype suseconds_t is Interfaces.C.long;
    subtype time_t      is Interfaces.C.long;
+   subtype clockid_t   is Interfaces.C.int;
 
    type timespec is record
       tv_sec  : time_t;
index 1799a557ac6627477eea895ec2f57d7d0f3089dd..17a3375cccedb390e0dd0e4f31c9ed529ea68a12 100644 (file)
@@ -46,6 +46,7 @@ package System.Linux is
    subtype long        is Interfaces.C.long;
    subtype suseconds_t is Interfaces.C.long;
    subtype time_t      is Interfaces.C.long;
+   subtype clockid_t   is Interfaces.C.int;
 
    type timespec is record
       tv_sec  : time_t;
index ae813e6b3b4358da2f53c182c1b750d901b6db3e..96c67145fe1f3d07933dc3e2a2c97e61e117e2b4 100644 (file)
@@ -47,6 +47,7 @@ package System.Linux is
    subtype long        is Interfaces.C.long;
    subtype suseconds_t is Interfaces.C.long;
    subtype time_t      is Interfaces.C.long;
+   subtype clockid_t   is Interfaces.C.int;
 
    type timespec is record
       tv_sec  : time_t;
index 1b2d46eddd2c24684de02867a3f0721659128aa3..6fb453c2b4badd85812ecfe358fa244bfe5f686e 100644 (file)
@@ -36,6 +36,8 @@
 --  PLEASE DO NOT add any with-clauses to this package or remove the pragma
 --  Preelaborate. This package is designed to be a bottom-level (leaf) package
 
+with Interfaces.C;
+
 package System.Linux is
    pragma Preelaborate;
 
@@ -43,7 +45,8 @@ package System.Linux is
    -- Time --
    ----------
 
-   type time_t is new Long_Long_Integer;
+   type time_t       is new Long_Long_Integer;
+   subtype clockid_t is Interfaces.C.int;
 
    type timespec is record
       tv_sec  : time_t;
index 8a49e8c891edea839a8849abca217a2e8597e2c9..3b48284644132b69f907f50b4207ec4e44f258f4 100644 (file)
@@ -47,6 +47,7 @@ package System.Linux is
    subtype long        is Interfaces.C.long;
    subtype suseconds_t is Interfaces.C.long;
    subtype time_t      is Interfaces.C.long;
+   subtype clockid_t   is Interfaces.C.int;
 
    type timespec is record
       tv_sec  : time_t;
index d6930de96407cb0b08fade42f15cdd7b201d578a..c71bebc8d8a669312c2337c5af14e28ed6cd6a6b 100644 (file)
@@ -47,6 +47,8 @@ package System.OS_Interface is
    pragma Preelaborate;
 
    pragma Linker_Options ("-lpthread");
+   pragma Linker_Options ("-lrt");
+   --  Needed for clock_getres with glibc versions prior to 2.17
 
    subtype int            is Interfaces.C.int;
    subtype char           is Interfaces.C.char;
@@ -217,9 +219,15 @@ package System.OS_Interface is
    -- Time --
    ----------
 
-   subtype time_t   is System.Linux.time_t;
-   subtype timespec is System.Linux.timespec;
-   subtype timeval  is System.Linux.timeval;
+   subtype time_t    is System.Linux.time_t;
+   subtype timespec  is System.Linux.timespec;
+   subtype timeval   is System.Linux.timeval;
+   subtype clockid_t is System.Linux.clockid_t;
+
+   function clock_getres
+     (clock_id : clockid_t;
+      res      : access timespec) return int;
+   pragma Import (C, clock_getres, "clock_getres");
 
    function To_Duration (TS : timespec) return Duration;
    pragma Inline (To_Duration);
index a95013fa67619e5ebe3cb1a4185e40778c2f11b1..bf5e99295028dc067a751f5517fba69243e82c6c 100644 (file)
@@ -44,6 +44,7 @@ with Interfaces.C.Extensions;
 with System.Task_Info;
 with System.Tasking.Debug;
 with System.Interrupt_Management;
+with System.OS_Constants;
 with System.OS_Primitives;
 with System.Stack_Checking.Operations;
 with System.Multiprocessors;
@@ -56,6 +57,7 @@ with System.Soft_Links;
 
 package body System.Task_Primitives.Operations is
 
+   package OSC renames System.OS_Constants;
    package SSL renames System.Soft_Links;
    package SC renames System.Stack_Checking.Operations;
 
@@ -658,8 +660,13 @@ package body System.Task_Primitives.Operations is
    -------------------
 
    function RT_Resolution return Duration is
+      TS     : aliased timespec;
+      Result : int;
    begin
-      return 10#1.0#E-6;
+      Result := clock_getres (OSC.CLOCK_REALTIME, TS'Unchecked_Access);
+      pragma Assert (Result = 0);
+
+      return To_Duration (TS);
    end RT_Resolution;
 
    ------------
index 2b4f52830e16067f0f022b6ab5fad2586ce382f8..bd015886bcc830ee14df1f3d13cd42f592a09fa0 100644 (file)
@@ -2710,16 +2710,15 @@ package body Sem_Ch8 is
          --  Check whether the renaming is for a defaulted actual subprogram
          --  with a class-wide actual.
 
-         --  The class-wide wrapper is not needed when we are in
-         --  GNATprove_Mode and there is an external axiomatization on the
-         --  package.
+         --  The class-wide wrapper is not needed in GNATprove_Mode and there
+         --  is an external axiomatization on the package.
 
          if CW_Actual
             and then Box_Present (Inst_Node)
-            and then not (GNATprove_Mode
-                          and then
-                          Present (Containing_Package_With_Ext_Axioms
-                                     (Formal_Spec)))
+            and then not
+             (GNATprove_Mode
+               and then
+                 Present (Containing_Package_With_Ext_Axioms (Formal_Spec)))
          then
             Build_Class_Wide_Wrapper (New_S, Old_S);
 
index 7bdda640731757fb435e571153e330b837e91e3f..484509602c0cd377afa4d5e0098e3ed162fed2ca 100644 (file)
@@ -2350,6 +2350,13 @@ package body Sem_Warn is
             if Nkind (Item) = N_With_Clause
               and then not Implicit_With (Item)
               and then In_Extended_Main_Source_Unit (Item)
+
+              --  Guard for no entity present. Not clear under what conditions
+              --  this happens, but it does occur, and since this is only a
+              --  warning, we just suppress the warning in this case.
+
+              and then Nkind (Name (Item)) in N_Has_Entity
+              and then Present (Entity (Name (Item)))
             then
                Lunit := Entity (Name (Item));