aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2010-09-01 13:40:20 -0700
committerIan Lance Taylor <iant@golang.org>2010-09-01 13:40:20 -0700
commit426275d70236be0ac817ae8185c215e9fc4eb681 (patch)
tree0dadbf7c1d44dd37eed6138739fa99a5b1fe15a7
parent728003e340ab6d20d49f8f67f1b36722d5de2d65 (diff)
downloadgo-426275d70236be0ac817ae8185c215e9fc4eb681.tar.gz
go-426275d70236be0ac817ae8185c215e9fc4eb681.zip
test: Use global variables to defeat gccgo optimizer.
The gccgo compiler is smart enough to not make something which is not used. Use global variables to defeat this optimization. R=rsc CC=golang-dev https://golang.org/cl/2129041
-rw-r--r--test/fixedbugs/bug273.go28
1 files changed, 17 insertions, 11 deletions
diff --git a/test/fixedbugs/bug273.go b/test/fixedbugs/bug273.go
index ff8f1c6af3..816f69e8f1 100644
--- a/test/fixedbugs/bug273.go
+++ b/test/fixedbugs/bug273.go
@@ -15,6 +15,8 @@ var bug = false
var minus1 = -1
var big int64 = 10 | 1<<32
+var g1 []int
+
func shouldfail(f func(), desc string) {
defer func() { recover() }()
f()
@@ -26,52 +28,56 @@ func shouldfail(f func(), desc string) {
}
func badlen() {
- _ = make([]int, minus1)
+ g1 = make([]int, minus1)
}
func biglen() {
- _ = make([]int, big)
+ g1 = make([]int, big)
}
func badcap() {
- _ = make([]int, 10, minus1)
+ g1 = make([]int, 10, minus1)
}
func badcap1() {
- _ = make([]int, 10, 5)
+ g1 = make([]int, 10, 5)
}
func bigcap() {
- _ = make([]int, 10, big)
+ g1 = make([]int, 10, big)
}
const (
addrBits = 8*uint(unsafe.Sizeof((*byte)(nil)))
sh = addrBits/2 - 2
)
+var g2 [][1<<sh][1<<sh]byte
func overflow() {
- _ = make([][1<<sh][1<<sh]byte, 64)
+ g2 = make([][1<<sh][1<<sh]byte, 64)
}
+var g3 map[int]int
func badmapcap() {
- _ = make(map[int]int, minus1)
+ g3 = make(map[int]int, minus1)
}
func bigmapcap() {
- _ = make(map[int]int, big)
+ g3 = make(map[int]int, big)
}
+var g4 chan int
func badchancap() {
- _ = make(chan int, minus1)
+ g4 = make(chan int, minus1)
}
func bigchancap() {
- _ = make(chan int, big)
+ g4 = make(chan int, big)
}
+var g5 chan [1<<15]byte
func overflowchan() {
if addrBits == 32 {
- _ = make(chan [1<<15]byte, 1<<20)
+ g5 = make(chan [1<<15]byte, 1<<20)
} else {
// cannot overflow on 64-bit, because
// int is 32 bits and max chan value size