Commit 80ac15ec authored by Russ Cox's avatar Russ Cox

gc: fix unsafe.Sizeof on ideal constants

R=ken2
CC=golang-dev
https://golang.org/cl/1280041
parent 2034f721
......@@ -32,9 +32,8 @@ unsafenmagic(Node *fn, NodeList *args)
if(strcmp(s->name, "Sizeof") == 0) {
typecheck(&r, Erv);
defaultlit(&r, T);
tr = r->type;
if(r->op == OLITERAL && r->val.ctype == CTSTR)
tr = types[TSTRING];
if(tr == T)
goto no;
v = tr->width;
......@@ -49,9 +48,8 @@ unsafenmagic(Node *fn, NodeList *args)
}
if(strcmp(s->name, "Alignof") == 0) {
typecheck(&r, Erv);
defaultlit(&r, T);
tr = r->type;
if(r->op == OLITERAL && r->val.ctype == CTSTR)
tr = types[TSTRING];
if(tr == T)
goto no;
......
// $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2010 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.
// http://code.google.com/p/go/issues/detail?id=799
package main
import "unsafe"
func main() {
n := unsafe.Sizeof(0)
if n != 4 && n != 8 {
println("BUG sizeof 0", n)
return
}
n = unsafe.Alignof(0)
if n != 4 && n != 8 {
println("BUG alignof 0", n)
return
}
n = unsafe.Sizeof("")
if n != 8 && n != 16 {
println("BUG sizeof \"\"", n)
return
}
n = unsafe.Alignof("")
if n != 4 && n != 8 {
println("BUG alignof \"\"", n)
return
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment