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