From patchwork Fri Oct 25 17:39:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Craig Blackmore X-Patchwork-Id: 1184356 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-511790-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="h/PlBIiD"; dkim=pass (2048-bit key; unprotected) header.d=embecosm.com header.i=@embecosm.com header.b="cHjoKewX"; dkim-atps=neutral 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 470BGw2NfWz9sP3 for ; Sat, 26 Oct 2019 04:40:56 +1100 (AEDT) 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:cc:subject:date:message-id:in-reply-to:references; q=dns; s= default; b=DVzQZmh2kJYIrFPwlVivCDb+haOk9CWUgS5nv1k77YnnUiD3ea/j2 e8oMSTzgIjhCz0D0ksCE+N/xsu5CqV1GZvm/rwvZ0FiipxtjJaNLmgcd0oKsoDDA hFcpNp+RaOEhtvVGOcoY9CqAZMqdGPVeDmS0uOdpHGX+joEjhGltvM= 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:cc:subject:date:message-id:in-reply-to:references; s= default; bh=oyKdZ2UmDy+brCl/HbT5/n0X3ws=; b=h/PlBIiDF2OIau/6ZrN5 SUmBwWAJ8noPl11Km2QhsTnWaQvLG5mia6bvsqV+REUmuPRmEDipQlewJRHbbXN/ zuwMqj4Z7LnDQQZ6mN29aLHqYRer5obfGxfWnj5NypsVxL1QNFWL3z9gbbJD7gBt onU+JE+L24TzLtd9cG2BMiU= Received: (qmail 72804 invoked by alias); 25 Oct 2019 17:40:42 -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 72729 invoked by uid 89); 25 Oct 2019 17:40:41 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=cheaper X-HELO: mail-wr1-f68.google.com Received: from mail-wr1-f68.google.com (HELO mail-wr1-f68.google.com) (209.85.221.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 25 Oct 2019 17:40:39 +0000 Received: by mail-wr1-f68.google.com with SMTP id n15so3240707wrw.13 for ; Fri, 25 Oct 2019 10:40:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=VmkAKR/dk+aQMwja7rq5BHAwJLPyrVXzYRsX1RxpRso=; b=cHjoKewX13A78bTlQTfMLyuN6f8g9WhGl8LSicnfdBQMV8ly8HKDJ/t5DyhBAOXNi1 TaN/N3xEBdv7yvWqJ40fWmncXFYBFpKJhhYdQ3Wryduz0HhvOPZgsLYgIdtlt95wLeCo O36HZ0vYT8oWQ1bQZ+qQm99Fu/I9aismY714ebabuqyj69tuMWIDaWX6Lg+aBNMAB4Nw i65p2EwmpxHNEph+N36UvJKjQPZwxwKLq1ZorUInaUiMhVYvjjN7ebljYbDcy9OKWwdq 0WKQyF/8HyIV+w6WPSsfx3ixVwByjhSdvAI3Un5BfiwJlP9Tuz4GQXijb55IfJUVjDv4 Wq2g== Received: from localhost.localdomain ([80.0.42.246]) by smtp.googlemail.com with ESMTPSA id 126sm2672521wma.48.2019.10.25.10.40.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 25 Oct 2019 10:40:36 -0700 (PDT) From: Craig Blackmore To: gcc-patches@gcc.gnu.org Cc: jimw@sifive.com, Ofer.Shinaar@wdc.com, Nidal.Faour@wdc.com, kito.cheng@gmail.com, law@redhat.com, Craig Blackmore Subject: [PATCH v2 2/2] sched-deps.c: Avoid replacing address if it increases address cost Date: Fri, 25 Oct 2019 18:39:11 +0100 Message-Id: <1572025151-22783-3-git-send-email-craig.blackmore@embecosm.com> In-Reply-To: <1572025151-22783-1-git-send-email-craig.blackmore@embecosm.com> References: <1572025151-22783-1-git-send-email-craig.blackmore@embecosm.com> The sched2 pass undoes some of the addresses generated by the RISC-V shorten_memrefs code size optimization (patch 1/2) and consequently increases code size. This patch prevents sched-deps.c from changing an address if it is expected to increase address cost. Tested on bare metal rv32i, rv32iac, rv32im, rv32imac, rv32imafc, rv64imac, rv64imafdc via QEMU. Bootstrapped and tested on x86_64-linux-gnu. No regressions. gcc/ChangeLog: * sched-deps.c (attempt_change): Use old address if it is cheaper than new address. --- gcc/sched-deps.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 308db4e3ca0..c7d0ca550df 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -39,6 +39,7 @@ along with GCC; see the file COPYING3. If not see #include "params.h" #include "cselib.h" #include "function-abi.h" +#include "predict.h" #ifdef INSN_SCHEDULING @@ -4694,6 +4695,14 @@ attempt_change (struct mem_inc_info *mii, rtx new_addr) rtx mem = *mii->mem_loc; rtx new_mem; + /* Prefer old address if it is less expensive. */ + addr_space_t as = MEM_ADDR_SPACE (mem); + bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (mii->mem_insn)); + int old_cost = address_cost (XEXP (mem, 0), GET_MODE (mem), as, speed); + int new_cost = address_cost (new_addr, GET_MODE (mem), as, speed); + if (new_cost > old_cost) + return NULL_RTX; + /* Jump through a lot of hoops to keep the attributes up to date. We do not want to call one of the change address variants that take an offset even though we know the offset in many cases. These