php-8.0.30-src/ext/opcache/tests/jit/bug80742.phpt

99 lines
1.3 KiB
PHP

--TEST--
Bug #80742 (Opcache JIT makes some boolean logic unexpectedly be true)
--FILE--
<?php
function checkGroundState(float $movY, float $dy) : void{
var_dump($movY != $dy, $movY < 0, ($movY != $dy and $movY < 0));
var_dump("wow!");
}
checkGroundState(0, 0);
function eq(float $a, float $b, $c, $d) {
if ($a == $b) {
echo 1;
}
if ($a == $b) {
} else {
echo 2;
}
if ($a != $b) {
echo 3;
}
if ($a != $b) {
} else {
echo 4;
}
if ($a === $b) {
echo 5;
}
if ($a === $b) {
} else {
echo 6;
}
if ($a !== $b) {
echo 7;
}
if ($a !== $b) {
} else {
echo 8;
}
echo "\n";
var_dump(
$a == $b && $c,
$a != $b && $c,
$a === $b && $c,
$a !== $b && $c,);
var_dump(
$a == $b || $d,
$a != $b || $d,
$a === $b || $d,
$a !== $b || $d);
}
eq(3.0, 3.0, true, false);
eq(3.0, 2.0, true, false);
eq(3.0, NAN, true, false);
eq(NAN, NAN, true, false);
--EXPECT--
bool(false)
bool(false)
bool(false)
string(4) "wow!"
1458
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
2367
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
2367
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
2367
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)