...
Run Format

Source file test/fixedbugs/bug473.go

Documentation: test/fixedbugs

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

View as plain text