From patchwork Sun Oct 13 14:59:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Schwab X-Patchwork-Id: 1996535 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XRNnQ5JG8z1xv6 for ; Mon, 14 Oct 2024 01:59:53 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 19117385AE6F for ; Sun, 13 Oct 2024 14:59:50 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-out.m-online.net (mail-out.m-online.net [212.18.0.10]) by sourceware.org (Postfix) with ESMTPS id 8638B385AE5E for ; Sun, 13 Oct 2024 14:59:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8638B385AE5E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=nefkom.net ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8638B385AE5E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.18.0.10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1728831570; cv=none; b=hYYDqQgUsUUcfqVcrAgSyAkCl0Q1MxrSEbzufJk+XDD52LBG9GyORFvQFZSiA8ktKix0ICmwCbKp6TNgT9gym2lcu19ORfloHK/JfNJolvar+P5QxpMGAdWkATw22RCP6sLkuty53kYzAVXRe0wib1AMftbh+Iqtc6rCGHeolFs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1728831570; c=relaxed/simple; bh=a6A4r5cmd/7R0M02eqpXBmLLpmwBK9LmjWaDD/gGG5A=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=bI4LZoisY515rGJDa1kVjGwnv+9R756p5qVGWXAlHELK/bDxKKHJbRIGQeUYUG+EhYn7QJEjXFDTnOwdHx7DgYSMawEZZpiBgIVkmIuMisTdqsHV8ybN3j+Wu3L7oCFK62E+ROzmITB4SPTBMQtPK/d9TDSbxEZ4JClPUuDWZdY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4XRNmv3b6Jz1sB74 for ; Sun, 13 Oct 2024 16:59:27 +0200 (CEST) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 4XRNmv0grmz1qqlS for ; Sun, 13 Oct 2024 16:59:27 +0200 (CEST) X-Virus-Scanned: amavis at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavis, port 10024) with ESMTP id laq0ik8aYJih for ; Sun, 13 Oct 2024 16:59:26 +0200 (CEST) X-Auth-Info: cBlahhF2wWzyZmWGS155b+U3PGCFnJj1NzYl8VlvkulhZZssB75+NwSFmNETCFU7 Received: from igel.home (aftr-82-135-83-48.dynamic.mnet-online.de [82.135.83.48]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA for ; Sun, 13 Oct 2024 16:59:26 +0200 (CEST) Received: by igel.home (Postfix, from userid 1000) id 215C32C1A73; Sun, 13 Oct 2024 16:59:26 +0200 (CEST) From: Andreas Schwab To: gcc-patches@gcc.gnu.org Subject: m68k: replace reload_in_progress by reload_in_progress || lra_in_progress X-Yow: I like the IMPUDENT NOSE on that car.. Are you a TEEN-AGER? Date: Sun, 13 Oct 2024 16:59:26 +0200 Message-ID: <87ed4kyrox.fsf@igel.home> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org For now assume that LRA needs the same treatment as reload. * config/m68k/m68k.md ("movsi", "movxf"): Replace reload_in_progress by reload_in_progress || lra_in_progress. * config/m68k/m68k.cc (m68k_legitimate_mem_p) (emit_move_sequence): Likewise. * config/m68k/predicates.md ("fp_src_operand"): Likewise. --- gcc/config/m68k/m68k.cc | 21 ++++++++++++++------- gcc/config/m68k/m68k.md | 9 +++++---- gcc/config/m68k/predicates.md | 1 + 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/gcc/config/m68k/m68k.cc b/gcc/config/m68k/m68k.cc index 7986e92c511..729a1e8875d 100644 --- a/gcc/config/m68k/m68k.cc +++ b/gcc/config/m68k/m68k.cc @@ -2352,7 +2352,8 @@ m68k_legitimate_mem_p (rtx x, struct m68k_address *address) { return (MEM_P (x) && m68k_decompose_address (GET_MODE (x), XEXP (x, 0), - reload_in_progress || reload_completed, + (reload_in_progress || lra_in_progress + || reload_completed), address)); } @@ -3899,11 +3900,13 @@ emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) rtx tem; if (scratch_reg - && reload_in_progress && GET_CODE (operand0) == REG + && (reload_in_progress || lra_in_progress) + && GET_CODE (operand0) == REG && REGNO (operand0) >= FIRST_PSEUDO_REGISTER) operand0 = reg_equiv_mem (REGNO (operand0)); else if (scratch_reg - && reload_in_progress && GET_CODE (operand0) == SUBREG + && (reload_in_progress || lra_in_progress) + && GET_CODE (operand0) == SUBREG && GET_CODE (SUBREG_REG (operand0)) == REG && REGNO (SUBREG_REG (operand0)) >= FIRST_PSEUDO_REGISTER) { @@ -3916,11 +3919,13 @@ emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) } if (scratch_reg - && reload_in_progress && GET_CODE (operand1) == REG + && (reload_in_progress || lra_in_progress) + && GET_CODE (operand1) == REG && REGNO (operand1) >= FIRST_PSEUDO_REGISTER) operand1 = reg_equiv_mem (REGNO (operand1)); else if (scratch_reg - && reload_in_progress && GET_CODE (operand1) == SUBREG + && (reload_in_progress || lra_in_progress) + && GET_CODE (operand1) == SUBREG && GET_CODE (SUBREG_REG (operand1)) == REG && REGNO (SUBREG_REG (operand1)) >= FIRST_PSEUDO_REGISTER) { @@ -3932,11 +3937,13 @@ emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) operand1 = alter_subreg (&temp, true); } - if (scratch_reg && reload_in_progress && GET_CODE (operand0) == MEM + if (scratch_reg && (reload_in_progress || lra_in_progress) + && GET_CODE (operand0) == MEM && ((tem = find_replacement (&XEXP (operand0, 0))) != XEXP (operand0, 0))) operand0 = gen_rtx_MEM (GET_MODE (operand0), tem); - if (scratch_reg && reload_in_progress && GET_CODE (operand1) == MEM + if (scratch_reg && (reload_in_progress || lra_in_progress) + && GET_CODE (operand1) == MEM && ((tem = find_replacement (&XEXP (operand1, 0))) != XEXP (operand1, 0))) operand1 = gen_rtx_MEM (GET_MODE (operand1), tem); diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index e5c25288844..1c9a6bf1748 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -957,11 +957,12 @@ (define_expand "movsi" /* The source is an address which requires PIC relocation. Call legitimize_pic_address with the source, mode, and a relocation register (a new pseudo, or the final destination if reload_in_progress - is set). Then fall through normally */ - rtx temp = reload_in_progress ? operands[0] : gen_reg_rtx (Pmode); + or lra_in_progress is set). Then fall through normally */ + rtx temp = ((reload_in_progress || lra_in_progress) + ? operands[0] : gen_reg_rtx (Pmode)); operands[1] = legitimize_pic_address (operands[1], SImode, temp); } - else if (flag_pic && TARGET_PCREL && ! reload_in_progress) + else if (flag_pic && TARGET_PCREL && ! (reload_in_progress || lra_in_progress)) { /* Don't allow writes to memory except via a register; the m68k doesn't consider PC-relative addresses to be writable. */ @@ -1452,7 +1453,7 @@ (define_expand "movxf" "" { /* We can't rewrite operands during reload. */ - if (! reload_in_progress) + if (! (reload_in_progress || lra_in_progress)) { if (CONSTANT_P (operands[1])) { diff --git a/gcc/config/m68k/predicates.md b/gcc/config/m68k/predicates.md index 46fc3795a17..787e544a43f 100644 --- a/gcc/config/m68k/predicates.md +++ b/gcc/config/m68k/predicates.md @@ -237,6 +237,7 @@ (define_predicate "fp_src_operand" || (TARGET_68881 && (!standard_68881_constant_p (op) || reload_in_progress + || lra_in_progress || reload_completed))); })