compiler: Don't make temporaries for constant expressions.

Fixes golang/go#11039.
    
    Reviewed-on: https://go-review.googlesource.com/10645

From-SVN: r226180
This commit is contained in:
Ian Lance Taylor 2015-07-24 17:22:03 +00:00
parent 4e1952ab19
commit 525a825bc6
2 changed files with 3 additions and 2 deletions

View File

@ -1,4 +1,4 @@
cbb27e8089e11094a20502e53ef69c9c36955f85 ac462880e803a926005f1756b0f8d82ff0c47499
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.

View File

@ -689,7 +689,8 @@ Move_subexpressions::expression(Expression** pexpr)
if (this->skip_ > 0) if (this->skip_ > 0)
--this->skip_; --this->skip_;
else if ((*pexpr)->temporary_reference_expression() == NULL else if ((*pexpr)->temporary_reference_expression() == NULL
&& !(*pexpr)->is_nil_expression()) && !(*pexpr)->is_nil_expression()
&& !(*pexpr)->is_constant())
{ {
Location loc = (*pexpr)->location(); Location loc = (*pexpr)->location();
Temporary_statement* temp = Statement::make_temporary(NULL, *pexpr, loc); Temporary_statement* temp = Statement::make_temporary(NULL, *pexpr, loc);