mirror of
https://github.com/golang/go.git
synced 2025-05-28 10:51:22 +00:00
test/fixedbugs: forgotten test cases for issues 3907 and 4156.
Update #3907. Update #4156. R=golang-dev, dave CC=golang-dev https://golang.org/cl/6595044
This commit is contained in:
parent
ff2f851af1
commit
4bb75cd9ad
54
test/fixedbugs/bug455.go
Normal file
54
test/fixedbugs/bug455.go
Normal file
@ -0,0 +1,54 @@
|
||||
// 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 4156: out of fixed registers when chaining method calls.
|
||||
// Used to happen with 6g.
|
||||
|
||||
package main
|
||||
|
||||
type test_i interface {
|
||||
Test() test_i
|
||||
Result() bool
|
||||
}
|
||||
|
||||
type test_t struct {
|
||||
}
|
||||
|
||||
func newTest() *test_t {
|
||||
return &test_t{}
|
||||
}
|
||||
|
||||
type testFn func(string) testFn
|
||||
|
||||
func main() {
|
||||
test := newTest()
|
||||
|
||||
switch {
|
||||
case test.
|
||||
Test().
|
||||
Test().
|
||||
Test().
|
||||
Test().
|
||||
Test().
|
||||
Test().
|
||||
Test().
|
||||
Test().
|
||||
Test().
|
||||
Test().
|
||||
Result():
|
||||
// case worked
|
||||
default:
|
||||
panic("Result returned false unexpectedly")
|
||||
}
|
||||
}
|
||||
|
||||
func (t *test_t) Test() test_i {
|
||||
return t
|
||||
}
|
||||
|
||||
func (t *test_t) Result() bool {
|
||||
return true
|
||||
}
|
26
test/fixedbugs/bug456.go
Normal file
26
test/fixedbugs/bug456.go
Normal file
@ -0,0 +1,26 @@
|
||||
// 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 3907: out of fixed registers in nested byte multiply.
|
||||
// Used to happen with both 6g and 8g.
|
||||
|
||||
package main
|
||||
|
||||
func F(a, b, c, d uint8) uint8 {
|
||||
return a * (b * (c * (d *
|
||||
(a * (b * (c * (d *
|
||||
(a * (b * (c * (d *
|
||||
a * (b * (c * d)))))))))))))
|
||||
}
|
||||
|
||||
func main() {
|
||||
var a, b, c, d uint8 = 1, 1, 1, 1
|
||||
x := F(a, b, c, d)
|
||||
if x != 1 {
|
||||
println(x)
|
||||
panic("x != 1")
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user