aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/libgnat/s-imgrea.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@adacore.com>2020-09-03 05:33:39 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2020-10-22 08:11:27 -0400
commitd4194d74faee24c9bded05ba1b523e52f8b40bf0 (patch)
tree04497543315e76fda4e387202a90b5943503acfd /gcc/ada/libgnat/s-imgrea.adb
parent41a52050498ea809c7175e2a3ce682324d2a966c (diff)
downloadgcc-d4194d74faee24c9bded05ba1b523e52f8b40bf0.zip
gcc-d4194d74faee24c9bded05ba1b523e52f8b40bf0.tar.gz
gcc-d4194d74faee24c9bded05ba1b523e52f8b40bf0.tar.bz2
[Ada] Add more annotations and assertions in the runtime
gcc/ada/ * libgnat/s-imenne.adb, libgnat/s-imgrea.adb: Add assertions.
Diffstat (limited to 'gcc/ada/libgnat/s-imgrea.adb')
-rw-r--r--gcc/ada/libgnat/s-imgrea.adb7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/ada/libgnat/s-imgrea.adb b/gcc/ada/libgnat/s-imgrea.adb
index 244b79c..45d0ae5 100644
--- a/gcc/ada/libgnat/s-imgrea.adb
+++ b/gcc/ada/libgnat/s-imgrea.adb
@@ -376,17 +376,20 @@ package body System.Img_Real is
-- be significantly more efficient than the Long_Long_Unsigned one.
if X < Powten (Unsdigs) then
+ pragma Assert (X in 0.0 .. Long_Long_Float (Unsigned'Last));
Ndigs := 0;
Set_Image_Unsigned
(Unsigned (Long_Long_Float'Truncation (X)),
Digs, Ndigs);
- pragma Annotate (CodePeer, False_Positive, "overflow check",
- "The X integer part fits in unsigned");
-- But if we want more digits than fit in Unsigned, we have to use
-- the Long_Long_Unsigned routine after all.
else
+ pragma Assert (X < Powten (Maxdigs));
+ pragma Assert
+ (X in 0.0 .. Long_Long_Float (Long_Long_Unsigned'Last));
+
Ndigs := 0;
Set_Image_Long_Long_Unsigned
(Long_Long_Unsigned (Long_Long_Float'Truncation (X)),