cmd/8g: fix code generation of int64(0) == int64(0).

The code would violate the contract of cmp64.

Fixes #5002.

R=rsc, golang-dev
CC=golang-dev
https://golang.org/cl/7593043
This commit is contained in:
Rémy Oudompheng 2013-03-07 21:47:45 +01:00
parent 43ee80997a
commit 4c203172a2
2 changed files with 17 additions and 1 deletions

View file

@ -1055,7 +1055,7 @@ bgen(Node *n, int true, int likely, Prog *to)
}
if(is64(nr->type)) {
if(!nl->addable) {
if(!nl->addable || isconst(nl, CTINT)) {
tempname(&n1, nl->type);
cgen(nl, &n1);
nl = &n1;

View file

@ -0,0 +1,16 @@
// build
// Copyright 2013 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 5002: 8g produces invalid CMPL $0, $0.
// Used to fail at link time.
package main
func main() {
var y int64
if y%1 == 0 {
}
}