mirror of
https://github.com/golang/go
synced 2024-09-05 07:54:46 +00:00
22 lines
435 B
Go
22 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
|
|
}
|