From 49c041e306a21fdf9d38d8d2b432d3573450693c Mon Sep 17 00:00:00 2001 From: Robert Dewar Date: Tue, 15 Nov 2005 15:04:45 +0100 Subject: [PATCH] s-stoele.adb: Fix code for Address mod Storage_Offset for negative offset values 2005-11-14 Robert Dewar * s-stoele.adb: Fix code for Address mod Storage_Offset for negative offset values From-SVN: r107010 --- gcc/ada/s-stoele.adb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gcc/ada/s-stoele.adb b/gcc/ada/s-stoele.adb index 59eaf0b8215..4d4f9594e76 100644 --- a/gcc/ada/s-stoele.adb +++ b/gcc/ada/s-stoele.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -61,15 +61,17 @@ package body System.Storage_Elements is return To_Offset (To_Address (To_Integer (Left) - To_Integer (Right))); end "-"; - function "mod" (Left : Address; Right : Storage_Offset) - return Storage_Offset is + function "mod" + (Left : Address; + Right : Storage_Offset) return Storage_Offset + is begin if Right >= 0 then return Storage_Offset (To_Integer (Left) mod Integer_Address (Right)); else return -Storage_Offset - (To_Integer (Left) mod Integer_Address (-Right)); + ((-To_Integer (Left)) mod Integer_Address (-Right)); end if; end "mod"; -- 2.30.2