1
0
mirror of https://github.com/golang/go synced 2024-11-25 04:17:57 -07:00

cmd/gc: fix LEAQ $0, SI bug

Cannot take effective address of constant.

Fixes #3670.

R=ken2
CC=golang-dev
https://golang.org/cl/6299055
This commit is contained in:
Russ Cox 2012-06-07 11:59:18 -04:00
parent 9fe424737b
commit 2a9410c19c
2 changed files with 22 additions and 0 deletions

View File

@ -647,6 +647,9 @@ cgen_as(Node *nl, Node *nr)
dump("cgen_as = ", nr); dump("cgen_as = ", nr);
} }
while(nr != N && nr->op == OCONVNOP)
nr = nr->left;
if(nl == N || isblank(nl)) { if(nl == N || isblank(nl)) {
cgen_discard(nr); cgen_discard(nr);
return; return;

19
test/fixedbugs/bug444.go Normal file
View File

@ -0,0 +1,19 @@
// run
// Copyright 2012 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.
// The no-op conversion here used to confuse the compiler
// into doing a load-effective-address of nil.
package main
import "reflect"
type T interface {}
func main() {
reflect.TypeOf(nil)
reflect.TypeOf(T(nil)) // used to fail
}