From a302c1054ca89a8dcc1f504bd8acfaac685c1483 Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 5 May 2014 18:49:39 +0000 Subject: [PATCH] compiler: Use backend interface for set and use temporaries. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210077 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/expressions.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 3d44a2b2893..c52b3968c2c 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -890,16 +890,16 @@ Set_and_use_temporary_expression::do_address_taken(bool) tree Set_and_use_temporary_expression::do_get_tree(Translate_context* context) { - Bvariable* bvar = this->statement_->get_backend_variable(context); - tree var_tree = var_to_tree(bvar); - tree expr_tree = this->expr_->get_tree(context); - if (var_tree == error_mark_node || expr_tree == error_mark_node) - return error_mark_node; Location loc = this->location(); - return build2_loc(loc.gcc_location(), COMPOUND_EXPR, TREE_TYPE(var_tree), - build2_loc(loc.gcc_location(), MODIFY_EXPR, void_type_node, - var_tree, expr_tree), - var_tree); + Gogo* gogo = context->gogo(); + Bvariable* bvar = this->statement_->get_backend_variable(context); + Bexpression* var_ref = gogo->backend()->var_expression(bvar, loc); + + Bexpression* bexpr = tree_to_expr(this->expr_->get_tree(context)); + Bstatement* set = gogo->backend()->assignment_statement(var_ref, bexpr, loc); + var_ref = gogo->backend()->var_expression(bvar, loc); + Bexpression* ret = gogo->backend()->compound_expression(set, var_ref, loc); + return expr_to_tree(ret); } // Dump. -- 2.11.4.GIT