mirror of
https://github.com/golang/go
synced 2024-11-02 13:42:29 +00:00
5272a2cdc5
Now that we no longer generate dead code, it is possible to follow block predecessors into infinite loops with no variable definitions, causing an infinite loop during phi insertion. To fix that, check explicitly whether the predecessor is dead in lookupVarOutgoing, and if so, bail. The loop in lookupVarOutgoing is very hot code, so I am wary of adding anything to it. However, a long, CPU-only benchmarking run shows no performance impact at all. Fixes #19783 Change-Id: I8ef8d267e0b20a29b5cb0fecd7084f76c6f98e47 Reviewed-on: https://go-review.googlesource.com/38913 Reviewed-by: David Chase <drchase@google.com>
18 lines
260 B
Go
18 lines
260 B
Go
// 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
|
|
|
|
func Spin() {
|
|
l1:
|
|
for true {
|
|
goto l1
|
|
l2:
|
|
if true {
|
|
goto l2
|
|
}
|
|
}
|
|
}
|