aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2015-07-24 17:22:03 +0000
committerIan Lance Taylor <iant@google.com>2015-07-24 17:22:03 +0000
commitab435f0e174571f50bb123d2179eefdafcafe673 (patch)
treefb954857faf6db9e0a780900aafda6fb34473eeb
parent82a155ea0aa2a8d15d71fdb28c404cc1a6726741 (diff)
compiler: Don't make temporaries for constant expressions.
Fixes golang/go#11039. Reviewed-on: https://go-review.googlesource.com/10645 git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@226180 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/statements.cc3
2 files changed, 3 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index a7b5246ad39..2610a78ced0 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -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.
diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc
index a44145da23e..96c142c6eab 100644
--- a/gcc/go/gofrontend/statements.cc
+++ b/gcc/go/gofrontend/statements.cc
@@ -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);