Browse Source

no message

florian 22 years ago
parent
commit
404d7fdc70
3 changed files with 114 additions and 0 deletions
  1. 34 0
      tests/webtbf/tw2129.pp
  2. 41 0
      tests/webtbs/tw2129.pp
  3. 39 0
      tests/webtbs/tw2129b.pp

+ 34 - 0
tests/webtbf/tw2129.pp

@@ -0,0 +1,34 @@
+{ %version=1.1 }
+{ %fail }
+{ Source provided for Free Pascal Bug Report 2129 }
+{ Submitted by "Bill Rayer" on  2002-09-18 }
+{ e-mail: [email protected] }
+
+{$mode delphi}
+
+(*
+Comp() cast has different effect in FPC.
+Compiles using Delphi4:
+  dcc32 -CC fpc19
+Compiles in FPC 1.0.6:
+  ppc386 -WC fpc19
+
+When run, the Delphi version shows -6.5E+18, but the FPC version
+shows zero. In Delphi, the comp() cast actually moves 8 bytes from
+the double into the comp without converting the data, but FPC uses
+floating point instructions to convert the data and therefore prints
+zero.
+
+In Delphi, if you want to convert a double to a float, you just use
+the assignment "comp1 := dbl1" which corresponds to the FLD/FIST
+opcodes. FPC should not use the comp() cast for doing this, since
+it introduces a subtle incompatibility with Delphi.
+*)
+
+program fpc19;
+var
+  single1 : single;
+  dbl1 : double;
+begin
+  single1 := single(dbl1);
+end.

+ 41 - 0
tests/webtbs/tw2129.pp

@@ -0,0 +1,41 @@
+{ %version=1.1 }
+{ Source provided for Free Pascal Bug Report 2129 }
+{ Submitted by "Bill Rayer" on  2002-09-18 }
+{ e-mail: [email protected] }
+
+{$mode delphi}
+
+(*
+Comp() cast has different effect in FPC.
+Compiles using Delphi4:
+  dcc32 -CC fpc19
+Compiles in FPC 1.0.6:
+  ppc386 -WC fpc19
+
+When run, the Delphi version shows -6.5E+18, but the FPC version
+shows zero. In Delphi, the comp() cast actually moves 8 bytes from
+the double into the comp without converting the data, but FPC uses
+floating point instructions to convert the data and therefore prints
+zero.
+
+In Delphi, if you want to convert a double to a float, you just use
+the assignment "comp1 := dbl1" which corresponds to the FLD/FIST
+opcodes. FPC should not use the comp() cast for doing this, since
+it introduces a subtle incompatibility with Delphi.
+*)
+
+program fpc19;
+var
+  comp1 : comp;
+  dbl1 : double;
+  s : string;
+begin
+  dbl1 := -1e-128;
+  comp1 := comp(dbl1);
+  str(comp1,s);
+  if s<>'-6.53142228756617E+0018' then
+    begin
+      writeln('error');
+      halt(1);
+    end;
+end.

+ 39 - 0
tests/webtbs/tw2129b.pp

@@ -0,0 +1,39 @@
+{ %version=1.1 }
+{ Source provided for Free Pascal Bug Report 2129 }
+{ Submitted by "Bill Rayer" on  2002-09-18 }
+{ e-mail: [email protected] }
+
+(*
+Comp() cast has different effect in FPC.
+Compiles using Delphi4:
+  dcc32 -CC fpc19
+Compiles in FPC 1.0.6:
+  ppc386 -WC fpc19
+
+When run, the Delphi version shows -6.5E+18, but the FPC version
+shows zero. In Delphi, the comp() cast actually moves 8 bytes from
+the double into the comp without converting the data, but FPC uses
+floating point instructions to convert the data and therefore prints
+zero.
+
+In Delphi, if you want to convert a double to a float, you just use
+the assignment "comp1 := dbl1" which corresponds to the FLD/FIST
+opcodes. FPC should not use the comp() cast for doing this, since
+it introduces a subtle incompatibility with Delphi.
+*)
+
+program fpc19;
+var
+  comp1 : comp;
+  dbl1 : double;
+  s : string;
+begin
+  dbl1 := -1e-128;
+  comp1 := comp(dbl1);
+  str(comp1,s);
+  if s<>' 0.00000000000000E+0000' then
+    begin
+      writeln('error: ',s);
+      halt(1);
+    end;
+end.