mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-20 18:18:18 +02:00
* don't perform the "/ const" to "* (1/const)" transformation for comp-typed
expressions, since comp cannot represent fractions (bug reported at http://lists.freepascal.org/pipermail/fpc-pascal/2016-June/048234.html ) git-svn-id: trunk@34035 -
This commit is contained in:
parent
996e325175
commit
ec5dea1092
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -10971,6 +10971,7 @@ tests/tbs/tb0617.pp svneol=native#text/pascal
|
|||||||
tests/tbs/tb0618.pp svneol=native#text/plain
|
tests/tbs/tb0618.pp svneol=native#text/plain
|
||||||
tests/tbs/tb0619.pp svneol=native#text/pascal
|
tests/tbs/tb0619.pp svneol=native#text/pascal
|
||||||
tests/tbs/tb0620.pp svneol=native#text/pascal
|
tests/tbs/tb0620.pp svneol=native#text/pascal
|
||||||
|
tests/tbs/tb0621.pp svneol=native#text/plain
|
||||||
tests/tbs/tb205.pp svneol=native#text/plain
|
tests/tbs/tb205.pp svneol=native#text/plain
|
||||||
tests/tbs/tb610.pp svneol=native#text/pascal
|
tests/tbs/tb610.pp svneol=native#text/pascal
|
||||||
tests/tbs/tb613.pp svneol=native#text/plain
|
tests/tbs/tb613.pp svneol=native#text/plain
|
||||||
|
@ -697,8 +697,12 @@ implementation
|
|||||||
an slash expresion would be first converted into a multiplication and later
|
an slash expresion would be first converted into a multiplication and later
|
||||||
folded }
|
folded }
|
||||||
if (nodetype=slashn) and
|
if (nodetype=slashn) and
|
||||||
{ do not mess with currency types }
|
{ do not mess with currency and comp types }
|
||||||
(not(is_currency(right.resultdef))) and
|
(not(is_currency(right.resultdef)) and
|
||||||
|
not((right.resultdef.typ=floatdef) and
|
||||||
|
(tfloatdef(right.resultdef).floattype=s64comp)
|
||||||
|
)
|
||||||
|
) and
|
||||||
(((cs_opt_fastmath in current_settings.optimizerswitches) and (rt=ordconstn)) or
|
(((cs_opt_fastmath in current_settings.optimizerswitches) and (rt=ordconstn)) or
|
||||||
((cs_opt_fastmath in current_settings.optimizerswitches) and (rt=realconstn) and
|
((cs_opt_fastmath in current_settings.optimizerswitches) and (rt=realconstn) and
|
||||||
(bestrealrec(trealconstnode(right).value_real).SpecialType in [fsPositive,fsNegative])
|
(bestrealrec(trealconstnode(right).value_real).SpecialType in [fsPositive,fsNegative])
|
||||||
|
27
tests/tbs/tb0621.pp
Normal file
27
tests/tbs/tb0621.pp
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
PROGRAM compbug300;
|
||||||
|
|
||||||
|
VAR x1, x2 : comp;
|
||||||
|
|
||||||
|
(* Dividing 8 / 2 doesn't work with fpc 3.0.0
|
||||||
|
but works for example with fpc 2.6.4
|
||||||
|
Markus Greim / 29.jun.2016 *)
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
x1 := 8;
|
||||||
|
writeln('x1 : ',x1);
|
||||||
|
x2 := x1 / 2;
|
||||||
|
writeln('x2 = x1/2 should be 4 but is : ', x2);
|
||||||
|
if x2<>4 then
|
||||||
|
halt(1);
|
||||||
|
x2 := x1 / 4;
|
||||||
|
writeln('x2 = x1/4 should be 2 but is : ', x2);
|
||||||
|
if x2<>2 then
|
||||||
|
halt(2);
|
||||||
|
x2 := x1 / 8.0;
|
||||||
|
writeln('x2 = x1/8.0 should be 1 and is : ', x2);
|
||||||
|
if x2<>1 then
|
||||||
|
halt(3);
|
||||||
|
|
||||||
|
|
||||||
|
END.
|
Loading…
Reference in New Issue
Block a user