|
2 | 2 |
|
3 | 3 | # tests that interpreter matches codegen
|
4 | 4 | using Test
|
5 |
| -using Core: GotoIfNot, ReturnNode |
| 5 | +using Core.IR |
6 | 6 |
|
7 | 7 | # test that interpreter correctly handles PhiNodes (#29262)
|
8 | 8 | let m = Meta.@lower 1 + 1
|
9 | 9 | @assert Meta.isexpr(m, :thunk)
|
10 |
| - src = m.args[1]::Core.CodeInfo |
| 10 | + src = m.args[1]::CodeInfo |
11 | 11 | src.code = Any[
|
12 | 12 | # block 1
|
13 | 13 | QuoteNode(:a),
|
14 | 14 | QuoteNode(:b),
|
15 | 15 | GlobalRef(@__MODULE__, :test29262),
|
16 |
| - GotoIfNot(Core.SSAValue(3), 6), |
| 16 | + GotoIfNot(SSAValue(3), 6), |
17 | 17 | # block 2
|
18 |
| - Core.PhiNode(Int32[4], Any[Core.SSAValue(1)]), |
19 |
| - Core.PhiNode(Int32[4, 5], Any[Core.SSAValue(2), Core.SSAValue(5)]), |
20 |
| - ReturnNode(Core.SSAValue(6)), |
| 18 | + PhiNode(Int32[4], Any[SSAValue(1)]), |
| 19 | + PhiNode(Int32[4, 5], Any[SSAValue(2), SSAValue(5)]), |
| 20 | + ReturnNode(SSAValue(6)), |
21 | 21 | ]
|
22 | 22 | nstmts = length(src.code)
|
23 | 23 | src.ssavaluetypes = Any[ Any for _ = 1:nstmts ]
|
|
33 | 33 |
|
34 | 34 | let m = Meta.@lower 1 + 1
|
35 | 35 | @assert Meta.isexpr(m, :thunk)
|
36 |
| - src = m.args[1]::Core.CodeInfo |
| 36 | + src = m.args[1]::CodeInfo |
37 | 37 | src.code = Any[
|
38 | 38 | # block 1
|
39 | 39 | QuoteNode(:a),
|
40 | 40 | QuoteNode(:b),
|
41 | 41 | QuoteNode(:c),
|
42 | 42 | GlobalRef(@__MODULE__, :test29262),
|
43 | 43 | # block 2
|
44 |
| - Core.PhiNode(Int32[4, 16], Any[false, true]), # false, true |
45 |
| - Core.PhiNode(Int32[4, 16], Any[Core.SSAValue(1), Core.SSAValue(2)]), # :a, :b |
46 |
| - Core.PhiNode(Int32[4, 16], Any[Core.SSAValue(3), Core.SSAValue(6)]), # :c, :a |
47 |
| - Core.PhiNode(Int32[16], Any[Core.SSAValue(7)]), # NULL, :c |
| 44 | + PhiNode(Int32[4, 16], Any[false, true]), # false, true |
| 45 | + PhiNode(Int32[4, 16], Any[SSAValue(1), SSAValue(2)]), # :a, :b |
| 46 | + PhiNode(Int32[4, 16], Any[SSAValue(3), SSAValue(6)]), # :c, :a |
| 47 | + PhiNode(Int32[16], Any[SSAValue(7)]), # NULL, :c |
48 | 48 | # block 3
|
49 |
| - Core.PhiNode(Int32[], Any[]), # NULL, NULL |
50 |
| - Core.PhiNode(Int32[17, 8], Any[true, Core.SSAValue(4)]), # test29262, test29262, [true] |
51 |
| - Core.PhiNode(Int32[17], Vector{Any}(undef, 1)), # NULL, NULL |
52 |
| - Core.PhiNode(Int32[8], Vector{Any}(undef, 1)), # NULL, NULL |
53 |
| - Core.PhiNode(Int32[], Any[]), # NULL, NULL |
54 |
| - Core.PhiNode(Int32[17, 8], Any[Core.SSAValue(2), Core.SSAValue(8)]), # NULL, :c, [:b] |
55 |
| - Core.PhiNode(Int32[], Any[]), # NULL, NULL |
56 |
| - GotoIfNot(Core.SSAValue(5), 5), |
| 49 | + PhiNode(Int32[], Any[]), # NULL, NULL |
| 50 | + PhiNode(Int32[17, 8], Any[true, SSAValue(4)]), # test29262, test29262, [true] |
| 51 | + PhiNode(Int32[17], Vector{Any}(undef, 1)), # NULL, NULL |
| 52 | + PhiNode(Int32[8], Vector{Any}(undef, 1)), # NULL, NULL |
| 53 | + PhiNode(Int32[], Any[]), # NULL, NULL |
| 54 | + PhiNode(Int32[17, 8], Any[SSAValue(2), SSAValue(8)]), # NULL, :c, [:b] |
| 55 | + PhiNode(Int32[], Any[]), # NULL, NULL |
| 56 | + GotoIfNot(SSAValue(5), 5), |
57 | 57 | # block 4
|
58 |
| - GotoIfNot(Core.SSAValue(10), 9), |
| 58 | + GotoIfNot(SSAValue(10), 9), |
59 | 59 | # block 5
|
60 |
| - Expr(:call, GlobalRef(Core, :tuple), Core.SSAValue(6), Core.SSAValue(7), Core.SSAValue(8), Core.SSAValue(14)), |
61 |
| - ReturnNode(Core.SSAValue(18)), |
| 60 | + Expr(:call, GlobalRef(Core, :tuple), SSAValue(6), SSAValue(7), SSAValue(8), SSAValue(14)), |
| 61 | + ReturnNode(SSAValue(18)), |
62 | 62 | ]
|
63 | 63 | nstmts = length(src.code)
|
64 | 64 | src.ssavaluetypes = Any[ Any for _ = 1:nstmts ]
|
|
74 | 74 |
|
75 | 75 | let m = Meta.@lower 1 + 1
|
76 | 76 | @assert Meta.isexpr(m, :thunk)
|
77 |
| - src = m.args[1]::Core.CodeInfo |
| 77 | + src = m.args[1]::CodeInfo |
78 | 78 | src.code = Any[
|
79 | 79 | # block 1
|
80 | 80 | QuoteNode(:a),
|
81 | 81 | QuoteNode(:b),
|
82 | 82 | GlobalRef(@__MODULE__, :test29262),
|
83 | 83 | # block 2
|
84 |
| - Core.EnterNode(11), |
| 84 | + EnterNode(11), |
85 | 85 | # block 3
|
86 |
| - Core.UpsilonNode(), |
87 |
| - Core.UpsilonNode(), |
88 |
| - Core.UpsilonNode(Core.SSAValue(2)), |
89 |
| - GotoIfNot(Core.SSAValue(3), 10), |
| 86 | + UpsilonNode(), |
| 87 | + UpsilonNode(), |
| 88 | + UpsilonNode(SSAValue(2)), |
| 89 | + GotoIfNot(SSAValue(3), 10), |
90 | 90 | # block 4
|
91 |
| - Core.UpsilonNode(Core.SSAValue(1)), |
| 91 | + UpsilonNode(SSAValue(1)), |
92 | 92 | # block 5
|
93 | 93 | Expr(:throw_undef_if_not, :expected, false),
|
94 | 94 | # block 6
|
95 |
| - Core.PhiCNode(Any[Core.SSAValue(5), Core.SSAValue(7), Core.SSAValue(9)]), # NULL, :a, :b |
96 |
| - Core.PhiCNode(Any[Core.SSAValue(6)]), # NULL |
| 95 | + PhiCNode(Any[SSAValue(5), SSAValue(7), SSAValue(9)]), # NULL, :a, :b |
| 96 | + PhiCNode(Any[SSAValue(6)]), # NULL |
97 | 97 | # block 7
|
98 |
| - ReturnNode(Core.SSAValue(11)), |
| 98 | + ReturnNode(SSAValue(11)), |
99 | 99 | ]
|
100 | 100 | nstmts = length(src.code)
|
101 | 101 | src.ssavaluetypes = Any[ Any for _ = 1:nstmts ]
|
|
0 commit comments