| // run | |
| // Copyright 2017 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package main | |
| //go:noinline | |
| func f(x int) { | |
| } | |
| //go:noinline | |
| func val() int8 { | |
| return -1 | |
| } | |
| var ( | |
| array = [257]int{} | |
| slice = array[1:] | |
| ) | |
| func init() { | |
| for i := range array { | |
| array[i] = i - 1 | |
| } | |
| } | |
| func main() { | |
| x := val() | |
| y := int(uint8(x)) | |
| f(y) // try and force y to be calculated and spilled | |
| if slice[y] != 255 { | |
| panic("incorrect value") | |
| } | |
| } |