diff options
author | Arnaud Charlet <charlet@adacore.com> | 2020-09-03 05:33:39 -0400 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-10-22 08:11:27 -0400 |
commit | d4194d74faee24c9bded05ba1b523e52f8b40bf0 (patch) | |
tree | 04497543315e76fda4e387202a90b5943503acfd /gcc/ada/libgnat/s-imgrea.adb | |
parent | 41a52050498ea809c7175e2a3ce682324d2a966c (diff) | |
download | gcc-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.adb | 7 |
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)), |