xref: /PHP-8.0/ext/opcache/tests/jit/bug80742.phpt (revision fad87a24)
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