// run // Copyright 2013 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. // Used to be miscompiled by gccgo, due to a bug in handling // initialization ordering. package main func F(a ...interface{}) interface{} { s := 0 for _, v := range a { s += v.(int) } return s } var V1 = F(V10, V4, V3, V11) var V2 = F(V1) var V3 = F(1) var V4 = F(2) var V5 = F(3) var V6 = F(4) var V7 = F(5) var V8 = F(V14, V7, V3, V6, V5) var V9 = F(V4, F(V12)) var V10 = F(V4, V9) var V11 = F(6) var V12 = F(V5, V3, V8) var V13 = F(7) var V14 = F(8) func expect(name string, a interface{}, b int) { if a.(int) != b { panic(name) } } func main() { expect("V1", V1, 38) expect("V2", V2, 38) expect("V3", V3, 1) expect("V4", V4, 2) expect("V5", V5, 3) expect("V6", V6, 4) expect("V7", V7, 5) expect("V8", V8, 21) expect("V9", V9, 27) expect("V10", V10, 29) expect("V11", V11, 6) expect("V12", V12, 25) expect("V13", V13, 7) expect("V14", V14, 8) }