[Ada] Continuation of "Get rid of more references to Universal_Integer"
authorArnaud Charlet <charlet@adacore.com>
Mon, 20 Jan 2020 11:07:09 +0000 (06:07 -0500)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 4 Jun 2020 09:10:58 +0000 (05:10 -0400)
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnat/s-atopar.adb, libgnat/s-atopex.adb: Use Object_Size
instead of Size, otherwise many derived types will be rejected
(e.g. a type with a 14 bits 'Size and a 16 bits 'Object_Size).

gcc/ada/libgnat/s-atopar.adb
gcc/ada/libgnat/s-atopex.adb

index d4590c708e83ee853eebf16b62d9cdae18e34a75..554561c3468869a1dd2ff4894c94517e2c208b2b 100644 (file)
@@ -88,7 +88,7 @@ package body System.Atomic_Operations.Arithmetic is
       pragma Warnings (On);
 
    begin
-      case Atomic_Type'Size is
+      case Atomic_Type'Object_Size is
          when 8      => return Atomic_Fetch_Add_1 (Item'Address, Value);
          when 16     => return Atomic_Fetch_Add_2 (Item'Address, Value);
          when 32     => return Atomic_Fetch_Add_4 (Item'Address, Value);
@@ -125,7 +125,7 @@ package body System.Atomic_Operations.Arithmetic is
       pragma Warnings (On);
 
    begin
-      case Atomic_Type'Size is
+      case Atomic_Type'Object_Size is
          when 8      => return Atomic_Fetch_Sub_1 (Item'Address, Value);
          when 16     => return Atomic_Fetch_Sub_2 (Item'Address, Value);
          when 32     => return Atomic_Fetch_Sub_4 (Item'Address, Value);
@@ -142,7 +142,7 @@ package body System.Atomic_Operations.Arithmetic is
       pragma Unreferenced (Item);
       use type Interfaces.C.size_t;
    begin
-      return Boolean (Atomic_Always_Lock_Free (Atomic_Type'Size / 8));
+      return Boolean (Atomic_Always_Lock_Free (Atomic_Type'Object_Size / 8));
    end Is_Lock_Free;
 
 end System.Atomic_Operations.Arithmetic;
index 1c2921f9151e0fb3a7686bb8dcc4bf2a2f47bbc8..4fb28241039fa860fdb881078f35046566b6820c 100644 (file)
@@ -66,7 +66,7 @@ package body System.Atomic_Operations.Exchange is
       pragma Warnings (On);
 
    begin
-      case Atomic_Type'Size is
+      case Atomic_Type'Object_Size is
          when 8      => return Atomic_Exchange_1 (Item'Address, Value);
          when 16     => return Atomic_Exchange_2 (Item'Address, Value);
          when 32     => return Atomic_Exchange_4 (Item'Address, Value);
@@ -124,7 +124,7 @@ package body System.Atomic_Operations.Exchange is
       pragma Warnings (On);
 
    begin
-      case Atomic_Type'Size is
+      case Atomic_Type'Object_Size is
          when 8 =>
             return Boolean
               (Atomic_Compare_Exchange_1
@@ -154,7 +154,7 @@ package body System.Atomic_Operations.Exchange is
       pragma Unreferenced (Item);
       use type Interfaces.C.size_t;
    begin
-      return Boolean (Atomic_Always_Lock_Free (Atomic_Type'Size / 8));
+      return Boolean (Atomic_Always_Lock_Free (Atomic_Type'Object_Size / 8));
    end Is_Lock_Free;
 
 end System.Atomic_Operations.Exchange;