]> Cypherpunks repositories - gostls13.git/commitdiff
6g: fix uint64(uintptr(unsafe.Pointer(&x)))
authorRuss Cox <rsc@golang.org>
Thu, 20 Jan 2011 17:50:35 +0000 (12:50 -0500)
committerRuss Cox <rsc@golang.org>
Thu, 20 Jan 2011 17:50:35 +0000 (12:50 -0500)
Fixes #1417.

R=ken2
CC=golang-dev
https://golang.org/cl/4079042

src/cmd/6g/cgen.c
test/fixedbugs/bug319.go [new file with mode: 0644]

index d4d22fd610c1c2528dcb861ab3aed925502ee0c2..47f3374f530201081d4ea4ae16b28602125b80bc 100644 (file)
@@ -431,9 +431,6 @@ agen(Node *n, Node *res)
        if(n == N || n->type == T)
                return;
 
-       if(!isptr[res->type->etype] && res->type->etype != TUINTPTR)
-               fatal("agen: not tptr: %T", res->type);
-
        while(n->op == OCONVNOP)
                n = n->left;
 
diff --git a/test/fixedbugs/bug319.go b/test/fixedbugs/bug319.go
new file mode 100644 (file)
index 0000000..f60eee4
--- /dev/null
@@ -0,0 +1,22 @@
+// $G $D/$F.go
+
+// Copyright 2011 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
+
+import "unsafe"
+
+func main() {
+       var x int
+       
+       a := uint64(uintptr(unsafe.Pointer(&x)))
+       b := uint32(uintptr(unsafe.Pointer(&x)))
+       c := uint16(uintptr(unsafe.Pointer(&x)))
+       d := int64(uintptr(unsafe.Pointer(&x)))
+       e := int32(uintptr(unsafe.Pointer(&x)))
+       f := int16(uintptr(unsafe.Pointer(&x)))
+
+       _, _, _, _, _, _ = a, b, c, d, e, f
+}