4ad/go

test/fixedbugs/bug356.go fails for sparc64 SSA backend

Closed this issue · 1 comments

# go run run.go -- fixedbugs/bug356.go
incorrect output
BUG bug344a 0

FAIL    fixedbugs/bug356.go     0.370s

This turned out to be a register allocation / scheduling bug for SLLmax/SRLmax:

We can't safely write to the output register(s) until we're done referencing the input register(s) as they may be the same due to register allocation scheduling by the SSA backend.

As such, stash the second argument in a temporary register so that we can safely refer to it even after writing to the output register.

Fixed by the fix for #28.