compiler: optimize 0,1,2-case select statement
authorIan Lance Taylor <ian@gcc.gnu.org>
Thu, 4 Jul 2019 02:20:37 +0000 (02:20 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 4 Jul 2019 02:20:37 +0000 (02:20 +0000)
commit0e68d70b7fbf4533d7b5ccd84c439026062b1a0e
treeb01088e287d6565278c17bc004de616ba1a0891f
parent9c5784fa7585c274b188f4df26bb80244ef97cb0
compiler: optimize 0,1,2-case select statement

    For a select statement with zero-, one-, or two-case with a
    default case, we can generate simpler code instead of calling the
    generic selectgo. A zero-case select is just blocking the
    execution. A one-case select is mostly just executing the case. A
    two-case select with a default case is a non-blocking send or
    receive. We add these special cases for lowering a select
    statement.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/184998

From-SVN: r273034
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/gogo.cc
gcc/go/gofrontend/runtime.def
gcc/go/gofrontend/statements.cc
gcc/go/gofrontend/statements.h
libgo/go/runtime/chan.go
libgo/go/runtime/select.go