cmp_003.phpt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. --TEST--
  2. JIT CMP: 003 Comparison with NaN
  3. --INI--
  4. opcache.enable=1
  5. opcache.enable_cli=1
  6. opcache.file_update_protection=0
  7. opcache.jit_buffer_size=1M
  8. opcache.protect_memory=1
  9. --EXTENSIONS--
  10. opcache
  11. --FILE--
  12. <?php
  13. function t() {
  14. echo "!";
  15. return true;
  16. }
  17. function f() {
  18. echo "!";
  19. return false;
  20. }
  21. $a = 0.0;
  22. $i = 0;
  23. $b = NAN;
  24. $c = true;
  25. $d = false;
  26. var_dump($a == $b);
  27. var_dump($a != $b);
  28. var_dump($a < $b);
  29. var_dump($a > $b);
  30. var_dump($a <= $b);
  31. var_dump($a >= $b);
  32. var_dump($a == $b ? 1 : 0);
  33. var_dump($a != $b ? 1 : 0);
  34. var_dump($a < $b ? 1 : 0);
  35. var_dump($a > $b ? 1 : 0);
  36. var_dump($a <= $b ? 1 : 0);
  37. var_dump($a >= $b ? 1 : 0);
  38. if ($a == $b) {
  39. } else {
  40. echo "1\n";
  41. }
  42. if ($a != $b) {
  43. } else {
  44. echo "2\n";
  45. }
  46. if ($a < $b) {
  47. } else {
  48. echo "3\n";
  49. }
  50. if ($a > $b) {
  51. } else {
  52. echo "4\n";
  53. }
  54. if ($a <= $b) {
  55. } else {
  56. echo "5\n";
  57. }
  58. if ($a >= $b) {
  59. } else {
  60. echo "6\n";
  61. }
  62. var_dump($i == $b ? 1 : 0);
  63. var_dump($i != $b ? 1 : 0);
  64. var_dump($i < $b ? 1 : 0);
  65. var_dump($i > $b ? 1 : 0);
  66. var_dump($i <= $b ? 1 : 0);
  67. var_dump($i >= $b ? 1 : 0);
  68. if ($i == $b) {
  69. } else {
  70. echo "1\n";
  71. }
  72. if ($i != $b) {
  73. } else {
  74. echo "2\n";
  75. }
  76. if ($i < $b) {
  77. } else {
  78. echo "3\n";
  79. }
  80. if ($i > $b) {
  81. } else {
  82. echo "4\n";
  83. }
  84. if ($i <= $b) {
  85. } else {
  86. echo "5\n";
  87. }
  88. if ($i >= $b) {
  89. } else {
  90. echo "6\n";
  91. }
  92. var_dump($a == $b && t());
  93. var_dump($a != $b && t());
  94. var_dump($a < $b && t());
  95. var_dump($a > $b && t());
  96. var_dump($a <= $b && t());
  97. var_dump($a >= $b && t());
  98. var_dump($a == $b || f());
  99. var_dump($a != $b || f());
  100. var_dump($a < $b || f());
  101. var_dump($a > $b || f());
  102. var_dump($a <= $b || f());
  103. var_dump($a >= $b || f());
  104. var_dump($i == $b && t());
  105. var_dump($i != $b && t());
  106. var_dump($i < $b && t());
  107. var_dump($i > $b && t());
  108. var_dump($i <= $b && t());
  109. var_dump($i >= $b && t());
  110. var_dump($i == $b || f());
  111. var_dump($i != $b || f());
  112. var_dump($i < $b || f());
  113. var_dump($i > $b || f());
  114. var_dump($i <= $b || f());
  115. var_dump($i >= $b || f());
  116. $a=NAN;
  117. var_dump($a == $b);
  118. var_dump($a != $b);
  119. var_dump($a < $b);
  120. var_dump($a > $b);
  121. var_dump($a <= $b);
  122. var_dump($a >= $b);
  123. var_dump($a == $b ? 1 : 0);
  124. var_dump($a != $b ? 1 : 0);
  125. var_dump($a < $b ? 1 : 0);
  126. var_dump($a > $b ? 1 : 0);
  127. var_dump($a <= $b ? 1 : 0);
  128. var_dump($a >= $b ? 1 : 0);
  129. ?>
  130. --EXPECT--
  131. bool(false)
  132. bool(true)
  133. bool(false)
  134. bool(false)
  135. bool(false)
  136. bool(false)
  137. int(0)
  138. int(1)
  139. int(0)
  140. int(0)
  141. int(0)
  142. int(0)
  143. 1
  144. 3
  145. 4
  146. 5
  147. 6
  148. int(0)
  149. int(1)
  150. int(0)
  151. int(0)
  152. int(0)
  153. int(0)
  154. 1
  155. 3
  156. 4
  157. 5
  158. 6
  159. bool(false)
  160. !bool(true)
  161. bool(false)
  162. bool(false)
  163. bool(false)
  164. bool(false)
  165. !bool(false)
  166. bool(true)
  167. !bool(false)
  168. !bool(false)
  169. !bool(false)
  170. !bool(false)
  171. bool(false)
  172. !bool(true)
  173. bool(false)
  174. bool(false)
  175. bool(false)
  176. bool(false)
  177. !bool(false)
  178. bool(true)
  179. !bool(false)
  180. !bool(false)
  181. !bool(false)
  182. !bool(false)
  183. bool(false)
  184. bool(true)
  185. bool(false)
  186. bool(false)
  187. bool(false)
  188. bool(false)
  189. int(0)
  190. int(1)
  191. int(0)
  192. int(0)
  193. int(0)
  194. int(0)