summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2014-08-11 22:10:17 -0700
committerMatthew Dempsky <mdempsky@google.com>2014-08-11 22:10:17 -0700
commitd0d43ff83a5b0182e3c05176cca0542e4ae9f16d (patch)
tree0fa4a3aaf25e2d5ba83b5ffe6e33dd55c4021824 /misc
parent9d8f893f562da28cc2f791d34919015cb88dd9fc (diff)
downloadgo-d0d43ff83a5b0182e3c05176cca0542e4ae9f16d.tar.gz
cmd/cgo: fix default alignment for empty structs
Fixes issue 5242. LGTM=iant R=iant CC=golang-codereviews https://codereview.appspot.com/125120043 Committer: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'misc')
-rw-r--r--misc/cgo/test/cgo_test.go1
-rw-r--r--misc/cgo/test/issue5242.go31
2 files changed, 32 insertions, 0 deletions
diff --git a/misc/cgo/test/cgo_test.go b/misc/cgo/test/cgo_test.go
index eb237725a..3c6d5cb59 100644
--- a/misc/cgo/test/cgo_test.go
+++ b/misc/cgo/test/cgo_test.go
@@ -53,5 +53,6 @@ func Test5986(t *testing.T) { test5986(t) }
func Test7665(t *testing.T) { test7665(t) }
func TestNaming(t *testing.T) { testNaming(t) }
func Test7560(t *testing.T) { test7560(t) }
+func Test5242(t *testing.T) { test5242(t) }
func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }
diff --git a/misc/cgo/test/issue5242.go b/misc/cgo/test/issue5242.go
new file mode 100644
index 000000000..fe0a6321c
--- /dev/null
+++ b/misc/cgo/test/issue5242.go
@@ -0,0 +1,31 @@
+// Copyright 2014 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.
+
+// Issue 5242. Cgo incorrectly computed the alignment of structs
+// with no Go accessible fields as 0, and then panicked on
+// modulo-by-zero computations.
+
+package cgotest
+
+/*
+typedef struct {
+} foo;
+
+typedef struct {
+ int x : 1;
+} bar;
+
+int issue5242(foo f, bar b) {
+ return 5242;
+}
+*/
+import "C"
+
+import "testing"
+
+func test5242(t *testing.T) {
+ if got := C.issue5242(C.foo{}, C.bar{}); got != 5242 {
+ t.Errorf("got %v", got)
+ }
+}