Commit 2d8f63a1 by Ian Lance Taylor

Don't crash ranging over call to builtin function.

From-SVN: r173671
parent cfca3f72
...@@ -8527,9 +8527,9 @@ Call_expression::lower_varargs(Gogo* gogo, Named_object* function, ...@@ -8527,9 +8527,9 @@ Call_expression::lower_varargs(Gogo* gogo, Named_object* function,
new_args->push_back(Expression::make_nil(loc)); new_args->push_back(Expression::make_nil(loc));
// We can't return a new call expression here, because this one may // We can't return a new call expression here, because this one may
// be referenced by Call_result expressions. FIXME. // be referenced by Call_result expressions. FIXME. We can't
if (old_args != NULL) // delete OLD_ARGS because we may have both a Call_expression and a
delete old_args; // Builtin_call_expression which refer to them. FIXME.
this->args_ = new_args; this->args_ = new_args;
this->varargs_are_lowered_ = true; this->varargs_are_lowered_ = true;
...@@ -9250,7 +9250,7 @@ Index_expression::do_lower(Gogo*, Named_object*, int) ...@@ -9250,7 +9250,7 @@ Index_expression::do_lower(Gogo*, Named_object*, int)
error_at(location, "invalid slice of map"); error_at(location, "invalid slice of map");
return Expression::make_error(location); return Expression::make_error(location);
} }
Map_index_expression* ret= Expression::make_map_index(left, start, Map_index_expression* ret = Expression::make_map_index(left, start,
location); location);
if (this->is_lvalue_) if (this->is_lvalue_)
ret->set_is_lvalue(); ret->set_is_lvalue();
......
...@@ -4536,7 +4536,7 @@ For_range_statement::do_lower(Gogo* gogo, Named_object*, Block* enclosing) ...@@ -4536,7 +4536,7 @@ For_range_statement::do_lower(Gogo* gogo, Named_object*, Block* enclosing)
else else
{ {
this->report_error(_("range clause must have " this->report_error(_("range clause must have "
"array, slice, setring, map, or channel type")); "array, slice, string, map, or channel type"));
return Statement::make_error_statement(this->location()); return Statement::make_error_statement(this->location());
} }
...@@ -4552,6 +4552,7 @@ For_range_statement::do_lower(Gogo* gogo, Named_object*, Block* enclosing) ...@@ -4552,6 +4552,7 @@ For_range_statement::do_lower(Gogo* gogo, Named_object*, Block* enclosing)
{ {
range_temp = Statement::make_temporary(NULL, this->range_, loc); range_temp = Statement::make_temporary(NULL, this->range_, loc);
temp_block->add_statement(range_temp); temp_block->add_statement(range_temp);
this->range_ = NULL;
} }
Temporary_statement* index_temp = Statement::make_temporary(index_type, Temporary_statement* index_temp = Statement::make_temporary(index_type,
......
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