mirror of
https://github.com/golang/go
synced 2024-11-02 13:42:29 +00:00
8f3c2055bd
Fixes #3909. Fixes #3910. R=rsc, nigeltao CC=golang-dev https://golang.org/cl/6442114
21 lines
435 B
Go
21 lines
435 B
Go
// run
|
|
|
|
// Test for 6g register move bug. The optimizer gets confused
|
|
// about 32- vs 64-bit moves during splitContractIndex.
|
|
|
|
// Issue 3918.
|
|
|
|
package main
|
|
|
|
func main() {
|
|
const c = 0x123400005678
|
|
index, offset := splitContractIndex(c)
|
|
if index != (c&0xffffffff)>>5 || offset != c+1 {
|
|
println("BUG", index, offset)
|
|
}
|
|
}
|
|
|
|
func splitContractIndex(ce uint64) (index uint32, offset uint64) {
|
|
h := uint32(ce)
|
|
return h >> 5, ce + 1
|
|
}
|