mirror of
https://github.com/golang/go
synced 2024-10-14 11:53:56 +00:00
test: add test case miscompiled by gccgo
R=golang-dev, bradfitz, rsc, iant CC=golang-dev https://golang.org/cl/7240043
This commit is contained in:
parent
1c6b6b125e
commit
e38339e3d8
69
test/fixedbugs/bug473.go
Normal file
69
test/fixedbugs/bug473.go
Normal file
|
@ -0,0 +1,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)
|
||||
}
|
Loading…
Reference in a new issue