diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/nilcheck.go | 1 | ||||
-rw-r--r-- | test/nilcheck_ssa.go | 187 |
2 files changed, 0 insertions, 188 deletions
diff --git a/test/nilcheck.go b/test/nilcheck.go index 173fcb33a6..ab28b33d41 100644 --- a/test/nilcheck.go +++ b/test/nilcheck.go @@ -1,4 +1,3 @@ -// +build !amd64 // errorcheck -0 -N -d=nil // Copyright 2013 The Go Authors. All rights reserved. diff --git a/test/nilcheck_ssa.go b/test/nilcheck_ssa.go deleted file mode 100644 index a20cfd8ae6..0000000000 --- a/test/nilcheck_ssa.go +++ /dev/null @@ -1,187 +0,0 @@ -// +build amd64 -// errorcheck -0 -N -d=nil - -// Copyright 2013 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. - -// Test that nil checks are inserted. -// Optimization is disabled, so redundant checks are not removed. - -package p - -type Struct struct { - X int - Y float64 -} - -type BigStruct struct { - X int - Y float64 - A [1 << 20]int - Z string -} - -type Empty struct { -} - -type Empty1 struct { - Empty -} - -var ( - intp *int - arrayp *[10]int - array0p *[0]int - bigarrayp *[1 << 26]int - structp *Struct - bigstructp *BigStruct - emptyp *Empty - empty1p *Empty1 -) - -func f1() { - _ = *intp // ERROR "nil check" - _ = *arrayp // ERROR "nil check" - _ = *array0p // ERROR "nil check" - _ = *array0p // ERROR "nil check" - _ = *intp // ERROR "nil check" - _ = *arrayp // ERROR "nil check" - _ = *structp // ERROR "nil check" - _ = *emptyp // ERROR "nil check" - _ = *arrayp // ERROR "nil check" -} - -func f2() { - var ( - intp *int - arrayp *[10]int - array0p *[0]int - bigarrayp *[1 << 20]int - structp *Struct - bigstructp *BigStruct - emptyp *Empty - empty1p *Empty1 - ) - - _ = *intp // ERROR "nil check" - _ = *arrayp // ERROR "nil check" - _ = *array0p // ERROR "nil check" - _ = *array0p // ERROR "removed nil check" - _ = *intp // ERROR "removed nil check" - _ = *arrayp // ERROR "removed nil check" - _ = *structp // ERROR "nil check" - _ = *emptyp // ERROR "nil check" - _ = *arrayp // ERROR "removed nil check" - _ = *bigarrayp // ERROR "nil check" - _ = *bigstructp // ERROR "nil check" - _ = *empty1p // ERROR "nil check" -} - -func fx10k() *[10000]int - -var b bool - -func f3(x *[10000]int) { - // Using a huge type and huge offsets so the compiler - // does not expect the memory hardware to fault. - _ = x[9999] // ERROR "nil check" - - for { - if x[9999] != 0 { // ERROR "removed nil check" - break - } - } - - x = fx10k() - _ = x[9999] // ERROR "nil check" - if b { - _ = x[9999] // ERROR "removed nil check" - } else { - _ = x[9999] // ERROR "removed nil check" - } - _ = x[9999] // ERROR "removed nil check" - - x = fx10k() - if b { - _ = x[9999] // ERROR "nil check" - } else { - _ = x[9999] // ERROR "nil check" - } - _ = x[9999] // ERROR "nil check" - - fx10k() - // SSA nilcheck removal works across calls. - _ = x[9999] // ERROR "removed nil check" -} - -func f3a() { - x := fx10k() - y := fx10k() - z := fx10k() - _ = &x[9] // ERROR "nil check" - y = z - _ = &x[9] // ERROR "removed nil check" - x = y - _ = &x[9] // ERROR "nil check" -} - -func f3b() { - x := fx10k() - y := fx10k() - _ = &x[9] // ERROR "nil check" - y = x - _ = &x[9] // ERROR "removed nil check" - x = y - _ = &x[9] // ERROR "removed nil check" -} - -func fx10() *[10]int - -func f4(x *[10]int) { - // Most of these have no checks because a real memory reference follows, - // and the offset is small enough that if x is nil, the address will still be - // in the first unmapped page of memory. - - _ = x[9] // ERROR "nil check" - - for { - if x[9] != 0 { // ERROR "removed nil check" - break - } - } - - x = fx10() - _ = x[9] // ERROR "nil check" - if b { - _ = x[9] // ERROR "removed nil check" - } else { - _ = x[9] // ERROR "removed nil check" - } - _ = x[9] // ERROR "removed nil check" - - x = fx10() - if b { - _ = x[9] // ERROR "nil check" - } else { - _ = &x[9] // ERROR "nil check" - } - _ = x[9] // ERROR "nil check" - - fx10() - _ = x[9] // ERROR "removed nil check" - - x = fx10() - y := fx10() - _ = &x[9] // ERROR "nil check" - y = x - _ = &x[9] // ERROR "removed nil check" - x = y - _ = &x[9] // ERROR "removed nil check" -} - -func f5(m map[string]struct{}) bool { - // Existence-only map lookups should not generate a nil check - _, ok := m[""] - return ok -} |