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