From 404d7fdc7086cd5f8b4ac067c4d9a1c527022fca Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 26 Oct 2003 14:12:44 +0000 Subject: [PATCH] no message --- tests/webtbf/tw2129.pp | 34 ++++++++++++++++++++++++++++++++++ tests/webtbs/tw2129.pp | 41 +++++++++++++++++++++++++++++++++++++++++ tests/webtbs/tw2129b.pp | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 tests/webtbf/tw2129.pp create mode 100644 tests/webtbs/tw2129.pp create mode 100644 tests/webtbs/tw2129b.pp diff --git a/tests/webtbf/tw2129.pp b/tests/webtbf/tw2129.pp new file mode 100644 index 0000000000..e4289194fa --- /dev/null +++ b/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: lingolanguage@hotmail.com } + +{$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. diff --git a/tests/webtbs/tw2129.pp b/tests/webtbs/tw2129.pp new file mode 100644 index 0000000000..b696e751ce --- /dev/null +++ b/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: lingolanguage@hotmail.com } + +{$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. diff --git a/tests/webtbs/tw2129b.pp b/tests/webtbs/tw2129b.pp new file mode 100644 index 0000000000..6eff310ffd --- /dev/null +++ b/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: lingolanguage@hotmail.com } + +(* +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.