From patchwork Mon May 5 18:49:41 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Lance Taylor X-Patchwork-Id: 345828 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 13C9414030A for ; Tue, 6 May 2014 04:49:55 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; q=dns; s= default; b=yhMJMEohhRmQuIUnkl91iTmOrcS7DJQJfxf2DDpo5p0WKPvnCy8SC EcrDtdOeSnuBhBjFQlRikyeDWxJVCiYzIg9QLGaFrmX6NBX2/ITz8x1+r+2gVcjX n49P6AMdJMDVaupNZRobF4f7hOD17NhtAkpohQLH5p+Bc77g/PDqk8= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; s= default; bh=QCt1wqib1CBr78bhQQeUYwJsIw4=; b=bO+cWszHRrDmbGrS0xqp 8TaJDcr0B04ZRFrPfDm+n6UqXRgc6V+zhnmuTVdfThTEVD4RobIIZmN/zWSb8Ig3 8sf1WKQ6xBXa2xSnGRgjy9vVHij0ntf2llY4y5uaBuYdJGas3jeeUiKJJFdzQHT1 Vbah1AZT4EvhkRlb73IAwtk= Received: (qmail 8056 invoked by alias); 5 May 2014 18:49:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 8040 invoked by uid 89); 5 May 2014 18:49:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, RP_MATCHES_RCVD, SPF_PASS, T_TVD_MIME_NO_HEADERS autolearn=ham version=3.3.2 X-HELO: mail-pa0-f50.google.com Received: from mail-pa0-f50.google.com (HELO mail-pa0-f50.google.com) (209.85.220.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 05 May 2014 18:49:46 +0000 Received: by mail-pa0-f50.google.com with SMTP id fb1so2972502pad.37 for ; Mon, 05 May 2014 11:49:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mime-version:content-type; bh=RrnZsuixqyWsJp+c9zA1jENuKjNcKFVFJe5pjyH7A7M=; b=hHF70fdddulyW6z2a+9kh+hA1R1yDkkdRw5bU8cmxN/ne9lEZOaXJoogYaqTBXDqlq 9AyQCPKYsyhCLbOz7iE3tHsVGeRi5usjf0O3cQP7kzd8e5dfDIPKOmiHe4+V+eQ/csGG +RwlFoSM9OD+i6QVuzXDwaXtllQMhsuZYlKQTZwsqJNS8uNCpXS8rpsDRfheJyZaSlit ftWoD7haVroXxreG0Vqj43afRSHYJggfanwlIkUlTbOG6HCYxDDghUdeEZ+//6N18xtw aRM8JspfT3wSWpnORvgt4vk1gXzSl7mXTobodrmM+zoNs2Zlb7LTGXYZ778RQeUPEJJw XfTg== X-Gm-Message-State: ALoCoQnAXvWavpOaVLYMvIbRWCfybywqmaIzfbLwdIqkwYxsOgEQP1ax2p4F8FAVu2rFGPvUWN42 X-Received: by 10.66.160.34 with SMTP id xh2mr32457245pab.109.1399315784121; Mon, 05 May 2014 11:49:44 -0700 (PDT) Received: from iant-glaptop.roam.corp.google.com.google.com (adsl-71-133-8-30.dsl.pltn13.pacbell.net. [71.133.8.30]) by mx.google.com with ESMTPSA id nx12sm77509837pab.6.2014.05.05.11.49.42 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Mon, 05 May 2014 11:49:43 -0700 (PDT) From: Ian Lance Taylor To: gcc-patches@gcc.gnu.org, gofrontend-dev@googlegroups.com Subject: Go patch committed: Use backend interface for set-and-use temps Date: Mon, 05 May 2014 14:49:41 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) MIME-Version: 1.0 X-IsSubscribed: yes This patch by Chris Manghane changes the Go frontend to use the backend interface for set-and-use temporary variables. Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to mainline. Ian diff -r 9ec9e72945e4 go/expressions.cc --- a/go/expressions.cc Mon May 05 13:54:25 2014 -0400 +++ b/go/expressions.cc Mon May 05 14:40:12 2014 -0400 @@ -890,16 +890,16 @@ tree Set_and_use_temporary_expression::do_get_tree(Translate_context* context) { + Location loc = this->location(); + Gogo* gogo = context->gogo(); 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); + 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.