mirror of
https://github.com/golang/go
synced 2024-11-25 09:07:58 -07:00
gc: fix unsafe.Sizeof
Fixes #1608. Fixes #1787. R=ken2 CC=golang-dev https://golang.org/cl/4530045
This commit is contained in:
parent
0389051aac
commit
3f335f80b4
@ -41,6 +41,7 @@ unsafenmagic(Node *nn)
|
|||||||
tr = r->type;
|
tr = r->type;
|
||||||
if(tr == T)
|
if(tr == T)
|
||||||
goto bad;
|
goto bad;
|
||||||
|
dowidth(tr);
|
||||||
v = tr->width;
|
v = tr->width;
|
||||||
goto yes;
|
goto yes;
|
||||||
}
|
}
|
||||||
|
22
test/fixedbugs/bug338.go
Normal file
22
test/fixedbugs/bug338.go
Normal file
@ -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.
|
||||||
|
|
||||||
|
// Issue 1787.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
const x = unsafe.Sizeof([8]byte{})
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var b [x]int
|
||||||
|
_ = b
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
bug338.go:14: array bound must be non-negative
|
||||||
|
*/
|
20
test/fixedbugs/bug339.go
Normal file
20
test/fixedbugs/bug339.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// $G $D/$F.go && $L $F.$A && ./$A.out
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
// Issue 1608.
|
||||||
|
// Size used to be -1000000000.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var a interface{} = 0
|
||||||
|
size := unsafe.Sizeof(a)
|
||||||
|
if size != 2*unsafe.Sizeof((*int)(nil)) {
|
||||||
|
println("wrong size: ", size)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user