mirror of
https://github.com/golang/go
synced 2024-11-23 04:50:06 -07:00
cmd/compile: lvalues are only required for == when calling runtime fns
Fixes #18661. Change-Id: I865802a9b88ab22560c9914a70901d1924242bdc Reviewed-on: https://go-review.googlesource.com/35236 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
e83d506714
commit
5b708a6b6a
@ -3117,12 +3117,12 @@ func walkcompare(n *Node, init *Nodes) *Node {
|
||||
cmpr = cmpr.Left
|
||||
}
|
||||
|
||||
if !islvalue(cmpl) || !islvalue(cmpr) {
|
||||
Fatalf("arguments of comparison must be lvalues - %v %v", cmpl, cmpr)
|
||||
}
|
||||
|
||||
// Chose not to inline. Call equality function directly.
|
||||
if !inline {
|
||||
if !islvalue(cmpl) || !islvalue(cmpr) {
|
||||
Fatalf("arguments of comparison must be lvalues - %v %v", cmpl, cmpr)
|
||||
}
|
||||
|
||||
// eq algs take pointers
|
||||
pl := temp(ptrto(t))
|
||||
al := nod(OAS, pl, nod(OADDR, cmpl, nil))
|
||||
|
18
test/fixedbugs/issue18661.go
Normal file
18
test/fixedbugs/issue18661.go
Normal file
@ -0,0 +1,18 @@
|
||||
// compile
|
||||
|
||||
// Copyright 2017 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.
|
||||
|
||||
package p
|
||||
|
||||
var (
|
||||
e interface{}
|
||||
s = struct{ a *int }{}
|
||||
b = e == s
|
||||
)
|
||||
|
||||
func test(obj interface{}) {
|
||||
if obj != struct{ a *string }{} {
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user