* fixed the sign handling of i386 fpc_div_int64 helper (Mantis 30166)

git-svn-id: trunk@33753 -
This commit is contained in:
Károly Balogh 2016-05-22 16:57:30 +00:00
parent bffe9480f4
commit 963c4aa1f8
3 changed files with 34 additions and 1 deletions

1
.gitattributes vendored
View File

@ -15072,6 +15072,7 @@ tests/webtbs/tw3005.pp svneol=native#text/plain
tests/webtbs/tw30082.pp svneol=native#text/plain
tests/webtbs/tw3010.pp svneol=native#text/plain
tests/webtbs/tw3012.pp svneol=native#text/plain
tests/webtbs/tw30166.pp svneol=native#text/plain
tests/webtbs/tw3023.pp svneol=native#text/plain
tests/webtbs/tw3028.pp svneol=native#text/plain
tests/webtbs/tw3038.pp svneol=native#text/plain

View File

@ -70,7 +70,7 @@
xchgl %ecx,%eax
divl %ebx
movl %ecx,%edx
jmp .Lexit
jmp .Lmake_sign
.Lbigdivisor:
subl $12,%esp
movl %eax,(%esp)

32
tests/webtbs/tw30166.pp Normal file
View File

@ -0,0 +1,32 @@
{ Test against Mantis #30166, an issue in the i386 fpc_div_int64 helper. }
Uses sysutils;
Var cc, dd: int64;
a, b: int64;
Begin
dd:=int64($0000000A6BB38805);
cc:=int64($0000000000142E04);
cc:=cc-2822400; { $FF11813BCCC3B114 }
dd:=dd*cc;
{ dd:=int64($FF11813BCCC3B114); }
a:=dd div int64($00000000002B1100);
b:=int64($FF11813BCCC3B114) div int64($00000000002B1100);
WriteLn(IntToHex(cc,16));
WriteLn(IntToHex(dd,16));
WriteLn('FF11813BCCC3B114:00000000002B1100='#9, IntToHex(a,16));
WriteLn('FF11813BCCC3B114:00000000002B1100='#9, IntToHex(b,16));
if a<>b then
begin
writeln('Failed!');
halt(1);
end
else
begin
writeln('Passed!');
end;
End.