mirror of
https://github.com/golang/go
synced 2024-11-22 00:34:40 -07:00
gc: fix struct and array comparisons for new bool rules
The two optimizations for small structs and arrays were missing the implicit cast from ideal bool. Fixes #3351. R=rsc, lvd CC=golang-dev https://golang.org/cl/5848062
This commit is contained in:
parent
aa1d4170a4
commit
e1f22bdcc5
@ -2514,6 +2514,7 @@ walkcompare(Node **np, NodeList **init)
|
||||
expr = nodbool(n->op == OEQ);
|
||||
typecheck(&expr, Erv);
|
||||
walkexpr(&expr, init);
|
||||
expr->type = n->type;
|
||||
*np = expr;
|
||||
return;
|
||||
}
|
||||
@ -2534,6 +2535,7 @@ walkcompare(Node **np, NodeList **init)
|
||||
expr = nodbool(n->op == OEQ);
|
||||
typecheck(&expr, Erv);
|
||||
walkexpr(&expr, init);
|
||||
expr->type = n->type;
|
||||
*np = expr;
|
||||
return;
|
||||
}
|
||||
|
39
test/fixedbugs/bug427.go
Normal file
39
test/fixedbugs/bug427.go
Normal file
@ -0,0 +1,39 @@
|
||||
// compile
|
||||
|
||||
// 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.
|
||||
|
||||
// http://code.google.com/p/go/issues/detail?id=3351
|
||||
|
||||
package main
|
||||
|
||||
// struct with four fields of basic type
|
||||
type S struct {a, b, c, d int}
|
||||
|
||||
// struct with five fields of basic type
|
||||
type T struct {a, b, c, d, e int}
|
||||
|
||||
// array with four elements
|
||||
type A [4]int
|
||||
|
||||
// array with five elements
|
||||
type B [5]int
|
||||
|
||||
func main() {
|
||||
var i interface{}
|
||||
|
||||
var s1, s2 S
|
||||
i = s1 == s2
|
||||
|
||||
var t1, t2 T
|
||||
i = t1 == t2
|
||||
|
||||
var a1, a2 A
|
||||
i = a1 == a2
|
||||
|
||||
var b1, b2 B
|
||||
i = b1 == b2
|
||||
|
||||
_ = i
|
||||
}
|
Loading…
Reference in New Issue
Block a user