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