1 # Ember Sawady reported this bug
2 # in stack-slot coalescing
4 type :type.3 = align 8 { l 1, l 1 }
5 type :tags.2 = { { :type.3 1 } }
6 type :type.1 = align 8 { w 1, :tags.2 1 }
7 type :tags.9 = { { w 1 } }
8 type :type.8 = align 4 { w 1, :tags.9 1 }
10 function :type.1 $func() {
12 %object.5 =l alloc8 24
14 %binding.21 =l alloc8 16
15 %object.23 =l alloc8 24
17 %.10 =l add %object.7, 4
18 jnz 1, @matches.13, @next.14
20 # binding.21 gets fused with object.23
22 %value.22 =l add %binding.21, 8
24 %.24 =l add %object.23, 8
25 # but the blit direction is not set correctly
26 blit %binding.21, %.24, 16
29 storew 2543892678, %object.5
33 export function w $main() {
35 %object.43 =l alloc8 24
36 %object.49 =l alloc8 24
38 %returns.34 =:type.1 call $func()
39 %value.47 =l add %returns.34, 16
40 %load.48 =l loadl %value.47
41 %.33 =w ceql %load.48, 2
42 jnz %.33, @passed.32, @failed.31