bug80742.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. --TEST--
  2. Bug #80742 (Opcache JIT makes some boolean logic unexpectedly be true)
  3. --EXTENSIONS--
  4. opcache
  5. --FILE--
  6. <?php
  7. function checkGroundState(float $movY, float $dy) : void{
  8. var_dump($movY != $dy, $movY < 0, ($movY != $dy and $movY < 0));
  9. var_dump("wow!");
  10. }
  11. checkGroundState(0, 0);
  12. function eq(float $a, float $b, $c, $d) {
  13. if ($a == $b) {
  14. echo 1;
  15. }
  16. if ($a == $b) {
  17. } else {
  18. echo 2;
  19. }
  20. if ($a != $b) {
  21. echo 3;
  22. }
  23. if ($a != $b) {
  24. } else {
  25. echo 4;
  26. }
  27. if ($a === $b) {
  28. echo 5;
  29. }
  30. if ($a === $b) {
  31. } else {
  32. echo 6;
  33. }
  34. if ($a !== $b) {
  35. echo 7;
  36. }
  37. if ($a !== $b) {
  38. } else {
  39. echo 8;
  40. }
  41. echo "\n";
  42. var_dump(
  43. $a == $b && $c,
  44. $a != $b && $c,
  45. $a === $b && $c,
  46. $a !== $b && $c,);
  47. var_dump(
  48. $a == $b || $d,
  49. $a != $b || $d,
  50. $a === $b || $d,
  51. $a !== $b || $d);
  52. }
  53. eq(3.0, 3.0, true, false);
  54. eq(3.0, 2.0, true, false);
  55. eq(3.0, NAN, true, false);
  56. eq(NAN, NAN, true, false);
  57. --EXPECT--
  58. bool(false)
  59. bool(false)
  60. bool(false)
  61. string(4) "wow!"
  62. 1458
  63. bool(true)
  64. bool(false)
  65. bool(true)
  66. bool(false)
  67. bool(true)
  68. bool(false)
  69. bool(true)
  70. bool(false)
  71. 2367
  72. bool(false)
  73. bool(true)
  74. bool(false)
  75. bool(true)
  76. bool(false)
  77. bool(true)
  78. bool(false)
  79. bool(true)
  80. 2367
  81. bool(false)
  82. bool(true)
  83. bool(false)
  84. bool(true)
  85. bool(false)
  86. bool(true)
  87. bool(false)
  88. bool(true)
  89. 2367
  90. bool(false)
  91. bool(true)
  92. bool(false)
  93. bool(true)
  94. bool(false)
  95. bool(true)
  96. bool(false)
  97. bool(true)