| // run | |
| // Copyright 2012 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. | |
| // Issue 4138: bug in floating-point registers numbering. | |
| // Makes 6g unable to use more than 11 registers. | |
| package main | |
| func formula() float32 { | |
| mA := [1]float32{1.0} | |
| det1 := mA[0] | |
| det2 := mA[0] | |
| det3 := mA[0] | |
| det4 := mA[0] | |
| det5 := mA[0] | |
| det6 := mA[0] | |
| det7 := mA[0] | |
| det8 := mA[0] | |
| det9 := mA[0] | |
| det10 := mA[0] | |
| det11 := mA[0] | |
| det12 := mA[0] | |
| return det1 + det2*det3 + | |
| det4*det5 + det6*det7 + | |
| det8*det9 + det10*det11 + | |
| det12 | |
| } | |
| func main() { | |
| x := formula() | |
| if x != 7.0 { | |
| println(x, 7.0) | |
| panic("x != 7.0") | |
| } | |
| } |