compiler: pass lvalue/rvalue context to back end for var exprs
commitd4e6573ef525076b01036563be0056ea8f84a314
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Dec 2016 22:31:25 +0000 (6 22:31 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Dec 2016 22:31:25 +0000 (6 22:31 +0000)
treed29a67292ff3a155b5c23dfb0a6145f8ddbee486
parentf887f8314a0fe76c0667bde7d7ea811e24d66359
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243321 138bc75d-0d04-0410-961f-82ee72b054a4
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