mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 13:08:13 +02:00
88 lines
1.4 KiB
ObjectPascal
88 lines
1.4 KiB
ObjectPascal
{ %skiptarget=android }
|
|
{ %CPU=i386 }
|
|
{ %OPT=-Cg- }
|
|
{ Old file: tbs0309.pp }
|
|
{ problem with ATT assembler written by bin writer OK 0.99.14 (PFV) }
|
|
|
|
{ This code was first written by Florian
|
|
to test the GDB output for FPU
|
|
he thought first that FPU output was wrong
|
|
but in fact it is a bug in FPC :( }
|
|
program bug0309;
|
|
|
|
var
|
|
a,b : double;
|
|
_as,bs : single;
|
|
al,bl : extended;
|
|
aw,bw : integer;
|
|
ai,bi : longint;
|
|
ac : comp;
|
|
begin
|
|
{$ifdef CPU86}
|
|
{$asmmode att}
|
|
asm
|
|
fninit;
|
|
end;
|
|
a:=1;
|
|
b:=2;
|
|
asm
|
|
movl $1,%eax
|
|
fldl a
|
|
fldl b
|
|
faddp %st,%st(1)
|
|
fstpl a
|
|
end;
|
|
{ the above generates wrong code in binary writer
|
|
fldl is replaced by flds !!
|
|
if using -alt option to force assembler output
|
|
all works correctly PM }
|
|
writeln('a = ',a,' should be 3');
|
|
if a<>3.0 then
|
|
Halt(1);
|
|
a:=1.0;
|
|
a:=a+b;
|
|
writeln('a = ',a,' should be 3');
|
|
_as:=0;
|
|
al:=0;
|
|
asm
|
|
fldl a
|
|
fsts _as
|
|
fstpt al
|
|
end;
|
|
if (_as<>3.0) or (al<>3.0) then
|
|
Halt(1);
|
|
ai:=5;
|
|
bi:=5;
|
|
asm
|
|
fildl ai
|
|
fstpl a
|
|
end;
|
|
if a<>5.0 then
|
|
Halt(1);
|
|
|
|
ac:=5;
|
|
asm
|
|
fildl ai
|
|
fstpl a
|
|
end;
|
|
if a<>5.0 then
|
|
Halt(1);
|
|
aw:=-4;
|
|
bw:=45;
|
|
asm
|
|
filds aw
|
|
fstpl a
|
|
end;
|
|
if a<>-4.0 then
|
|
Halt(1);
|
|
ac:=345;
|
|
asm
|
|
fildq ac
|
|
fstpl a
|
|
end;
|
|
if a<>345.0 then
|
|
Halt(1);
|
|
|
|
{$endif CPU86}
|
|
end.
|