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