Commit 48f990b4 authored by Austin Clements's avatar Austin Clements

cmd/compile: fix GOEXPERIMENT=preemptibleloops type-checking

This experiment has gone stale. It causes a type-checking failure
because the condition of the OIF produced by range loop lowering has
type "untyped bool". Fix this by typechecking the whole OIF statement,
not just its condition.

This doesn't quite fix the whole experiment, but it gets further.
Something about preemption point insertion is causing failures like
"internal compiler error: likeliness prediction 1 for block b10 with 1
successors" in cmd/compile/internal/gc.

Change-Id: I7d80d618d7c91c338bf5f2a8dc174d582a479df3
Reviewed-on: https://go-review.googlesource.com/102157
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarDavid Chase <drchase@google.com>
parent 4f7b7748
......@@ -425,8 +425,7 @@ func walkrange(n *Node) *Node {
if ifGuard != nil {
ifGuard.Ninit.Append(init...)
typecheckslice(ifGuard.Left.Ninit.Slice(), Etop)
ifGuard.Left = typecheck(ifGuard.Left, Erv)
ifGuard = typecheck(ifGuard, Etop)
} else {
n.Ninit.Append(init...)
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment