]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Sun, 13 Oct 2013 16:21:32 +0000 (18:21 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Sun, 13 Oct 2013 16:21:32 +0000 (18:21 +0200)
2013-10-13  Thomas Quinot  <quinot@adacore.com>

* scos.ads: Minor documentation clarification.

2013-10-13  Thomas Quinot  <quinot@adacore.com>

* s-oscons-tmplt.c (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC when
building on AIX 5.3 or later, and to CLOCK_REALTIME on older
versions of AIX.
* init.c (pthread_condattr_setclock): Remove now useless weak symbol.
* thread.c(__gnat_pthread_condattr_setup): Remove bogus AIX 5.2
compatibility shim.
* s-osinte-aix.ads(clock_id_t): Fix C mapping (this is a 64-bit
type).
(clock_gettime): Import from C runtime library.
* s-osinte-aix.adb (clock_gettime): Remove bogus emulation body,
this routine is provided by the system in current supported
versions of AIX.

2013-10-13  Robert Dewar  <dewar@adacore.com>

* sem_ch3.adb: Minor reformatting.

2013-10-13  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb (Freeze_Entity): For a function whose return type
is incomplete, do not replace the type with the full view if the
type is a limited view.  In that case the full view appears in a
different unit, and the back-end will retrieve it at the proper
elaboration point.

2013-10-13  Yannick Moy  <moy@adacore.com>

* exp_spark.adb (Expand_SPARK_Call): Do not introduce temporaries for
actuals.

From-SVN: r203503

gcc/ada/ChangeLog
gcc/ada/exp_spark.adb
gcc/ada/freeze.adb
gcc/ada/init.c
gcc/ada/s-oscons-tmplt.c
gcc/ada/s-osinte-aix.adb
gcc/ada/s-osinte-aix.ads
gcc/ada/scos.ads
gcc/ada/sem_ch3.adb
gcc/ada/thread.c

index b8483d48e00c19e7dc6436259d5854bf0757d0ac..6afa9022280cd7ad3f45c6864bffa156865f9b24 100644 (file)
@@ -1,3 +1,39 @@
+2013-10-13  Thomas Quinot  <quinot@adacore.com>
+
+       * scos.ads: Minor documentation clarification.
+
+2013-10-13  Thomas Quinot  <quinot@adacore.com>
+
+       * s-oscons-tmplt.c (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC when
+       building on AIX 5.3 or later, and to CLOCK_REALTIME on older
+       versions of AIX.
+       * init.c (pthread_condattr_setclock): Remove now useless weak symbol.
+       * thread.c(__gnat_pthread_condattr_setup): Remove bogus AIX 5.2
+       compatibility shim.
+       * s-osinte-aix.ads(clock_id_t): Fix C mapping (this is a 64-bit
+       type).
+       (clock_gettime): Import from C runtime library.
+       * s-osinte-aix.adb (clock_gettime): Remove bogus emulation body,
+       this routine is provided by the system in current supported
+       versions of AIX.
+
+2013-10-13  Robert Dewar  <dewar@adacore.com>
+
+       * sem_ch3.adb: Minor reformatting.
+
+2013-10-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * freeze.adb (Freeze_Entity): For a function whose return type
+       is incomplete, do not replace the type with the full view if the
+       type is a limited view.  In that case the full view appears in a
+       different unit, and the back-end will retrieve it at the proper
+       elaboration point.
+
+2013-10-13  Yannick Moy  <moy@adacore.com>
+
+       * exp_spark.adb (Expand_SPARK_Call): Do not introduce temporaries for
+       actuals.
+
 2013-10-13  Ed Schonberg  <schonberg@adacore.com>
 
        * sem_ch3.adb: in Ada 2012 access_to_function types can have
index bd8932ecb6039bd3c78b90715d2e189d86327e67..7851f0999cfddd38804a24f20ee58d9d45b288eb 100644 (file)
@@ -26,7 +26,6 @@
 with Atree;    use Atree;
 with Einfo;    use Einfo;
 with Exp_Ch4;  use Exp_Ch4;
-with Exp_Ch6;  use Exp_Ch6;
 with Exp_Dbug; use Exp_Dbug;
 with Exp_Util; use Exp_Util;
 with Sem_Aux;  use Sem_Aux;
@@ -43,9 +42,7 @@ package body Exp_SPARK is
 
    procedure Expand_SPARK_Call (N : Node_Id);
    --  This procedure contains common processing for function and procedure
-   --  calls:
-   --    * expansion of actuals to introduce necessary temporaries
-   --    * replacement of renaming by subprogram renamed
+   --  calls: replacement of renaming by subprogram renamed
 
    procedure Expand_SPARK_N_Object_Renaming_Declaration (N : Node_Id);
    --  Perform name evaluation for a renamed object
@@ -106,7 +103,6 @@ package body Exp_SPARK is
    procedure Expand_SPARK_Call (N : Node_Id) is
       Call_Node   : constant Node_Id := N;
       Parent_Subp : Entity_Id;
-      Subp        : Entity_Id;
 
    begin
       --  Ignore if previous error
@@ -120,14 +116,12 @@ package body Exp_SPARK is
       --  Call using access to subprogram with explicit dereference
 
       if Nkind (Name (Call_Node)) = N_Explicit_Dereference then
-         Subp        := Etype (Name (Call_Node));
          Parent_Subp := Empty;
 
       --  Case of call to simple entry, where the Name is a selected component
       --  whose prefix is the task, and whose selector name is the entry name
 
       elsif Nkind (Name (Call_Node)) = N_Selected_Component then
-         Subp        := Entity (Selector_Name (Name (Call_Node)));
          Parent_Subp := Empty;
 
       --  Case of call to member of entry family, where Name is an indexed
@@ -135,20 +129,14 @@ package body Exp_SPARK is
       --  task and entry family name, and the index being the entry index.
 
       elsif Nkind (Name (Call_Node)) = N_Indexed_Component then
-         Subp        := Entity (Selector_Name (Prefix (Name (Call_Node))));
          Parent_Subp := Empty;
 
       --  Normal case
 
       else
-         Subp        := Entity (Name (Call_Node));
-         Parent_Subp := Alias (Subp);
+         Parent_Subp := Alias (Entity (Name (Call_Node)));
       end if;
 
-      --  Various expansion activities for actuals are carried out
-
-      Expand_Actuals (N, Subp);
-
       --  If the subprogram is a renaming, replace it in the call with the name
       --  of the actual subprogram being called.
 
index 67f203de5591211077185cdaaac866d783e75282..8c9ceb0c9179bcbb0aa91834940fe9578c0ff882 100644 (file)
@@ -2956,6 +2956,7 @@ package body Freeze is
 
                      if Is_Incomplete_Type (F_Type)
                        and then Present (Full_View (F_Type))
+                       and then not From_With_Type (F_Type)
                      then
                         F_Type := Full_View (F_Type);
                         Set_Etype (Formal, F_Type);
@@ -3134,10 +3135,15 @@ package body Freeze is
                      R_Type := Etype (E);
 
                      --  AI05-0151: the return type may have been incomplete
-                     --  at the point of declaration.
+                     --  at the point of declaration. Replace it with the full
+                     --  view, unless the current type is a limited view. In
+                     --  that case the full view is in a different unit, and
+                     --  gigi finds the non-limited view after the other unit
+                     --  is elaborated.
 
                      if Ekind (R_Type) = E_Incomplete_Type
                        and then Present (Full_View (R_Type))
+                       and then not From_With_Type (R_Type)
                      then
                         R_Type := Full_View (R_Type);
                         Set_Etype (E, R_Type);
index 1b2e188ab515c82501ed75109c431ddd9c1ed765..c8de26b6498f85b527e7f4130e857135bcecd6af 100644 (file)
@@ -226,19 +226,6 @@ nanosleep (struct timestruc_t *Rqtp, struct timestruc_t *Rmtp)
 
 #endif /* _AIXVERSION_430 */
 
-/* Version of AIX before 5.3 don't have pthread_condattr_setclock:
- * supply it as a weak symbol here so that if linking on a 5.3 or newer
- * machine, we get the real one.
- */
-
-#ifndef _AIXVERSION_530
-#pragma weak pthread_condattr_setclock
-int
-pthread_condattr_setclock (pthread_condattr_t *attr, clockid_t cl) {
-  return 0;
-}
-#endif
-
 static void
 __gnat_error_handler (int sig,
                      siginfo_t *si ATTRIBUTE_UNUSED,
index 6f018f8ea7a6ed50608fbaa9e8067b70d6c33be6..2357d61d699da88ab9d7bbc5443adb68698dbe63 100644 (file)
@@ -1407,11 +1407,15 @@ CND(CLOCK_FASTEST, "Fastest clock")
 #endif
 CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU clock")
 
-
-#if defined(__FreeBSD__) || defined(_AIX)
+#if defined(__FreeBSD__) || (defined(_AIX) && defined(_AIXVERSION_530))
 /** On these platforms use system provided monotonic clock instead of
- ** the default CLOCK_REALTIME. Note: We then need to set up cond var
- ** attributes appropriately (see thread.c).
+ ** the default CLOCK_REALTIME. We then need to set up cond var attributes
+ ** appropriately (see thread.c).
+ **
+ ** Note that AIX 5.2 does not support CLOCK_MONOTONIC timestamps for
+ ** pthread_cond_timedwait (and does not have pthread_condattr_setclock),
+ ** hence the conditionalization on AIX version above). _AIXVERSION_530
+ ** is defined in AIX 5.3 and more recent versions.
  **/
 # define CLOCK_RT_Ada "CLOCK_MONOTONIC"
 
index bfe03a637b2c9bf837d9708390b5c61bf7a2e8cf..2d5f160ca5f9baa8abf212b87f2e089315a7a3b4 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                  B o d y                                 --
 --                                                                          --
---          Copyright (C) 1997-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1997-2013, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNARL is free software; you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -99,48 +99,6 @@ package body System.OS_Interface is
                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
    end To_Timespec;
 
-   -------------------
-   -- clock_gettime --
-   -------------------
-
-   function clock_gettime
-     (clock_id : clockid_t;
-      tp       : access timespec)
-      return     int
-   is
-      pragma Unreferenced (clock_id);
-
-      --  Older AIX don't have clock_gettime, so use gettimeofday
-
-      use Interfaces;
-
-      type timeval is array (1 .. 2) of C.long;
-
-      procedure timeval_to_duration
-        (T    : not null access timeval;
-         sec  : not null access C.long;
-         usec : not null access C.long);
-      pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration");
-
-      Micro  : constant := 10**6;
-      sec    : aliased C.long;
-      usec   : aliased C.long;
-      TV     : aliased timeval;
-      Result : int;
-
-      function gettimeofday
-        (Tv : access timeval;
-         Tz : System.Address := System.Null_Address) return int;
-      pragma Import (C, gettimeofday, "gettimeofday");
-
-   begin
-      Result := gettimeofday (TV'Access, System.Null_Address);
-      pragma Assert (Result = 0);
-      timeval_to_duration (TV'Access, sec'Access, usec'Access);
-      tp.all := To_Timespec (Duration (sec) + Duration (usec) / Micro);
-      return Result;
-   end clock_gettime;
-
    -----------------
    -- sched_yield --
    -----------------
index c89e7296e14a5b7a736939dcbb3987754f5ca2c3..6fce65ffd23aa10f194ce263ebf1ad6f06499ac5 100644 (file)
@@ -7,7 +7,7 @@
 --                                  S p e c                                 --
 --                                                                          --
 --             Copyright (C) 1991-1994, Florida State University            --
---          Copyright (C) 1995-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1995-2013, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -41,6 +41,7 @@
 with Ada.Unchecked_Conversion;
 
 with Interfaces.C;
+with Interfaces.C.Extensions;
 
 package System.OS_Interface is
    pragma Preelaborate;
@@ -55,6 +56,7 @@ package System.OS_Interface is
    subtype int            is Interfaces.C.int;
    subtype short          is Interfaces.C.short;
    subtype long           is Interfaces.C.long;
+   subtype long_long      is Interfaces.C.Extensions.long_long;
    subtype unsigned       is Interfaces.C.unsigned;
    subtype unsigned_short is Interfaces.C.unsigned_short;
    subtype unsigned_long  is Interfaces.C.unsigned_long;
@@ -197,11 +199,12 @@ package System.OS_Interface is
 
    type timespec is private;
 
-   type clockid_t is new int;
+   type clockid_t is new long_long;
 
    function clock_gettime
      (clock_id : clockid_t;
       tp       : access timespec) return int;
+   pragma Import (C, clock_gettime, "clock_gettime");
 
    function To_Duration (TS : timespec) return Duration;
    pragma Inline (To_Duration);
index dc4248e12d9029ec09f60c833563320b12b91e6e..6efc5cebcc9aa072d1ef12b7189de1c627c6ab55 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 2009-2012, Free Software Foundation, Inc.         --
+--          Copyright (C) 2009-2013, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -367,11 +367,12 @@ package SCOs is
       Last : Boolean         := False;
 
       Pragma_Sloc : Source_Ptr := No_Location;
-      --  For the statement SCO for a pragma, or for any expression SCO nested
-      --  in a pragma Debug/Assert/PPC, location of PRAGMA token (used for
-      --  control of SCO output, value not recorded in ALI file). For the
-      --  decision SCO for an aspect, or for any expression SCO nested in an
-      --  aspect, location of aspect identifier token (likewise).
+      --  For the decision SCO of a pragma, or for the decision SCO of any
+      --  expression nested in a pragma Debug/Assert/PPC, location of PRAGMA
+      --  token (used for control of SCO output, value not recorded in ALI
+      --  file). Similarly, for the decision SCO of an aspect, or for the
+      --  decision SCO of any expression nested in an aspect, location of
+      --  aspect identifier token.
 
       Pragma_Aspect_Name : Name_Id := No_Name;
       --  For the SCO for a pragma/aspect, gives the pragma/apsect name
index 6b2e0a66b81899f88bdd1c24bda17b54819e4525..77805d1d45ff8c7bd90fa51866b46ba2364dc9ce 100644 (file)
@@ -4052,7 +4052,7 @@ package body Sem_Ch3 is
       --  type with constraints. In this case the entity has been introduced
       --  in the private declaration.
 
-      --  Finally this happens in some complex cases  when validity checks are
+      --  Finally this happens in some complex cases when validity checks are
       --  enabled, where the same subtype declaration may be analyzed twice.
       --  This can happen if the subtype is created by the pre-analysis of
       --  an attribute tht gives the range of a loop statement, and the loop
index 237cfaf79e461d21dd5c18adbf9479459be60fd0..31309e05b6e1237c2630c98ebe95bf971b7dfdfe 100644 (file)
 # include <pthread.h>
 # include <time.h>
 
-#ifndef _AIXVERSION_530
-/* We use the same runtime library for AIX 5.2 and 5.3, but pthread_condattr_
- * setclock exists only on the latter, so for the former provide a dummy
- * implementation (declared below, weak symbol defined in init.c).
- *
- * Note: this means that under AIX 5.2 we'll be using CLOCK_MONOTONIC
- * timestamps from clock_gettime() as arguments to pthread_cond_timedwait,
- * which expects a CLOCK_REALTIME value, which is technically wrong, but
- * inocuous in practice on that particular platform since both clocks happen
- * to use close epochs.
- */
-
-extern int pthread_condattr_setclock (pthread_condattr_t *attr, clockid_t cl);
-#endif
-
 int
 __gnat_pthread_condattr_setup(pthread_condattr_t *attr) {
-/*
- * If using a clock other than CLOCK_REALTIME for the Ada Monotonic_Clock,
- * the corresponding clock id must be set for condition variables.
- */
   return pthread_condattr_setclock (attr, CLOCK_RT_Ada);
 }