s-arit64.adb (Double_Divide): Put back changes that got accidentally removed during the previous update (test...

* s-arit64.adb (Double_Divide): Put back changes that got accidentally
	removed during the previous update (test properly for case of dividing
	largest negative number by -1, which generates overflow).

From-SVN: r92847
This commit is contained in:
Arnaud Charlet 2005-01-03 16:40:46 +01:00
parent 01af9aff56
commit 4bb6d5fd42
1 changed files with 13 additions and 4 deletions

View File

@ -232,6 +232,19 @@ package body System.Arith_64 is
end if;
Du := Lo (T2) & Lo (T1);
-- Set final signs (RM 4.5.5(27-30))
Den_Pos := (Y < 0) = (Z < 0);
-- Check overflow case of largest negative number divided by 1
if X = Int64'First and then Du = 1 and then not Den_Pos then
Raise_Error;
end if;
-- Perform the actual division
Qu := Xu / Du;
Ru := Xu rem Du;
@ -241,10 +254,6 @@ package body System.Arith_64 is
Qu := Qu + Uns64'(1);
end if;
-- Set final signs (RM 4.5.5(27-30))
Den_Pos := (Y < 0) = (Z < 0);
-- Case of dividend (X) sign positive
if X >= 0 then