diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2017-06-08 18:42:04 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2017-06-08 18:42:04 +0000 |
commit | 3159d897bda6798885f34eaaba916b46ebe2382f (patch) | |
tree | f0433f7cef25f6f9b623e28860e74400426dd0e0 /gcc | |
parent | 2163b9bcc627eb42ba5e629e54567b9f106e2f32 (diff) | |
download | gcc-3159d897bda6798885f34eaaba916b46ebe2382f.zip gcc-3159d897bda6798885f34eaaba916b46ebe2382f.tar.gz gcc-3159d897bda6798885f34eaaba916b46ebe2382f.tar.bz2 |
compiler: lvalue context fixes in Unary_expression::do_get_backend
A couple of the Backend::var_expression invocations in
Unary_expression::do_get_backend were selecting "lvalue" context
incorrectly (these var exprs were not in an assignment or LHS
position); fix is to change back to "rvalue" context.
Reviewed-on: https://go-review.googlesource.com/45136
From-SVN: r249029
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 7142db0..a30f61a 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -4b857cde45939f0e9f3cf89b9e347b6f6ebe0f8f +81d9f6d05c2bb92b2b3af02807713b6bed9bf053 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index eaf492f..5689c77 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -4370,7 +4370,7 @@ Unary_expression::do_get_backend(Translate_context* context) gogo->backend()->implicit_variable_set_init(implicit, buf, btype, true, copy_to_heap, false, bexpr); - bexpr = gogo->backend()->var_expression(implicit, VE_lvalue, loc); + bexpr = gogo->backend()->var_expression(implicit, VE_rvalue, loc); // If we are not copying a slice initializer to the heap, // then it can be changed by the program, so if it can @@ -4380,7 +4380,7 @@ Unary_expression::do_get_backend(Translate_context* context) && this->expr_->type()->has_pointer()) { Bexpression* root = - gogo->backend()->var_expression(implicit, VE_lvalue, loc); + gogo->backend()->var_expression(implicit, VE_rvalue, loc); root = gogo->backend()->address_expression(root, loc); Type* type = Type::make_pointer_type(this->expr_->type()); gogo->add_gc_root(Expression::make_backend(root, type, loc)); @@ -4400,7 +4400,7 @@ Unary_expression::do_get_backend(Translate_context* context) true, false, btype, loc); gogo->backend()->immutable_struct_set_init(decl, buf, true, false, btype, loc, bexpr); - bexpr = gogo->backend()->var_expression(decl, VE_lvalue, loc); + bexpr = gogo->backend()->var_expression(decl, VE_rvalue, loc); } go_assert(!this->create_temp_ || this->expr_->is_variable()); |