summaryrefslogtreecommitdiff
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
commitcd74f7bd9ae5c968d9afe05d286e920ddb576179 (patch)
tree19618e52b04b19061269d5755a45cd37285b30ae
parent65e5d16f6af9ed6a58281755836fa059f0c60c6b (diff)
downloadgo-cd74f7bd9ae5c968d9afe05d286e920ddb576179.tar.gz
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 http://codereview.appspot.com/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 ff8f1c6af..816f69e8f 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