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
merge done from the gofrontend repository.

View File

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