]> Cypherpunks repositories - gostls13.git/commitdiff
test/fixedbugs: forgotten test cases for issues 3907 and 4156.
authorRémy Oudompheng <oudomphe@phare.normalesup.org>
Sun, 30 Sep 2012 08:35:09 +0000 (10:35 +0200)
committerRémy Oudompheng <oudomphe@phare.normalesup.org>
Sun, 30 Sep 2012 08:35:09 +0000 (10:35 +0200)
Update #3907.
Update #4156.

R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/6595044

test/fixedbugs/bug455.go [new file with mode: 0644]
test/fixedbugs/bug456.go [new file with mode: 0644]

diff --git a/test/fixedbugs/bug455.go b/test/fixedbugs/bug455.go
new file mode 100644 (file)
index 0000000..8e3c770
--- /dev/null
@@ -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
+}
diff --git a/test/fixedbugs/bug456.go b/test/fixedbugs/bug456.go
new file mode 100644 (file)
index 0000000..064e1aa
--- /dev/null
@@ -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")
+       }
+}