compiler: Don't make temporaries for constant string concatentation.
Fixes golang/go#10642. From-SVN: r222828
This commit is contained in:
parent
21c0a521e4
commit
5003ddad85
1 changed files with 4 additions and 2 deletions
|
@ -5120,13 +5120,15 @@ Binary_expression::do_flatten(Gogo* gogo, Named_object*,
|
|||
if (this->left_->type()->is_string_type()
|
||||
&& this->op_ == OPERATOR_PLUS)
|
||||
{
|
||||
if (!this->left_->is_variable())
|
||||
if (!this->left_->is_variable()
|
||||
&& !this->left_->is_constant())
|
||||
{
|
||||
temp = Statement::make_temporary(NULL, this->left_, loc);
|
||||
inserter->insert(temp);
|
||||
this->left_ = Expression::make_temporary_reference(temp, loc);
|
||||
}
|
||||
if (!this->right_->is_variable())
|
||||
if (!this->right_->is_variable()
|
||||
&& !this->right_->is_constant())
|
||||
{
|
||||
temp =
|
||||
Statement::make_temporary(this->left_->type(), this->right_, loc);
|
||||
|
|
Loading…
Add table
Reference in a new issue