Commit 36f1a35f by Ian Lance Taylor

compiler: fix missing case in Array_type::get_value_pointer

    
    Update the code in Array_type::get_value_pointer that handles
    "lvalue" context to look for both regular var expressions
    and temp var expressions, since both can appear in array/slice
    index expressions on the left hand side of assignments.
    
    Reviewed-on: https://go-review.googlesource.com/46170

From-SVN: r249486
parent 3f741f1b
a4b455aa584e0d6e362a88597f11bba1427088e2
0b93af68feb0a4135e83dd9e6c11df1563d862a9
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -7635,12 +7635,19 @@ Array_type::get_value_pointer(Gogo*, Expression* array, bool is_lvalue) const
{
Temporary_reference_expression* tref =
array->temporary_reference_expression();
Var_expression* ve = array->var_expression();
if (tref != NULL)
{
tref = tref->copy()->temporary_reference_expression();
tref->set_is_lvalue();
array = tref;
}
else if (ve != NULL)
{
ve = new Var_expression(ve->named_object(), ve->location());
ve->set_in_lvalue_pos();
array = ve;
}
}
return Expression::make_slice_info(array,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment