]> Cypherpunks repositories - gostls13.git/commitdiff
test/fixedbugs: add test for divide by zero being optimized away
authorBrad Fitzpatrick <bradfitz@golang.org>
Thu, 31 Mar 2016 02:51:17 +0000 (13:51 +1100)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 31 Mar 2016 06:12:38 +0000 (06:12 +0000)
This only tests amd64 because it's currently broken on non-SSA
backends.

Fixes #8613

Change-Id: I6bc501c81c395e533bb9c7335789750e0c6b7a8f
Reviewed-on: https://go-review.googlesource.com/21325
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

test/fixedbugs/issue8613.go [new file with mode: 0644]

diff --git a/test/fixedbugs/issue8613.go b/test/fixedbugs/issue8613.go
new file mode 100644 (file)
index 0000000..d394662
--- /dev/null
@@ -0,0 +1,39 @@
+// +build amd64
+// run
+
+// Copyright 2016 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.
+
+package main
+
+var out int
+var zero int
+
+func main() {
+       wantPanic("test1", func() {
+               out = 1 / zero
+       })
+       wantPanic("test2", func() {
+               _ = 1 / zero
+       })
+       wantPanic("test3", func() {
+               v := 0
+               _ = 1 / v
+       })
+       wantPanic("test4", func() { divby(0) })
+}
+
+func wantPanic(test string, fn func()) {
+       defer func() {
+               if e := recover(); e == nil {
+                       panic(test + ": expected panic")
+               }
+       }()
+       fn()
+}
+
+//go:noinline
+func divby(v int) {
+       _ = 1 / v
+}