compiler: remove Array_index_expression::is_lvalue_
As of CL 77510 it is never true. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/394695
This commit is contained in:
parent
42991a9116
commit
fa2d5fc049
5 changed files with 9 additions and 45 deletions
|
@ -1,4 +1,4 @@
|
|||
fbadca004b1e09db177c8e071706841038d1dd64
|
||||
6a33e7e30c89edc12340dc470b44791bb1066feb
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -7671,8 +7671,7 @@ Expression::comparison(Translate_context* context, Type* result_type,
|
|||
&& left_type->array_type()->length() == NULL)
|
||||
{
|
||||
Array_type* at = left_type->array_type();
|
||||
bool is_lvalue = false;
|
||||
left = at->get_value_pointer(context->gogo(), left, is_lvalue);
|
||||
left = at->get_value_pointer(context->gogo(), left);
|
||||
}
|
||||
else if (left_type->interface_type() != NULL)
|
||||
{
|
||||
|
@ -9276,7 +9275,7 @@ Builtin_call_expression::flatten_append(Gogo* gogo, Named_object* function,
|
|||
Type* unsafe_ptr_type = Type::make_pointer_type(Type::make_void_type());
|
||||
Expression* a1 = Expression::make_type_descriptor(element_type, loc);
|
||||
Expression* a2 = Expression::make_temporary_reference(s1tmp, loc);
|
||||
a2 = slice_type->array_type()->get_value_pointer(gogo, a2, false);
|
||||
a2 = slice_type->array_type()->get_value_pointer(gogo, a2);
|
||||
a2 = Expression::make_cast(unsafe_ptr_type, a2, loc);
|
||||
Expression* a3 = Expression::make_temporary_reference(l1tmp, loc);
|
||||
Expression* a4 = Expression::make_temporary_reference(c1tmp, loc);
|
||||
|
@ -13848,9 +13847,8 @@ Array_index_expression::do_get_backend(Translate_context* context)
|
|||
}
|
||||
else
|
||||
{
|
||||
Expression* valptr =
|
||||
array_type->get_value_pointer(gogo, this->array_,
|
||||
this->is_lvalue_);
|
||||
Expression* valptr = array_type->get_value_pointer(gogo,
|
||||
this->array_);
|
||||
Bexpression* ptr = valptr->get_backend(context);
|
||||
ptr = gogo->backend()->pointer_offset_expression(ptr, start, loc);
|
||||
|
||||
|
@ -13891,8 +13889,7 @@ Array_index_expression::do_get_backend(Translate_context* context)
|
|||
Bexpression* offset = gogo->backend()->conditional_expression(bfn, int_btype,
|
||||
cond, zero,
|
||||
start, loc);
|
||||
Expression* valptr = array_type->get_value_pointer(gogo, this->array_,
|
||||
this->is_lvalue_);
|
||||
Expression* valptr = array_type->get_value_pointer(gogo, this->array_);
|
||||
Bexpression* val = valptr->get_backend(context);
|
||||
val = gogo->backend()->pointer_offset_expression(val, offset, loc);
|
||||
|
||||
|
|
|
@ -3055,7 +3055,7 @@ class Array_index_expression : public Expression
|
|||
Expression* end, Expression* cap, Location location)
|
||||
: Expression(EXPRESSION_ARRAY_INDEX, location),
|
||||
array_(array), start_(start), end_(end), cap_(cap), type_(NULL),
|
||||
is_lvalue_(false), needs_bounds_check_(true), is_flattened_(false)
|
||||
needs_bounds_check_(true), is_flattened_(false)
|
||||
{ }
|
||||
|
||||
// Return the array.
|
||||
|
@ -3087,18 +3087,6 @@ class Array_index_expression : public Expression
|
|||
end() const
|
||||
{ return this->end_; }
|
||||
|
||||
// Return whether this array index expression appears in an lvalue
|
||||
// (left hand side of assignment) context.
|
||||
bool
|
||||
is_lvalue() const
|
||||
{ return this->is_lvalue_; }
|
||||
|
||||
// Update this array index expression to indicate that it appears
|
||||
// in a left-hand-side or lvalue context.
|
||||
void
|
||||
set_is_lvalue()
|
||||
{ this->is_lvalue_ = true; }
|
||||
|
||||
void
|
||||
set_needs_bounds_check(bool b)
|
||||
{ this->needs_bounds_check_ = b; }
|
||||
|
@ -3174,8 +3162,6 @@ class Array_index_expression : public Expression
|
|||
Expression* cap_;
|
||||
// The type of the expression.
|
||||
Type* type_;
|
||||
// Whether expr appears in an lvalue context.
|
||||
bool is_lvalue_;
|
||||
// Whether bounds check is needed.
|
||||
bool needs_bounds_check_;
|
||||
// Whether this has already been flattened.
|
||||
|
|
|
@ -7815,7 +7815,7 @@ Array_type::finish_backend_element(Gogo* gogo)
|
|||
// Return an expression for a pointer to the values in ARRAY.
|
||||
|
||||
Expression*
|
||||
Array_type::get_value_pointer(Gogo*, Expression* array, bool is_lvalue) const
|
||||
Array_type::get_value_pointer(Gogo*, Expression* array) const
|
||||
{
|
||||
if (this->length() != NULL)
|
||||
{
|
||||
|
@ -7828,25 +7828,6 @@ Array_type::get_value_pointer(Gogo*, Expression* array, bool is_lvalue) const
|
|||
}
|
||||
|
||||
// Slice.
|
||||
|
||||
if (is_lvalue)
|
||||
{
|
||||
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());
|
||||
array = ve;
|
||||
}
|
||||
}
|
||||
|
||||
return Expression::make_slice_info(array,
|
||||
Expression::SLICE_INFO_VALUE_POINTER,
|
||||
array->location());
|
||||
|
|
|
@ -2800,7 +2800,7 @@ class Array_type : public Type
|
|||
|
||||
// Return an expression for the pointer to the values in an array.
|
||||
Expression*
|
||||
get_value_pointer(Gogo*, Expression* array, bool is_lvalue) const;
|
||||
get_value_pointer(Gogo*, Expression* array) const;
|
||||
|
||||
// Return an expression for the length of an array with this type.
|
||||
Expression*
|
||||
|
|
Loading…
Add table
Reference in a new issue