mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
![Keith Randall](/assets/img/avatar_default.png)
By combining the load+op, we may force the op to happen earlier in the store chain. That might force the SymAddr operation earlier, and in particular earlier than its corresponding VarDef. That leads to an invalid schedule, so avoid that. This is kind of a hack to work around the issue presented. I think the underlying problem, that LEAQ is not directly ordered with respect to its vardef, is the real problem. The benefit of this CL is that it fixes the immediate issue, is small, and obviously won't break anything. A real fix for this issue is much more invasive. The go binary is unchanged in size. This situation just doesn't occur very often. Fixes #28445 Change-Id: I13a765e13f075d5b6808a355ef3c43cdd7cd47b6 Reviewed-on: https://go-review.googlesource.com/c/153641 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
17 lines
272 B
Go
17 lines
272 B
Go
// compile
|
|
|
|
// Copyright 2018 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 fp = (**float64)(nil)
|
|
|
|
func f() {
|
|
switch fp {
|
|
case new(*float64):
|
|
println()
|
|
}
|
|
}
|