From patchwork Tue Sep 10 16:33:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 1160460 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-508779-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="xxREO99B"; 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 46SVw10tVGz9s7T for ; Wed, 11 Sep 2019 02:33:36 +1000 (AEST) 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=D1iNy3J8VEhA55rSeRB5NnGVfri9J MiHbzj5aK76pm/VfHOYdljmWZhTSSq1cy/M8slkqZzW0vlJ0kRuwrVGKMR7zIFMf 75W944PKRdVLBsDr5naSgVTNY++IX7ZkuawYehV1fMoqeQXapTFkwZkpBNfeIs19 7ULctsJqEVf1Bs= 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=axv0taJT2LTgpBjc9ibnaZ1rZGg=; b=xxR EO99BxBJR335at3F9Xc9BWoNDIU0uTnRxj5YPJ/VCmqjJfE2AC2h9nQLGRUSmrLv e1F+CmwT3u+znM8ABb7wXqoEB61A0GEyuDY7W9PxYNqvuFSZ4+xTKbgXhQsCaJrJ Kwas8mMo5a/r26vGqKZwkzYtBS5WMqQGAWWFj+Fg= Received: (qmail 40411 invoked by alias); 10 Sep 2019 16:33:29 -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 40403 invoked by uid 89); 10 Sep 2019 16:33:29 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-8.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.110.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 10 Sep 2019 16:33:27 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B772E1000 for ; Tue, 10 Sep 2019 09:33:25 -0700 (PDT) Received: from localhost (e121540-lin.manchester.arm.com [10.32.99.62]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5F8233F71F for ; Tue, 10 Sep 2019 09:33:25 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: [7/9] Remove redundant fixed_regs tests References: Date: Tue, 10 Sep 2019 17:33:24 +0100 In-Reply-To: (Richard Sandiford's message of "Tue, 10 Sep 2019 17:26:13 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 X-IsSubscribed: yes This patch removes redundant fixed_regs tests in things like: !fixed_regs[i] && !call_used_or_fixed_reg_p (i) 2019-09-10 Richard Sandiford gcc/ * config/alpha/alpha.c (alpha_compute_frame_layout): Remove redundant fixed_regs test. * config/bpf/bpf.c (bpf_compute_frame_layout, bpf_expand_prologue) (bpf_expand_epilogue): Likewise. * config/c6x/c6x.c (c6x_save_reg): Likewise. * config/ft32/ft32.c (ft32_expand_prologue): Likewise. (ft32_expand_epilogue): Likewise. * config/i386/i386.c (ix86_save_reg): Likewise. * config/moxie/moxie.c (moxie_expand_prologue): Likewise. (moxie_expand_epilogue): Likewise. * config/tilegx/tilegx.c (need_to_save_reg): Likewise. * config/tilepro/tilepro.c (need_to_save_reg): Likewise. * config/xtensa/xtensa.c (xtensa_call_save_reg): Likewise. Index: gcc/config/alpha/alpha.c =================================================================== --- gcc/config/alpha/alpha.c 2019-09-10 17:22:54.018354355 +0100 +++ gcc/config/alpha/alpha.c 2019-09-10 17:23:00.786307258 +0100 @@ -7225,7 +7225,7 @@ alpha_compute_frame_layout (void) /* One for every register we have to save. */ for (unsigned i = 0; i < FIRST_PSEUDO_REGISTER; i++) - if (! fixed_regs[i] && ! call_used_or_fixed_reg_p (i) + if (! call_used_or_fixed_reg_p (i) && df_regs_ever_live_p (i) && i != REG_RA) sa_mask |= HOST_WIDE_INT_1U << i; Index: gcc/config/bpf/bpf.c =================================================================== --- gcc/config/bpf/bpf.c 2019-09-10 17:22:54.026354301 +0100 +++ gcc/config/bpf/bpf.c 2019-09-10 17:23:00.786307258 +0100 @@ -271,8 +271,7 @@ bpf_compute_frame_layout (void) the current function. There is no need to round up, since the registers are all 8 bytes wide. */ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - if ((!fixed_regs[regno] - && df_regs_ever_live_p (regno) + if ((df_regs_ever_live_p (regno) && !call_used_or_fixed_reg_p (regno)) || (cfun->calls_alloca && regno == STACK_POINTER_REGNUM)) @@ -312,8 +311,7 @@ bpf_expand_prologue (void) right after the local variables. */ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) { - if ((!fixed_regs[regno] - && df_regs_ever_live_p (regno) + if ((df_regs_ever_live_p (regno) && !call_used_or_fixed_reg_p (regno)) || (cfun->calls_alloca && regno == STACK_POINTER_REGNUM)) @@ -372,8 +370,7 @@ bpf_expand_epilogue (void) /* Restore callee-saved hard registes from the stack. */ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) { - if ((!fixed_regs[regno] - && df_regs_ever_live_p (regno) + if ((df_regs_ever_live_p (regno) && !call_used_or_fixed_reg_p (regno)) || (cfun->calls_alloca && regno == STACK_POINTER_REGNUM)) Index: gcc/config/c6x/c6x.c =================================================================== --- gcc/config/c6x/c6x.c 2019-09-10 17:22:54.030354272 +0100 +++ gcc/config/c6x/c6x.c 2019-09-10 17:23:00.786307258 +0100 @@ -2532,8 +2532,7 @@ must_reload_pic_reg_p (void) c6x_save_reg (unsigned int regno) { return ((df_regs_ever_live_p (regno) - && !call_used_or_fixed_reg_p (regno) - && !fixed_regs[regno]) + && !call_used_or_fixed_reg_p (regno)) || (regno == RETURN_ADDR_REGNO && (df_regs_ever_live_p (regno) || !crtl->is_leaf)) Index: gcc/config/ft32/ft32.c =================================================================== --- gcc/config/ft32/ft32.c 2019-09-10 17:22:54.042354189 +0100 +++ gcc/config/ft32/ft32.c 2019-09-10 17:23:00.786307258 +0100 @@ -475,7 +475,7 @@ ft32_expand_prologue (void) { for (regno = FIRST_PSEUDO_REGISTER; regno-- > 0;) { - if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno) + if (!call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno)) { rtx preg = gen_rtx_REG (Pmode, regno); @@ -488,7 +488,7 @@ ft32_expand_prologue (void) { for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) { - if (!fixed_regs[regno] && df_regs_ever_live_p (regno) + if (df_regs_ever_live_p (regno) && !call_used_or_fixed_reg_p (regno)) { insn = emit_insn (gen_movsi_push (gen_rtx_REG (Pmode, regno))); @@ -554,7 +554,7 @@ ft32_expand_epilogue (void) { for (regno = FIRST_PSEUDO_REGISTER; regno-- > 0;) { - if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno) + if (!call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno)) { rtx preg = gen_rtx_REG (Pmode, regno); Index: gcc/config/i386/i386.c =================================================================== --- gcc/config/i386/i386.c 2019-09-10 17:22:54.046354161 +0100 +++ gcc/config/i386/i386.c 2019-09-10 17:23:00.794307202 +0100 @@ -5666,7 +5666,6 @@ ix86_save_reg (unsigned int regno, bool return (df_regs_ever_live_p (regno) && !call_used_or_fixed_reg_p (regno) - && !fixed_regs[regno] && (regno != HARD_FRAME_POINTER_REGNUM || !frame_pointer_needed)); } Index: gcc/config/moxie/moxie.c =================================================================== --- gcc/config/moxie/moxie.c 2019-09-10 17:22:54.054354104 +0100 +++ gcc/config/moxie/moxie.c 2019-09-10 17:23:00.794307202 +0100 @@ -288,8 +288,7 @@ moxie_expand_prologue (void) /* Save callee-saved registers. */ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) { - if (!fixed_regs[regno] - && df_regs_ever_live_p (regno) + if (df_regs_ever_live_p (regno) && !call_used_or_fixed_reg_p (regno)) { insn = emit_insn (gen_movsi_push (gen_rtx_REG (Pmode, regno))); @@ -351,7 +350,7 @@ moxie_expand_epilogue (void) emit_insn (gen_addsi3 (reg, reg, hard_frame_pointer_rtx)); } for (regno = FIRST_PSEUDO_REGISTER; regno-- > 0; ) - if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno) + if (!call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno)) { rtx preg = gen_rtx_REG (Pmode, regno); Index: gcc/config/tilegx/tilegx.c =================================================================== --- gcc/config/tilegx/tilegx.c 2019-09-10 17:22:54.090353853 +0100 +++ gcc/config/tilegx/tilegx.c 2019-09-10 17:23:00.794307202 +0100 @@ -3660,7 +3660,7 @@ tilegx_builtin_decl (unsigned code, bool static bool need_to_save_reg (unsigned int regno) { - if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno) + if (!call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno)) return true; Index: gcc/config/tilepro/tilepro.c =================================================================== --- gcc/config/tilepro/tilepro.c 2019-09-10 17:22:54.090353853 +0100 +++ gcc/config/tilepro/tilepro.c 2019-09-10 17:23:00.794307202 +0100 @@ -3202,7 +3202,7 @@ tilepro_builtin_decl (unsigned code, boo static bool need_to_save_reg (unsigned int regno) { - if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno) + if (!call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno)) return true; Index: gcc/config/xtensa/xtensa.c =================================================================== --- gcc/config/xtensa/xtensa.c 2019-09-10 17:22:54.090353853 +0100 +++ gcc/config/xtensa/xtensa.c 2019-09-10 17:23:00.794307202 +0100 @@ -2686,8 +2686,7 @@ xtensa_call_save_reg(int regno) if (crtl->calls_eh_return && regno >= 2 && regno < 4) return true; - return !fixed_regs[regno] && !call_used_or_fixed_reg_p (regno) && - df_regs_ever_live_p (regno); + return !call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno); } /* Return the bytes needed to compute the frame pointer from the current