1// run
2
3// Test for 6g register move bug.  The optimizer gets confused
4// about 32- vs 64-bit moves during splitContractIndex.
5
6// Issue 3918.
7
8package main
9
10func main() {
11	const c = 0x123400005678
12	index, offset := splitContractIndex(c)
13	if index != (c&0xffffffff)>>5 || offset != c+1 {
14		println("BUG", index, offset)
15	}
16}
17
18func splitContractIndex(ce uint64) (index uint32, offset uint64) {
19	h := uint32(ce)
20	return h >> 5, ce + 1
21}
22