Commit 3081261b authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

cmd/gc: fix bad checknil with ints on 32 bit compilers

Fixes #7413.

LGTM=rsc
R=remyoudompheng
CC=golang-codereviews, r, rsc
https://golang.org/cl/69180044
parent 7954b2b9
......@@ -471,8 +471,8 @@ cgen_checknil(Node *n)
if(disable_checknil)
return;
// Ideally we wouldn't see any TUINTPTR here, but we do.
if(n->type == T || (!isptr[n->type->etype] && n->type->etype != TUINTPTR && n->type->etype != TUNSAFEPTR)) {
// Ideally we wouldn't see any integer types here, but we do.
if(n->type == T || (!isptr[n->type->etype] && !isint[n->type->etype] && n->type->etype != TUNSAFEPTR)) {
dump("checknil", n);
fatal("bad checknil");
}
......
// build
// 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.
// Test that the compiler does not crash during compilation.
package main
import "unsafe"
// Issue 7413
func f1() {
type t struct {
i int
}
var v *t
_ = int(uintptr(unsafe.Pointer(&v.i)))
_ = int32(uintptr(unsafe.Pointer(&v.i)))
}
func main() {}
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