aboutsummaryrefslogtreecommitdiff
path: root/test/nilptr3.go
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2016-09-15 13:04:50 -0700
committerKeith Randall <khr@golang.org>2016-09-15 20:21:26 +0000
commitf13701bf2f32fe48f6dcf9149b35b9ce3effe022 (patch)
treedc9fce8af68659eeb1b9a00aed8da51b9d7ca930 /test/nilptr3.go
parent22d3bf1da49a6fa168cf16a619d3591100dba426 (diff)
downloadgo-f13701bf2f32fe48f6dcf9149b35b9ce3effe022.tar.gz
go-f13701bf2f32fe48f6dcf9149b35b9ce3effe022.zip
test: make SSA tests unconditional
Delete legacy backend tests, make SSA tests unconditional. Next CL will remove _ssa from the file names. Update #16357 Change-Id: I2a7f5dcbc69455f63b5e6e6b2725df26ab86c8dd Reviewed-on: https://go-review.googlesource.com/29231 Run-TryBot: Keith Randall <khr@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'test/nilptr3.go')
-rw-r--r--test/nilptr3.go224
1 files changed, 0 insertions, 224 deletions
diff --git a/test/nilptr3.go b/test/nilptr3.go
deleted file mode 100644
index 73e074391b..0000000000
--- a/test/nilptr3.go
+++ /dev/null
@@ -1,224 +0,0 @@
-// errorcheck -0 -d=nil
-// Fails on ppc64x because of incomplete optimization.
-// See issues 9058.
-// Same reason for mips64x and s390x.
-// +build !ppc64,!ppc64le,!mips64,!mips64le,!amd64,!s390x,!arm,!amd64p32,!386,!arm64
-
-// 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 removed.
-// Optimization is enabled.
-
-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 "generated nil check"
-
- // This one should be removed but the block copy needs
- // to be turned into its own pseudo-op in order to see
- // the indirect.
- _ = *arrayp // ERROR "generated nil check"
-
- // 0-byte indirect doesn't suffice.
- // we don't registerize globals, so there are no removed repeated nil checks.
- _ = *array0p // ERROR "generated nil check"
- _ = *array0p // ERROR "generated nil check"
-
- _ = *intp // ERROR "generated nil check"
- _ = *arrayp // ERROR "generated nil check"
- _ = *structp // ERROR "generated nil check"
- _ = *emptyp // ERROR "generated nil check"
- _ = *arrayp // ERROR "generated 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 "generated nil check"
- _ = *arrayp // ERROR "generated nil check"
- _ = *array0p // ERROR "generated nil check"
- _ = *array0p // ERROR "removed repeated nil check"
- _ = *intp // ERROR "removed repeated nil check"
- _ = *arrayp // ERROR "removed repeated nil check"
- _ = *structp // ERROR "generated nil check"
- _ = *emptyp // ERROR "generated nil check"
- _ = *arrayp // ERROR "removed repeated nil check"
- _ = *bigarrayp // ERROR "generated nil check" ARM removed nil check before indirect!!
- _ = *bigstructp // ERROR "generated nil check"
- _ = *empty1p // ERROR "generated 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 "generated nil check"
-
- for {
- if x[9999] != 0 { // ERROR "generated nil check"
- break
- }
- }
-
- x = fx10k()
- _ = x[9999] // ERROR "generated nil check"
- if b {
- _ = x[9999] // ERROR "removed repeated nil check"
- } else {
- _ = x[9999] // ERROR "removed repeated nil check"
- }
- _ = x[9999] // ERROR "generated nil check"
-
- x = fx10k()
- if b {
- _ = x[9999] // ERROR "generated nil check"
- } else {
- _ = x[9999] // ERROR "generated nil check"
- }
- _ = x[9999] // ERROR "generated nil check"
-
- fx10k()
- // This one is a bit redundant, if we figured out that
- // x wasn't going to change across the function call.
- // But it's a little complex to do and in practice doesn't
- // matter enough.
- _ = x[9999] // ERROR "generated nil check"
-}
-
-func f3a() {
- x := fx10k()
- y := fx10k()
- z := fx10k()
- _ = &x[9] // ERROR "generated nil check"
- y = z
- _ = &x[9] // ERROR "removed repeated nil check"
- x = y
- _ = &x[9] // ERROR "generated nil check"
-}
-
-func f3b() {
- x := fx10k()
- y := fx10k()
- _ = &x[9] // ERROR "generated nil check"
- y = x
- _ = &x[9] // ERROR "removed repeated nil check"
- x = y
- _ = &x[9] // ERROR "removed repeated 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 "removed nil check before indirect"
-
- for {
- if x[9] != 0 { // ERROR "removed nil check before indirect"
- break
- }
- }
-
- x = fx10()
- _ = x[9] // ERROR "removed nil check before indirect"
- if b {
- _ = x[9] // ERROR "removed nil check before indirect"
- } else {
- _ = x[9] // ERROR "removed nil check before indirect"
- }
- _ = x[9] // ERROR "removed nil check before indirect"
-
- x = fx10()
- if b {
- _ = x[9] // ERROR "removed nil check before indirect"
- } else {
- _ = &x[9] // ERROR "generated nil check"
- }
- _ = x[9] // ERROR "removed nil check before indirect"
-
- fx10()
- _ = x[9] // ERROR "removed nil check before indirect"
-
- x = fx10()
- y := fx10()
- _ = &x[9] // ERROR "generated nil check"
- y = x
- _ = &x[9] // ERROR "removed repeated nil check"
- x = y
- _ = &x[9] // ERROR "removed repeated nil check"
-}
-
-func m1(m map[int][80]byte) byte {
- v := m[3] // ERROR "removed nil check"
- return v[5]
-}
-func m2(m map[int][800]byte) byte {
- v := m[3] // ERROR "removed nil check"
- return v[5]
-}
-func m3(m map[int][80]byte) (byte, bool) {
- v, ok := m[3] // ERROR "removed nil check"
- return v[5], ok
-}
-func m4(m map[int][800]byte) (byte, bool) {
- v, ok := m[3] // ERROR "removed nil check"
- return v[5], ok
-}
-func p1() byte {
- p := new([100]byte)
- return p[5] // ERROR "removed nil check"
-}
-
-// make sure not to do nil check for access of PAUTOHEAP
-//go:noinline
-func (p *Struct) m() {}
-func c1() {
- var x Struct
- func() { x.m() }() // ERROR "removed nil check"
-}