From patchwork Wed Aug 6 17:20:56 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Malcolm X-Patchwork-Id: 377116 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 3F7F71400AF for ; Thu, 7 Aug 2014 03:26:38 +1000 (EST) 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=A6/856FyvgR9QGbTrrcJCB351VjmW8Nrmz0hAdh6T4qZ/WsoWXj9O ftVLMrRpd4GFQTMc79zNJUZ4QR31nV/lXOG6nLLrL8MWDMXNN2pb55DusFffaz0N xaVrsXwQtFbUYvOSQ1jWmEendpFDU6o232kkufK8aEPKU4TPEP16AU= 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=/TB0YJVQ7HED8v0rjJjObRb1guc=; b=Tmv1rfDP29HKqWOpFTKH Y3YVOuc3iYywySktD7FPE5AuyK0OPEAGVlzh+eORRI0+v8HwJwlNlBKxMlmuPXaT 09b/FuLorbEtt+JATOlRV63Y5LGjCzPNIcFPV4QurcQYDd+33Aw8gcAHsPcuUeB5 dTGRiNg8mBsAbLJDAAXep9Y= Received: (qmail 348 invoked by alias); 6 Aug 2014 17:19:56 -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 32161 invoked by uid 89); 6 Aug 2014 17:19:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 06 Aug 2014 17:19:50 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s76HJlEh012484 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 6 Aug 2014 13:19:47 -0400 Received: from c64.redhat.com (vpn-239-139.phx2.redhat.com [10.3.239.139]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s76HJ2or030913; Wed, 6 Aug 2014 13:19:47 -0400 From: David Malcolm To: gcc-patches@gcc.gnu.org Cc: David Malcolm Subject: [PATCH 077/236] fwprop.c: Use rtx_insn Date: Wed, 6 Aug 2014 13:20:56 -0400 Message-Id: <1407345815-14551-78-git-send-email-dmalcolm@redhat.com> In-Reply-To: <1407345815-14551-1-git-send-email-dmalcolm@redhat.com> References: <1407345815-14551-1-git-send-email-dmalcolm@redhat.com> X-IsSubscribed: yes gcc/ * fwprop.c (single_def_use_dom_walker::before_dom_children): Strengthen local "insn" from rtx to rtx_insn *. (use_killed_between): Likewise for param "target_insn". (all_uses_available_at): Likewise for param "target_insn" and local "next". (update_df_init): Likewise for params "def_insn", "insn". (update_df): Likewise for param "insn". (try_fwprop_subst): Likewise for param "def_insn" and local "insn". (free_load_extend): Likewise for param "insn". (forward_propagate_subreg): Likewise for param "def_insn" and local "use_insn". (forward_propagate_asm): Likewise for param "def_insn" and local "use_insn". (forward_propagate_and_simplify): Likewise for param "def_insn" and local "use_insn". (forward_propagate_into): Likewise for locals "def_insn" and "use_insn". --- gcc/fwprop.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/gcc/fwprop.c b/gcc/fwprop.c index 0179bf1..9a1f085 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -220,7 +220,7 @@ single_def_use_dom_walker::before_dom_children (basic_block bb) int bb_index = bb->index; struct df_md_bb_info *md_bb_info = df_md_get_bb_info (bb_index); struct df_lr_bb_info *lr_bb_info = df_lr_get_bb_info (bb_index); - rtx insn; + rtx_insn *insn; bitmap_copy (local_md, &md_bb_info->in); bitmap_copy (local_lr, &lr_bb_info->in); @@ -724,7 +724,7 @@ local_ref_killed_between_p (df_ref ref, rtx from, rtx to) we check if the definition is killed after DEF_INSN or before TARGET_INSN insn, in their respective basic blocks. */ static bool -use_killed_between (df_ref use, rtx def_insn, rtx target_insn) +use_killed_between (df_ref use, rtx_insn *def_insn, rtx_insn *target_insn) { basic_block def_bb = BLOCK_FOR_INSN (def_insn); basic_block target_bb = BLOCK_FOR_INSN (target_insn); @@ -788,12 +788,12 @@ use_killed_between (df_ref use, rtx def_insn, rtx target_insn) would require full computation of available expressions; we check only restricted conditions, see use_killed_between. */ static bool -all_uses_available_at (rtx def_insn, rtx target_insn) +all_uses_available_at (rtx_insn *def_insn, rtx_insn *target_insn) { df_ref *use_rec; struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn); rtx def_set = single_set (def_insn); - rtx next; + rtx_insn *next; gcc_assert (def_set); @@ -883,7 +883,7 @@ register_active_defs (df_ref *use_rec) I'm not doing this yet, though. */ static void -update_df_init (rtx def_insn, rtx insn) +update_df_init (rtx_insn *def_insn, rtx_insn *insn) { #ifdef ENABLE_CHECKING sparseset_clear (active_defs_check); @@ -921,7 +921,7 @@ update_uses (df_ref *use_rec) uses if NOTES_ONLY is true. */ static void -update_df (rtx insn, rtx note) +update_df (rtx_insn *insn, rtx note) { struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn); @@ -948,9 +948,10 @@ update_df (rtx insn, rtx note) performed. */ static bool -try_fwprop_subst (df_ref use, rtx *loc, rtx new_rtx, rtx def_insn, bool set_reg_equal) +try_fwprop_subst (df_ref use, rtx *loc, rtx new_rtx, rtx_insn *def_insn, + bool set_reg_equal) { - rtx insn = DF_REF_INSN (use); + rtx_insn *insn = DF_REF_INSN (use); rtx set = single_set (insn); rtx note = NULL_RTX; bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn)); @@ -1031,7 +1032,7 @@ try_fwprop_subst (df_ref use, rtx *loc, rtx new_rtx, rtx def_insn, bool set_reg_ load from memory. */ static bool -free_load_extend (rtx src, rtx insn) +free_load_extend (rtx src, rtx_insn *insn) { rtx reg; df_ref *use_vec; @@ -1077,10 +1078,11 @@ free_load_extend (rtx src, rtx insn) /* If USE is a subreg, see if it can be replaced by a pseudo. */ static bool -forward_propagate_subreg (df_ref use, rtx def_insn, rtx def_set) +forward_propagate_subreg (df_ref use, rtx_insn *def_insn, rtx def_set) { rtx use_reg = DF_REF_REG (use); - rtx use_insn, src; + rtx_insn *use_insn; + rtx src; /* Only consider subregs... */ enum machine_mode use_mode = GET_MODE (use_reg); @@ -1147,9 +1149,10 @@ forward_propagate_subreg (df_ref use, rtx def_insn, rtx def_set) /* Try to replace USE with SRC (defined in DEF_INSN) in __asm. */ static bool -forward_propagate_asm (df_ref use, rtx def_insn, rtx def_set, rtx reg) +forward_propagate_asm (df_ref use, rtx_insn *def_insn, rtx def_set, rtx reg) { - rtx use_insn = DF_REF_INSN (use), src, use_pat, asm_operands, new_rtx, *loc; + rtx_insn *use_insn = DF_REF_INSN (use); + rtx src, use_pat, asm_operands, new_rtx, *loc; int speed_p, i; df_ref *use_vec; @@ -1224,9 +1227,9 @@ forward_propagate_asm (df_ref use, rtx def_insn, rtx def_set, rtx reg) result. */ static bool -forward_propagate_and_simplify (df_ref use, rtx def_insn, rtx def_set) +forward_propagate_and_simplify (df_ref use, rtx_insn *def_insn, rtx def_set) { - rtx use_insn = DF_REF_INSN (use); + rtx_insn *use_insn = DF_REF_INSN (use); rtx use_set = single_set (use_insn); rtx src, reg, new_rtx, *loc; bool set_reg_equal; @@ -1349,7 +1352,8 @@ static bool forward_propagate_into (df_ref use) { df_ref def; - rtx def_insn, def_set, use_insn; + rtx_insn *def_insn, *use_insn; + rtx def_set; rtx parent; if (DF_REF_FLAGS (use) & DF_REF_READ_WRITE)