2013-01-18 21:54:27 +00:00
|
|
|
// compile
|
2012-11-06 21:53:57 +00:00
|
|
|
|
2016-04-10 21:32:26 +00:00
|
|
|
// Copyright 2012 The Go Authors. All rights reserved.
|
2012-11-06 21:53:57 +00:00
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
2013-01-18 21:54:27 +00:00
|
|
|
// Issue 4348. After switch to 64-bit ints the compiler generates
|
2012-11-06 21:53:57 +00:00
|
|
|
// illegal instructions when using large array bounds or indexes.
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
// 1<<32 on a 64-bit machine, 1 otherwise.
|
|
|
|
const LARGE = ^uint(0)>>32 + 1
|
|
|
|
|
|
|
|
func A() int {
|
|
|
|
var a []int
|
|
|
|
return a[LARGE]
|
|
|
|
}
|
|
|
|
|
2013-01-18 21:54:27 +00:00
|
|
|
var b [LARGE]int
|
|
|
|
|
2012-11-06 21:53:57 +00:00
|
|
|
func B(i int) int {
|
|
|
|
return b[i]
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
n := A()
|
|
|
|
B(n)
|
|
|
|
}
|