aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2020-10-12 21:12:56 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2020-11-25 08:22:27 -0500
commit6d88dbdc5e33765ae481b57e5ed027fe1fb2e409 (patch)
treedc3030c0328a94efea5877768d5e7cb6b21a16e6 /gcc
parentbbf14e1350d3054e02ac9d83b61b84cc23d2c157 (diff)
downloadgcc-6d88dbdc5e33765ae481b57e5ed027fe1fb2e409.zip
gcc-6d88dbdc5e33765ae481b57e5ed027fe1fb2e409.tar.gz
gcc-6d88dbdc5e33765ae481b57e5ed027fe1fb2e409.tar.bz2
[Ada] Add support for 128-bit integer types to GNAT.Random_Numbers
gcc/ada/ * libgnat/g-rannum.ads (Random): New functions returning 128-bit. * libgnat/g-rannum.adb (Random): Implement them and alphabetize. (To_Signed): New unchecked conversion function for 128-bit.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/libgnat/g-rannum.adb16
-rw-r--r--gcc/ada/libgnat/g-rannum.ads2
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ada/libgnat/g-rannum.adb b/gcc/ada/libgnat/g-rannum.adb
index b7ef7d1..3895cdd 100644
--- a/gcc/ada/libgnat/g-rannum.adb
+++ b/gcc/ada/libgnat/g-rannum.adb
@@ -58,6 +58,8 @@ is
new Ada.Unchecked_Conversion (Unsigned_32, Integer_32);
function To_Signed is
new Ada.Unchecked_Conversion (Unsigned_64, Integer_64);
+ function To_Signed is
+ new Ada.Unchecked_Conversion (Unsigned_128, Integer_128);
------------------
-- Insert_Image --
@@ -147,9 +149,9 @@ is
return Random (Gen.Rep);
end Random;
- function Random (Gen : Generator) return Integer_64 is
+ function Random (Gen : Generator) return Interfaces.Unsigned_128 is
begin
- return To_Signed (Unsigned_64'(Random (Gen)));
+ return Random (Gen.Rep);
end Random;
function Random (Gen : Generator) return Integer_32 is
@@ -157,6 +159,16 @@ is
return To_Signed (Unsigned_32'(Random (Gen)));
end Random;
+ function Random (Gen : Generator) return Integer_64 is
+ begin
+ return To_Signed (Unsigned_64'(Random (Gen)));
+ end Random;
+
+ function Random (Gen : Generator) return Integer_128 is
+ begin
+ return To_Signed (Unsigned_128'(Random (Gen)));
+ end Random;
+
function Random (Gen : Generator) return Long_Integer is
function Random_Long_Integer is new Random_Discrete (Long_Integer);
begin
diff --git a/gcc/ada/libgnat/g-rannum.ads b/gcc/ada/libgnat/g-rannum.ads
index 5b633ff..f795ae0 100644
--- a/gcc/ada/libgnat/g-rannum.ads
+++ b/gcc/ada/libgnat/g-rannum.ads
@@ -69,6 +69,8 @@ is
function Random (Gen : Generator) return Interfaces.Unsigned_32;
function Random (Gen : Generator) return Interfaces.Integer_64;
function Random (Gen : Generator) return Interfaces.Unsigned_64;
+ function Random (Gen : Generator) return Interfaces.Integer_128;
+ function Random (Gen : Generator) return Interfaces.Unsigned_128;
function Random (Gen : Generator) return Integer;
function Random (Gen : Generator) return Long_Integer;
-- Return pseudo-random numbers uniformly distributed on T'First .. T'Last