nullsafe_002.phpt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. --TEST--
  2. Nullsafe e-ssa pi node placement
  3. --INI--
  4. opcache.enable=1
  5. opcache.enable_cli=1
  6. opcache.opt_debug_level=0x200000
  7. --EXTENSIONS--
  8. opcache
  9. --FILE--
  10. <?php
  11. class Test {
  12. public int $prop;
  13. }
  14. function test(?Test $test) {
  15. var_dump($test?->prop);
  16. }
  17. ?>
  18. --EXPECTF--
  19. $_main:
  20. ; (lines=1, args=0, vars=0, tmps=0, ssa_vars=0, no_loops)
  21. ; (before dfa pass)
  22. ; %s
  23. ; return [long] RANGE[1..1]
  24. BB0:
  25. ; start exit lines=[0-0]
  26. ; level=0
  27. 0000 RETURN int(1)
  28. test:
  29. ; (lines=7, args=1, vars=1, tmps=2, ssa_vars=6, no_loops)
  30. ; (before dfa pass)
  31. ; %s
  32. ; return [null] RANGE[0..0]
  33. ; #0.CV0($test) NOVAL [undef]
  34. BB0:
  35. ; start lines=[0-2]
  36. ; to=(BB2, BB1)
  37. ; level=0
  38. ; children=(BB1, BB2)
  39. 0000 #1.CV0($test) [null, object (instanceof Test)] = RECV 1
  40. 0001 INIT_FCALL 1 %d string("var_dump")
  41. 0002 #2.T1 [null] = JMP_NULL #1.CV0($test) [null, object (instanceof Test)] BB2
  42. BB1:
  43. ; follow lines=[3-3]
  44. ; from=(BB0)
  45. ; to=(BB2)
  46. ; idom=BB0
  47. ; level=1
  48. #3.CV0($test) [object (instanceof Test)] = Pi<BB0>(#1.CV0($test) [null, object (instanceof Test)] & TYPE [ref, bool, long, double, string, array of [any, ref], object, resource])
  49. 0003 #4.T1 [long] = FETCH_OBJ_R #3.CV0($test) [object (instanceof Test)] string("prop")
  50. BB2:
  51. ; follow target exit lines=[4-6]
  52. ; from=(BB0, BB1)
  53. ; idom=BB0
  54. ; level=1
  55. #5.X1 [null, long] = Phi(#2.X1 [null], #4.X1 [long])
  56. 0004 SEND_VAL #5.T1 [null, long] 1
  57. 0005 DO_ICALL
  58. 0006 RETURN null