]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/gc: cleanup walkselectcases slightly
authorMatthew Dempsky <mdempsky@google.com>
Mon, 27 Jul 2020 23:45:48 +0000 (16:45 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Tue, 18 Aug 2020 20:06:41 +0000 (20:06 +0000)
Remove some unnecessary code. Most significantly, we can skip testing
"if ch == nil { block() }", because this is already the semantics
implied by normal send/receive operations.

Updates #40410.

Change-Id: I4acd33383cc876719fc3b998d85244d4ac1ff9d9
Reviewed-on: https://go-review.googlesource.com/c/go/+/245126
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
src/cmd/compile/internal/gc/select.go

index bae7ed30e24bed0966bf0ab4bdae753d750f6714..3812a0e1faa6e5c333d39095981ecf01c0e02b10 100644 (file)
@@ -123,17 +123,14 @@ func walkselectcases(cases *Nodes) []*Node {
                        n := cas.Left
                        l = append(l, n.Ninit.Slice()...)
                        n.Ninit.Set(nil)
-                       var ch *Node
                        switch n.Op {
                        default:
                                Fatalf("select %v", n.Op)
 
-                               // ok already
                        case OSEND:
-                               ch = n.Left
+                               // already ok
 
                        case OSELRECV, OSELRECV2:
-                               ch = n.Right.Left
                                if n.Op == OSELRECV || n.List.Len() == 0 {
                                        if n.Left == nil {
                                                n = n.Right
@@ -157,16 +154,7 @@ func walkselectcases(cases *Nodes) []*Node {
                                n = typecheck(n, ctxStmt)
                        }
 
-                       // if ch == nil { block() }; n;
-                       a := nod(OIF, nil, nil)
-
-                       a.Left = nod(OEQ, ch, nodnil())
-                       var ln Nodes
-                       ln.Set(l)
-                       a.Nbody.Set1(mkcall("block", nil, &ln))
-                       l = ln.Slice()
-                       a = typecheck(a, ctxStmt)
-                       l = append(l, a, n)
+                       l = append(l, n)
                }
 
                l = append(l, cas.Nbody.Slice()...)
@@ -223,8 +211,6 @@ func walkselectcases(cases *Nodes) []*Node {
 
                case OSELRECV:
                        // if selectnbrecv(&v, c) { body } else { default body }
-                       r = nod(OIF, nil, nil)
-                       r.Ninit.Set(cas.Ninit.Slice())
                        ch := n.Right.Left
                        elem := n.Left
                        if elem == nil {
@@ -234,8 +220,6 @@ func walkselectcases(cases *Nodes) []*Node {
 
                case OSELRECV2:
                        // if selectnbrecv2(&v, &received, c) { body } else { default body }
-                       r = nod(OIF, nil, nil)
-                       r.Ninit.Set(cas.Ninit.Slice())
                        ch := n.Right.Left
                        elem := n.Left
                        if elem == nil {