From patchwork Mon Oct 23 17:36:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 116836 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp4900240qgn; Mon, 23 Oct 2017 10:37:03 -0700 (PDT) X-Received: by 10.99.124.27 with SMTP id x27mr12371371pgc.304.1508780223525; Mon, 23 Oct 2017 10:37:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508780223; cv=none; d=google.com; s=arc-20160816; b=BmxMYGbIwm3l5NTPMcgCV8BbaTq7Y5W0KQa2oh8urm4jS6dXueFuVTau5+KhNc5PKY hdR2hwbp62hcY8dwKnCP9LqFKZRg2C+gn5/IvEr7WHFe7ATm8SktucsaoEtSLm0AvYU9 J6D8994gkl/120rvKnB+Mv7tHPbMQAmJJsxpK3N/sbRjNBF8zU9kyz002PXIj212DFEp iap3b/fuTLeYJsmvi6n2kmQXk4zw5EtXhtHPFIjJToZFVW1DIYuDKAxZTuOKa9Sypmqj K8Ssb9kB7bPbTNdNGZZ2YAS5yjVEkwnlGuNEOXSiVhjeDrHzsNsetNKVCgtOE3Cvr/BX KPPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:user-agent:message-id:in-reply-to:date:references :subject:mail-followup-to:to:from:delivered-to:sender:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence :mailing-list:dkim-signature:domainkey-signature :arc-authentication-results; bh=1bybj+ivlm5UFWsDItpb9PWYjCa72AqPTmPssXgrv4Y=; b=wDFRMFVurNkcXeDzmPAWxvU/MSQDnn9yY9AnDraS+PUcVPm4gBU9am/VTFCsJdkudJ yABWdaqNrRQPgjO3b06udVTtM9WEg37UEhlQciUTSVasfZa9KP9InDdZrlOhtUf7qO6Q 6x4FVSW1eqTOB8ZM4rUFduIZJXXWasRIP4UrYrXsMxOW3qz96WlRGHg04SzNDDEYRpVY D2GkG3Kza2uvv6BBHWRfE4BSYovZGPFJzd4OuTeiKICiOphmyt7YYPJY9xW5imstvP/8 2EC1Zlu376WO5VMSviEDyAMcdtK5olbeiWY/DzeebB/2HTqOfh4OMw04y4GDFcZu5nW/ M4yg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=YTbIebQW; spf=pass (google.com: domain of gcc-patches-return-464867-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-464867-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id bd7si4258494plb.694.2017.10.23.10.37.03 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Oct 2017 10:37:03 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-464867-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=YTbIebQW; spf=pass (google.com: domain of gcc-patches-return-464867-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-464867-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org 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:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=default; b=Q8NGLyRurKExH8Dha+GHfLNNxgXA7 0Qp7ICpPlGHRNwPfkSbuUm65PxM2iyYkXYMcDLFuCDxddXUmM8RG8mW/N2FVD1k+ vdgLUVqnfYb7pqeW8m4EPC48UZrS04MxKnmeK5OIjXsVGSJvRkhUS1PZbsL4mZIx a/xZkDjzwbldqM= 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:references:date:in-reply-to:message-id:mime-version :content-type; s=default; bh=VEqXXG3AymlROxescq6HsMQEq80=; b=YTb IebQWc3CZRoux8P/vFVXWJL5rYNzqJqXm7bzCsk80WW77aMBcA0UNF9JegIK424t A5p4Y06Att2jdzbm9LH1/gC6ioeLaRdxVZdIP0a8pWokHaGDTFJurlEykYX4437Y B42J3bZxp1CSdxc3ZHoVfMdu5NPAGuoIkuBpak7U= Received: (qmail 81303 invoked by alias); 23 Oct 2017 17:36:48 -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 81293 invoked by uid 89); 23 Oct 2017 17:36:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-wm0-f49.google.com Received: from mail-wm0-f49.google.com (HELO mail-wm0-f49.google.com) (74.125.82.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 23 Oct 2017 17:36:46 +0000 Received: by mail-wm0-f49.google.com with SMTP id p75so11017329wmg.3 for ; Mon, 23 Oct 2017 10:36:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:mail-followup-to:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=1bybj+ivlm5UFWsDItpb9PWYjCa72AqPTmPssXgrv4Y=; b=UIGzOQUYCc5cSdNfrOUjQRfLCt7FmAlOwvsOXwRiYgIdn7v0kj+ce/2MtJRNr8ZIok ls0xTwGgII8Mq53EAgDBvkB6eaCsnwieFBQUdF/IHy+GtarUMZO79Tf3n/mNAtngNcx9 BwpkDuUIVyVgVAc/77V563Vng+54guzblmDFjBFZahEtKU7giNI5AZNoD4ZYw+PZr6ZH WEz5WUrgDefhmay8i0+aqHaCNamU+S0f6SfhbnmMovVpN9yK5T9Kre8Q47F4HVAQEnaI qLJiHyJtOqpiCoRHWuE60ubFCVDTntqPPPfOk60o6xfGGEVZkJ6da/v+z9D3MxI5AlGr T9Ow== X-Gm-Message-State: AMCzsaXmiMWrxCkkXbEd5VOUbzWo9JT7WILC/YM8zPKJZ/ondtttGp7f PVJnJ+79CDNo7k+t3ag0bNt5kL0YkYI= X-Google-Smtp-Source: ABhQp+RtND0O+FOqjIf43G5FiSxE1XhesCvm1dNBG3HAiDcnteIr2wAEZM5ZRemn2CywWLEaIS0bLg== X-Received: by 10.28.213.79 with SMTP id m76mr5967962wmg.44.1508780204412; Mon, 23 Oct 2017 10:36:44 -0700 (PDT) Received: from localhost ([2.26.27.199]) by smtp.gmail.com with ESMTPSA id m37sm8595638wrm.4.2017.10.23.10.36.43 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Oct 2017 10:36:43 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org Subject: [091/nnn] poly_int: emit_single_push_insn_1 References: <871sltvm7r.fsf@linaro.org> Date: Mon, 23 Oct 2017 18:36:42 +0100 In-Reply-To: <871sltvm7r.fsf@linaro.org> (Richard Sandiford's message of "Mon, 23 Oct 2017 17:54:32 +0100") Message-ID: <87vaj5epg5.fsf@linaro.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 This patch makes emit_single_push_insn_1 cope with polynomial mode sizes. 2017-10-23 Richard Sandiford Alan Hayward David Sherwood gcc/ * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial. Use plus_constant instead of gen_rtx_PLUS. Index: gcc/expr.c =================================================================== --- gcc/expr.c 2017-10-23 17:25:35.142976454 +0100 +++ gcc/expr.c 2017-10-23 17:25:37.064907370 +0100 @@ -4141,9 +4141,6 @@ emit_single_push_insn_1 (machine_mode mo access to type. */ else if (targetm.calls.function_arg_padding (mode, type) == PAD_DOWNWARD) { - unsigned padding_size = rounded_size - GET_MODE_SIZE (mode); - HOST_WIDE_INT offset; - emit_move_insn (stack_pointer_rtx, expand_binop (Pmode, STACK_GROWS_DOWNWARD ? sub_optab @@ -4152,31 +4149,27 @@ emit_single_push_insn_1 (machine_mode mo gen_int_mode (rounded_size, Pmode), NULL_RTX, 0, OPTAB_LIB_WIDEN)); - offset = (HOST_WIDE_INT) padding_size; + poly_int64 offset = rounded_size - GET_MODE_SIZE (mode); if (STACK_GROWS_DOWNWARD && STACK_PUSH_CODE == POST_DEC) /* We have already decremented the stack pointer, so get the previous value. */ - offset += (HOST_WIDE_INT) rounded_size; + offset += rounded_size; if (!STACK_GROWS_DOWNWARD && STACK_PUSH_CODE == POST_INC) /* We have already incremented the stack pointer, so get the previous value. */ - offset -= (HOST_WIDE_INT) rounded_size; + offset -= rounded_size; - dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, - gen_int_mode (offset, Pmode)); + dest_addr = plus_constant (Pmode, stack_pointer_rtx, offset); } else { if (STACK_GROWS_DOWNWARD) /* ??? This seems wrong if STACK_PUSH_CODE == POST_DEC. */ - dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, - gen_int_mode (-(HOST_WIDE_INT) rounded_size, - Pmode)); + dest_addr = plus_constant (Pmode, stack_pointer_rtx, -rounded_size); else /* ??? This seems wrong if STACK_PUSH_CODE == POST_INC. */ - dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, - gen_int_mode (rounded_size, Pmode)); + dest_addr = plus_constant (Pmode, stack_pointer_rtx, rounded_size); dest_addr = gen_rtx_PRE_MODIFY (Pmode, stack_pointer_rtx, dest_addr); }