| 1234567891011121314151617181920212223242526272829303132 |
- # Ember Sawady reported this bug
- # in stack-slot coalescing
- type :t = { w 2 }
- function :t $func() {
- @start.0
- %temp =l alloc4 4
- %ret =l alloc4 8
- storew 1, %temp
- # storew can also go here
- %field =l add %ret, 4
- storew 2, %ret
- blit %temp, %field, 4
- # removing either of these storews causes it to work
- storew 2, %ret
- ret %ret
- }
- export function w $main() {
- @start
- %ret =:t call $func()
- %fptr =l add %ret, 4
- %field =w loaduw %fptr
- %x =w ceqw %field, 1
- jnz %x, @passed, @failed
- @failed
- # this fails despite 1 => temp => ret + 4 => field
- call $abort()
- @passed
- ret 0
- }
|