[Ada] Fix proof of double arithmetic units
authorYannick Moy <moy@adacore.com>
Fri, 11 Mar 2022 10:54:53 +0000 (11:54 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 16 May 2022 08:42:05 +0000 (08:42 +0000)
Proof of an assertion is not automatic anymore. Add two assertions
before it to guide the prover.

gcc/ada/

* libgnat/s-aridou.adb (Double_Divide): Add intermediate
assertions.

gcc/ada/libgnat/s-aridou.adb

index ffb6f4c..08cbed7 100644 (file)
@@ -941,11 +941,13 @@ is
          else
             T2 := Yhi * Zlo;
             pragma Assert (Big (T2) = Big (Double_Uns'(Yhi * Zlo)));
+            pragma Assert (Big_0 = Big (Double_Uns'(Ylo * Zhi)));
          end if;
 
       else
          T2 := Ylo * Zhi;
          pragma Assert (Big (T2) = Big (Double_Uns'(Ylo * Zhi)));
+         pragma Assert (Big_0 = Big (Double_Uns'(Yhi * Zlo)));
       end if;
 
       T1 := Ylo * Zlo;