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