cmd/5g, cmd/6g: pass the full torture test.
The patch adds more cases to agenr to allocate registers later,
and makes 6g generate addresses for sgen in something else than
SI and DI. It avoids a complex save/restore sequence that
amounts to allocate a register before descending in subtrees.
Fixes #4207.
R=golang-dev, dave, rsc
CC=golang-dev
https://golang.org/cl/6817080
diff --git a/test/torture.go b/test/torture.go
index c510bb9..d14d78f 100644
--- a/test/torture.go
+++ b/test/torture.go
@@ -279,12 +279,12 @@
Children[0].(*UArr).
Children[0].(*UArr).
Children[0].(*UArr).
- // Children[0].(*UArr).
- // Children[0].(*UArr).
- // Children[0].(*UArr).
- // Children[0].(*UArr).
- // Children[0].(*UArr).
- // Children[0].(*UArr).
+ Children[0].(*UArr).
+ Children[0].(*UArr).
+ Children[0].(*UArr).
+ Children[0].(*UArr).
+ Children[0].(*UArr).
+ Children[0].(*UArr).
Children[0]
}
@@ -295,21 +295,20 @@
func (u *UArrPtr) Child(n int) J { return u.Children[n] }
func ChainAssertArrayptrIndex(u *UArrPtr) J {
- // TODO: don't crash on longer chains.
return u.
Children[0].(*UArrPtr).
Children[0].(*UArrPtr).
Children[0].(*UArrPtr).
Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
- // Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
+ Children[0].(*UArrPtr).
Children[0]
}