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?> 61--EXPECT-- 62bool(false) 63bool(false) 64bool(false) 65string(4) "wow!" 661458 67bool(true) 68bool(false) 69bool(true) 70bool(false) 71bool(true) 72bool(false) 73bool(true) 74bool(false) 752367 76bool(false) 77bool(true) 78bool(false) 79bool(true) 80bool(false) 81bool(true) 82bool(false) 83bool(true) 842367 85bool(false) 86bool(true) 87bool(false) 88bool(true) 89bool(false) 90bool(true) 91bool(false) 92bool(true) 932367 94bool(false) 95bool(true) 96bool(false) 97bool(true) 98bool(false) 99bool(true) 100bool(false) 101bool(true) 102