compiler: pass lvalue/rvalue context to back end for var exprs
authorThan McIntosh <thanm@google.com>
Tue, 6 Dec 2016 22:31:25 +0000 (22:31 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 6 Dec 2016 22:31:25 +0000 (22:31 +0000)
commita5a56d88a1040a42a1bfc22587364f3bfb1efa76
treed29a67292ff3a155b5c23dfb0a6145f8ddbee486
parentdd5af1d61761e9bf466cd64360e6321cde0a2c5f
compiler: pass lvalue/rvalue context to back end for var exprs

    Add a new flag on the Var_expression class that indicates
    whether the var reference appears in an "lvalue" context
    (for example, on the LHS of an assignment stmt) or an
    "rvalue" context (for example, as an argument of a call).

    Add a traversal pass that visits assignment stmt LHS subtrees
    so as to mark things prior to backend gen. Select the right
    context value in other places where Backend::var_expression is
    called.

    Reviewed-on: https://go-review.googlesource.com/33990

* go-gcc.cc (Gcc_backend::var_expression): Add Varexpr_context
parameter.

From-SVN: r243321
gcc/go/ChangeLog
gcc/go/go-gcc.cc
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/backend.h
gcc/go/gofrontend/expressions.cc
gcc/go/gofrontend/expressions.h
gcc/go/gofrontend/gogo.cc
gcc/go/gofrontend/operator.h
gcc/go/gofrontend/statements.cc
gcc/go/gofrontend/types.cc