mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 12:29:14 +02:00
* fixed overflow checking for qword
This commit is contained in:
parent
62f8ed92dc
commit
f77e8ab5a6
@ -290,10 +290,11 @@
|
||||
var
|
||||
_f1,bitpos : qword;
|
||||
l : longint;
|
||||
|
||||
f1overflowed : boolean;
|
||||
begin
|
||||
fpc_mul_qword:=0;
|
||||
bitpos:=1;
|
||||
f1overflowed:=false;
|
||||
|
||||
for l:=0 to 63 do
|
||||
begin
|
||||
@ -304,11 +305,14 @@
|
||||
|
||||
{ if one of the operands is greater than the result an
|
||||
overflow occurs }
|
||||
if checkoverflow and (_f1<>0) and (f1<>0) and
|
||||
((_f1>fpc_mul_qword) or (f1>fpc_mul_qword)) then
|
||||
if checkoverflow and (f1overflowed or ((_f1<>0) and (f1<>0) and
|
||||
((_f1>fpc_mul_qword) or (f1>fpc_mul_qword)))) then
|
||||
HandleErrorFrame(215,get_frame);
|
||||
end;
|
||||
|
||||
{$ifndef VER1_0}
|
||||
{ when bootstrapping, we forget about overflow checking for qword :) }
|
||||
f1overflowed:=f1overflowed or ((f1 and (1 shl 63))<>0);
|
||||
{$endif VER1_0}
|
||||
f1:=f1 shl 1;
|
||||
bitpos:=bitpos shl 1;
|
||||
end;
|
||||
@ -362,7 +366,10 @@
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.27 2004-09-26 07:15:34 florian
|
||||
Revision 1.28 2004-09-26 07:37:49 florian
|
||||
* fixed overflow checking for qword
|
||||
|
||||
Revision 1.27 2004/09/26 07:15:34 florian
|
||||
* tried to fix overflow checking in qword multiplication
|
||||
|
||||
Revision 1.26 2004/05/23 14:09:43 peter
|
||||
|
Loading…
Reference in New Issue
Block a user