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