]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: fix GOEXPERIMENT=preemptibleloops type-checking
authorAustin Clements <austin@google.com>
Thu, 22 Mar 2018 16:32:59 +0000 (12:32 -0400)
committerAustin Clements <austin@google.com>
Thu, 22 Mar 2018 18:20:31 +0000 (18:20 +0000)
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: David Chase <drchase@google.com>
src/cmd/compile/internal/gc/range.go

index 91f0cd363e3f7d6338e821e45b010fc129cd69c0..d8e504dd14c0f0f1fed43e2c0492a59ed9e584bf 100644 (file)
@@ -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...)
        }