aboutsummaryrefslogtreecommitdiff
path: root/test/fixedbugs/bug473.go
blob: 7649b6b5e008cc29c5498c38a32d05822ef080ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// 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)
}