[PATCH 3/3] ada: Use 'Access instead of 'Unchecked_Access when applicable

Samuel Tardieu sam@rfc1149.net
Mon Nov 5 23:45:00 GMT 2007


2007-11-05  Samuel Tardieu  <sam@rfc1149.net>

	* a-tasatt.adb: Use 'Access instead of 'Unchecked_Access when
	applicable. Local lifetime is the one of the package.
	(Set_Value): W is allocated on the heap.

	* g-socket.adb: Use 'Access instead of 'Unchecked_Access when
	applicable.
	(Get_Socket_Option): Optlen formal of C_Getsockopt is of an anonymous
	access type.
	(Receive_Socket): Fromlen formal of C_Recvfrom is of an anonymous
	access type.

	* s-taasde.adb: Use 'Access instead of 'Unchecked_Access when
	applicable.
	(elaboration code): Timer_Queue lifetime is the one of the
	package.
---
 gcc/ada/a-tasatt.adb |   20 +++++++++-----------
 gcc/ada/g-socket.adb |    4 ++--
 gcc/ada/s-taasde.adb |    4 ++--
 3 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/gcc/ada/a-tasatt.adb b/gcc/ada/a-tasatt.adb
index bd04f41..1c73d54 100644
--- a/gcc/ada/a-tasatt.adb
+++ b/gcc/ada/a-tasatt.adb
@@ -415,7 +415,7 @@ package body Ada.Task_Attributes is
             POP.Lock_RTS;
 
             while P /= null loop
-               if P.Instance = Access_Instance'(Local'Unchecked_Access) then
+               if P.Instance = Access_Instance'(Local'Access) then
                   POP.Unlock_RTS;
                   Undefer_Abort (Self_Id);
                   return To_Access_Wrapper (P.Wrapper).Value'Access;
@@ -429,11 +429,10 @@ package body Ada.Task_Attributes is
             --  holding any other lock.
 
             POP.Unlock_RTS;
-            W := new Wrapper'
-                  ((null, Local'Unchecked_Access, null), Initial_Value);
+            W := new Wrapper'((null, Local'Access, null), Initial_Value);
             POP.Lock_RTS;
 
-            P := W.Dummy_Node'Unchecked_Access;
+            P := W.Dummy_Node'Access;
             P.Wrapper := To_Access_Dummy_Wrapper (W);
             P.Next := To_Access_Node (TT.Indirect_Attributes);
             TT.Indirect_Attributes := To_Access_Address (P);
@@ -494,7 +493,7 @@ package body Ada.Task_Attributes is
             Q := To_Access_Node (TT.Indirect_Attributes);
 
             while Q /= null loop
-               if Q.Instance = Access_Instance'(Local'Unchecked_Access) then
+               if Q.Instance = Access_Instance'(Local'Access) then
                   if P = null then
                      TT.Indirect_Attributes := To_Access_Address (Q.Next);
                   else
@@ -581,7 +580,7 @@ package body Ada.Task_Attributes is
 
          while P /= null loop
 
-            if P.Instance = Access_Instance'(Local'Unchecked_Access) then
+            if P.Instance = Access_Instance'(Local'Access) then
                To_Access_Wrapper (P.Wrapper).Value := Val;
                POP.Unlock_RTS;
                Undefer_Abort (Self_Id);
@@ -595,9 +594,9 @@ package body Ada.Task_Attributes is
          --  from using new (i.e the Global_Lock) while holding any other lock.
 
          POP.Unlock_RTS;
-         W := new Wrapper'((null, Local'Unchecked_Access, null), Val);
+         W := new Wrapper'((null, Local'Access, null), Val);
          POP.Lock_RTS;
-         P := W.Dummy_Node'Unchecked_Access;
+         P := W.Dummy_Node'Access;
          P.Wrapper := To_Access_Dummy_Wrapper (W);
          P.Next := To_Access_Node (TT.Indirect_Attributes);
          TT.Indirect_Attributes := To_Access_Address (P);
@@ -669,7 +668,7 @@ package body Ada.Task_Attributes is
          P := To_Access_Node (TT.Indirect_Attributes);
 
          while P /= null loop
-            if P.Instance = Access_Instance'(Local'Unchecked_Access) then
+            if P.Instance = Access_Instance'(Local'Access) then
                Result := To_Access_Wrapper (P.Wrapper).Value;
                POP.Unlock_RTS;
                Undefer_Abort (Self_Id);
@@ -724,8 +723,7 @@ begin
       --  Add this instantiation to the list of all instantiations
 
       Local.Next := System.Tasking.Task_Attributes.All_Attributes;
-      System.Tasking.Task_Attributes.All_Attributes :=
-        Local'Unchecked_Access;
+      System.Tasking.Task_Attributes.All_Attributes := Local'Access;
 
       --  Try to find space for the attribute in the TCB
 
diff --git a/gcc/ada/g-socket.adb b/gcc/ada/g-socket.adb
index 1168496..0efe260 100644
--- a/gcc/ada/g-socket.adb
+++ b/gcc/ada/g-socket.adb
@@ -978,7 +978,7 @@ package body GNAT.Sockets is
           (C.int (Socket),
            Levels (Level),
            Options (Name),
-           Add, Len'Unchecked_Access);
+           Add, Len'Access);
 
       if Res = Failure then
          Raise_Socket_Error (Socket_Errno);
@@ -1440,7 +1440,7 @@ package body GNAT.Sockets is
            Item'Length,
            To_Int (Flags),
            Sin'Unchecked_Access,
-           Len'Unchecked_Access);
+           Len'Access);
 
       if Res = Failure then
          Raise_Socket_Error (Socket_Errno);
diff --git a/gcc/ada/s-taasde.adb b/gcc/ada/s-taasde.adb
index b3e67ee..28e31e0 100644
--- a/gcc/ada/s-taasde.adb
+++ b/gcc/ada/s-taasde.adb
@@ -437,8 +437,8 @@ package body System.Tasking.Async_Delays is
    ------------------------------
 
 begin
-   Timer_Queue.Succ := Timer_Queue'Unchecked_Access;
-   Timer_Queue.Pred := Timer_Queue'Unchecked_Access;
+   Timer_Queue.Succ := Timer_Queue'Access;
+   Timer_Queue.Pred := Timer_Queue'Access;
    Timer_Queue.Resume_Time := Duration'Last;
    Timer_Server_ID := To_System (Timer_Server'Identity);
 end System.Tasking.Async_Delays;
-- 
1.5.3.5



More information about the Gcc-patches mailing list