1--TEST-- 2Bug #80742 (Opcache JIT makes some boolean logic unexpectedly be true) 3--FILE-- 4<?php 5 6function checkGroundState(float $movY, float $dy) : void{ 7 var_dump($movY != $dy, $movY < 0, ($movY != $dy and $movY < 0)); 8 var_dump("wow!"); 9} 10 11checkGroundState(0, 0); 12 13function eq(float $a, float $b, $c, $d) { 14 if ($a == $b) { 15 echo 1; 16 } 17 if ($a == $b) { 18 } else { 19 echo 2; 20 } 21 if ($a != $b) { 22 echo 3; 23 } 24 if ($a != $b) { 25 } else { 26 echo 4; 27 } 28 if ($a === $b) { 29 echo 5; 30 } 31 if ($a === $b) { 32 } else { 33 echo 6; 34 } 35 if ($a !== $b) { 36 echo 7; 37 } 38 if ($a !== $b) { 39 } else { 40 echo 8; 41 } 42 echo "\n"; 43 var_dump( 44 $a == $b && $c, 45 $a != $b && $c, 46 $a === $b && $c, 47 $a !== $b && $c,); 48 var_dump( 49 $a == $b || $d, 50 $a != $b || $d, 51 $a === $b || $d, 52 $a !== $b || $d); 53} 54eq(3.0, 3.0, true, false); 55eq(3.0, 2.0, true, false); 56eq(3.0, NAN, true, false); 57eq(NAN, NAN, true, false); 58--EXPECT-- 59bool(false) 60bool(false) 61bool(false) 62string(4) "wow!" 631458 64bool(true) 65bool(false) 66bool(true) 67bool(false) 68bool(true) 69bool(false) 70bool(true) 71bool(false) 722367 73bool(false) 74bool(true) 75bool(false) 76bool(true) 77bool(false) 78bool(true) 79bool(false) 80bool(true) 812367 82bool(false) 83bool(true) 84bool(false) 85bool(true) 86bool(false) 87bool(true) 88bool(false) 89bool(true) 902367 91bool(false) 92bool(true) 93bool(false) 94bool(true) 95bool(false) 96bool(true) 97bool(false) 98bool(true) 99