cmd/gc: use a register to checknil constants.

Fixes #7346.

LGTM=rsc
R=rsc, iant, khr
CC=golang-codereviews
https://golang.org/cl/69050044
This commit is contained in:
Rémy Oudompheng 2014-03-04 08:18:17 +01:00
parent 0a3bd045f5
commit 52e6d7c622
2 changed files with 15 additions and 1 deletions

View file

@ -476,7 +476,7 @@ cgen_checknil(Node *n)
dump("checknil", n);
fatal("bad checknil");
}
if((thechar == '5' && n->op != OREGISTER) || !n->addable) {
if((thechar == '5' && n->op != OREGISTER) || !n->addable || n->op == OLITERAL) {
regalloc(&reg, types[tptr], n);
cgen(n, &reg);
gins(ACHECKNIL, &reg, N);

View file

@ -0,0 +1,14 @@
// compile
// 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 7346 : internal error "doasm" error due to checknil
// of a nil literal.
package main
func main() {
_ = *(*int)(nil)
}