# 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
}