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