From patchwork Mon May 18 18:25:51 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 473545 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 37F25140D4D for ; Tue, 19 May 2015 04:26:05 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=UeTI2bgO; dkim-atps=neutral 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:content-transfer-encoding; q=dns; s=default; b=j48 h+yU1ZHhSSLNTpZvt0bXl9p1avtaKtdDSO7yMF3gSvBy44r7hyMQonkedRTi/3DT bv/RpoB483O77nzhBfWNLSm4vmCP11x0I0DH51b/R9lREFbfjT4u6ZWM9jWn1kiF x/ikF51xbouR0ult9n2xkIcWqse0nSVr0z94lt9c= 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:content-transfer-encoding; s=default; bh=1zMHaEqmw 3aFTE54+okvJPnP8Hc=; b=UeTI2bgOhxIFie8iB9nF5CdzL2/hH7X6i8vSXKEJj 8a92Rp+uNCjgd0QfpTFVJq2sPCv1WB6bnWlEyr1t+8mLDcYh3wCw7cUm18dw2bCr eRcjcLn1VpTG/EWNY23KvKT3rJa4b51XrBW7Shwj5r9rwgfuXJPWZ3zUp4ZIoL29 es= Received: (qmail 87443 invoked by alias); 18 May 2015 18:25:57 -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 87432 invoked by uid 89); 18 May 2015 18:25:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.1 required=5.0 tests=AWL, BAYES_50, KAM_ASCII_DIVIDERS, SPF_PASS autolearn=no version=3.3.2 X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (146.101.78.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 18 May 2015 18:25:55 +0000 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by uk-mta-19.uk.mimecast.lan; Mon, 18 May 2015 19:25:52 +0100 Received: from localhost ([10.1.2.79]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 18 May 2015 19:25:51 +0100 From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: [8/9] Remove END_HARD_REGNO References: <87oalhu59s.fsf@e105548-lin.cambridge.arm.com> Date: Mon, 18 May 2015 19:25:51 +0100 In-Reply-To: <87oalhu59s.fsf@e105548-lin.cambridge.arm.com> (Richard Sandiford's message of "Mon, 18 May 2015 19:09:19 +0100") Message-ID: <87oalhspxs.fsf@e105548-lin.cambridge.arm.com> User-Agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 X-MC-Unique: Ckd3yOuiTkCueqcTHuyU4w-1 This patch replaces calls to END_HARD_REGNO with calls to END_REGNO and moves END_REGNO to rtl.h (since it's now just a REG access). gcc/ * regs.h (END_HARD_REGNO): Delete. (END_REGNO): Move to... * rtl.h: ...here. * bt-load.c (note_btr_set): Use END_REGNO instead of END_HARD_REGNO. * caller-save.c (mark_set_regs): Likewise. * combine.c (move_deaths, distribute_notes): Likewise. * cse.c (invalidate, invalidate_for_call): Likewise. * df-scan.c (df_ref_record): Likewise. * postreload-gcse.c (reg_changed_after_insn_p): Likewise. (record_last_reg_set_info): Likewise. * reg-stack.c (convert_regs_exit): Likewise. * reload.c (reg_overlap_mentioned_for_reload_p): Likewise. * resource.c (update_live_status): Likewise. * rtlanal.c (find_reg_fusage, find_regno_fusage): Likewise. Index: gcc/regs.h =================================================================== --- gcc/regs.h 2015-05-18 08:36:41.951019042 +0100 +++ gcc/regs.h 2015-05-18 08:36:41.947019063 +0100 @@ -286,14 +286,6 @@ end_hard_regno (machine_mode mode, unsig return regno + hard_regno_nregs[regno][(int) mode]; } -/* Likewise for hard register X. */ - -#define END_HARD_REGNO(X) END_REGNO (X) - -/* Likewise for hard or pseudo register X. */ - -#define END_REGNO(X) (REGNO (X) + REG_NREGS (X)) - /* Add to REGS all the registers required to store a value of mode MODE in register REGNO. */ Index: gcc/rtl.h =================================================================== --- gcc/rtl.h 2015-05-18 08:36:41.951019042 +0100 +++ gcc/rtl.h 2015-05-18 08:37:14.494621384 +0100 @@ -1733,6 +1733,13 @@ rhs_regno (const_rtx x) return REG_CHECK (x)->regno; } +/* Return the final register in REG X plus one. */ +static inline unsigned int +END_REGNO (const_rtx x) +{ + return REGNO (x) + REG_NREGS (x); +} + /* Change the REGNO and REG_NREGS of REG X to the specified values, bypassing the df machinery. */ static inline void Index: gcc/bt-load.c =================================================================== --- gcc/bt-load.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/bt-load.c 2015-05-18 08:36:41.943019110 +0100 @@ -443,7 +443,7 @@ note_btr_set (rtx dest, const_rtx set AT if (!REG_P (dest)) return; regno = REGNO (dest); - end_regno = END_HARD_REGNO (dest); + end_regno = END_REGNO (dest); for (; regno < end_regno; regno++) if (TEST_HARD_REG_BIT (all_btrs, regno)) { Index: gcc/caller-save.c =================================================================== --- gcc/caller-save.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/caller-save.c 2015-05-18 08:36:41.947019063 +0100 @@ -992,7 +992,7 @@ mark_set_regs (rtx reg, const_rtx setter && REGNO (reg) < FIRST_PSEUDO_REGISTER) { regno = REGNO (reg); - endregno = END_HARD_REGNO (reg); + endregno = END_REGNO (reg); } else return; Index: gcc/combine.c =================================================================== --- gcc/combine.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/combine.c 2015-05-18 08:36:41.947019063 +0100 @@ -13316,8 +13316,8 @@ move_deaths (rtx x, rtx maybe_kill_insn, > GET_MODE_SIZE (GET_MODE (x)))) { unsigned int deadregno = REGNO (XEXP (note, 0)); - unsigned int deadend = END_HARD_REGNO (XEXP (note, 0)); - unsigned int ourend = END_HARD_REGNO (x); + unsigned int deadend = END_REGNO (XEXP (note, 0)); + unsigned int ourend = END_REGNO (x); unsigned int i; for (i = deadregno; i < deadend; i++) @@ -13337,7 +13337,7 @@ move_deaths (rtx x, rtx maybe_kill_insn, && regno < FIRST_PSEUDO_REGISTER && REG_NREGS (x) > 1) { - unsigned int ourend = END_HARD_REGNO (x); + unsigned int ourend = END_REGNO (x); unsigned int i, offset; rtx oldnotes = 0; @@ -13932,7 +13932,7 @@ distribute_notes (rtx notes, rtx_insn *f if (place && REG_NREGS (XEXP (note, 0)) > 1) { - unsigned int endregno = END_HARD_REGNO (XEXP (note, 0)); + unsigned int endregno = END_REGNO (XEXP (note, 0)); bool all_used = true; unsigned int i; Index: gcc/cse.c =================================================================== --- gcc/cse.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/cse.c 2015-05-18 08:36:41.947019063 +0100 @@ -1894,7 +1894,7 @@ invalidate (rtx x, machine_mode full_mod { HOST_WIDE_INT in_table = TEST_HARD_REG_BIT (hard_regs_in_table, regno); - unsigned int endregno = END_HARD_REGNO (x); + unsigned int endregno = END_REGNO (x); unsigned int tregno, tendregno, rn; struct table_elt *p, *next; @@ -1920,7 +1920,7 @@ invalidate (rtx x, machine_mode full_mod continue; tregno = REGNO (p->exp); - tendregno = END_HARD_REGNO (p->exp); + tendregno = END_REGNO (p->exp); if (tendregno > regno && tregno < endregno) remove_from_table (p, hash); } @@ -2139,7 +2139,7 @@ invalidate_for_call (void) continue; regno = REGNO (p->exp); - endregno = END_HARD_REGNO (p->exp); + endregno = END_REGNO (p->exp); for (i = regno; i < endregno; i++) if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i)) Index: gcc/df-scan.c =================================================================== --- gcc/df-scan.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/df-scan.c 2015-05-18 08:36:41.947019063 +0100 @@ -2624,7 +2624,7 @@ df_ref_record (enum df_ref_class cl, endregno = regno + subreg_nregs (reg); } else - endregno = END_HARD_REGNO (reg); + endregno = END_REGNO (reg); /* If this is a multiword hardreg, we create some extra datastructures that will enable us to easily build REG_DEAD Index: gcc/postreload-gcse.c =================================================================== --- gcc/postreload-gcse.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/postreload-gcse.c 2015-05-18 08:36:41.947019063 +0100 @@ -551,7 +551,7 @@ reg_changed_after_insn_p (rtx x, int cui unsigned int regno, end_regno; regno = REGNO (x); - end_regno = END_HARD_REGNO (x); + end_regno = END_REGNO (x); do if (reg_avail_info[regno] > cuid) return true; @@ -720,7 +720,7 @@ record_last_reg_set_info (rtx_insn *insn unsigned int regno, end_regno; regno = REGNO (reg); - end_regno = END_HARD_REGNO (reg); + end_regno = END_REGNO (reg); do reg_avail_info[regno] = INSN_CUID (insn); while (++regno < end_regno); Index: gcc/reg-stack.c =================================================================== --- gcc/reg-stack.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/reg-stack.c 2015-05-18 08:36:41.947019063 +0100 @@ -2689,7 +2689,7 @@ convert_regs_exit (void) if (retvalue) { value_reg_low = REGNO (retvalue); - value_reg_high = END_HARD_REGNO (retvalue) - 1; + value_reg_high = END_REGNO (retvalue) - 1; } output_stack = &BLOCK_INFO (EXIT_BLOCK_PTR_FOR_FN (cfun))->stack_in; Index: gcc/reload.c =================================================================== --- gcc/reload.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/reload.c 2015-05-18 08:36:41.951019042 +0100 @@ -6612,7 +6612,7 @@ reg_overlap_mentioned_for_reload_p (rtx return 0; } - endregno = END_HARD_REGNO (x); + endregno = END_REGNO (x); return refers_to_regno_for_reload_p (regno, endregno, in, (rtx*) 0); } Index: gcc/resource.c =================================================================== --- gcc/resource.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/resource.c 2015-05-18 08:36:41.951019042 +0100 @@ -115,7 +115,7 @@ update_live_status (rtx dest, const_rtx else { first_regno = REGNO (dest); - last_regno = END_HARD_REGNO (dest); + last_regno = END_REGNO (dest); } if (GET_CODE (x) == CLOBBER) Index: gcc/rtlanal.c =================================================================== --- gcc/rtlanal.c 2015-05-18 08:36:41.951019042 +0100 +++ gcc/rtlanal.c 2015-05-18 08:36:41.951019042 +0100 @@ -2018,7 +2018,7 @@ find_reg_fusage (const_rtx insn, enum rt if (regno < FIRST_PSEUDO_REGISTER) { - unsigned int end_regno = END_HARD_REGNO (datum); + unsigned int end_regno = END_REGNO (datum); unsigned int i; for (i = regno; i < end_regno; i++) @@ -2052,7 +2052,7 @@ find_regno_fusage (const_rtx insn, enum if (GET_CODE (op = XEXP (link, 0)) == code && REG_P (reg = XEXP (op, 0)) && REGNO (reg) <= regno - && END_HARD_REGNO (reg) > regno) + && END_REGNO (reg) > regno) return 1; }