From patchwork Mon Sep 8 21:29:23 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Malcolm X-Patchwork-Id: 387053 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 84289140187 for ; Tue, 9 Sep 2014 07:25:03 +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=nTQj24YnCJSOh80rFSJYFG5i+ndBfT8ki8Xj6iEYn44cKa8V4L5Rt dyO1lAEoapqibiBC9QBr4TB1bLYM5qzd9lMrdUg3DNX6clMlPjo94/yDXVyy2POF uGZdK93CEWu37x/Hbv9zeMss4DwNnrqbxrUnJWqeiJ1VhX7qRuBMuw= 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=S88UcCOy6VQo3HKcO1KShbqQwuw=; b=pzsnKtap2moFgvP5qUvN gEkw/WW0F8V9k7fp2KstUnl0MyU9NLwe5u1bzsXF2rfjSi/mV0u2LKS4c37ll1Ey 7QgnwEXHCWjkLhNE/XtlFjxal6QwJt3wYbBO9OmrZx6O/guEXUtYduM3J7zLgCFR AE3vrkPpqkwHbC7zuNT5mNE= Received: (qmail 26793 invoked by alias); 8 Sep 2014 21:24:19 -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 26622 invoked by uid 89); 8 Sep 2014 21:24:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.4 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; Mon, 08 Sep 2014 21:24:13 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s88LOC1N013019 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Mon, 8 Sep 2014 17:24:12 -0400 Received: from c64.redhat.com (vpn-227-175.phx2.redhat.com [10.3.227.175]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s88LO94s018436; Mon, 8 Sep 2014 17:24:11 -0400 From: David Malcolm To: gcc-patches@gcc.gnu.org, dj@redhat.com Cc: David Malcolm Subject: [PATCH 2/5] Handcode gen_rtx_INSN Date: Mon, 8 Sep 2014 17:29:23 -0400 Message-Id: <1410211766-39396-3-git-send-email-dmalcolm@redhat.com> In-Reply-To: <1410211766-39396-1-git-send-email-dmalcolm@redhat.com> References: <1410211766-39396-1-git-send-email-dmalcolm@redhat.com> X-IsSubscribed: yes gcc/ChangeLog: * combine.c (try_combine): Eliminate checked cast on result of gen_rtx_INSN. * emit-rtl.c (gen_rtx_INSN): New function, improving over the prior autogenerated one by strengthening the return type and params 2 and 3 from rtx to rtx_insn *, and by naming the params. * gengenrtl.c (special_rtx): Add INSN to those that are special-cased. * rtl.h (gen_rtx_INSN): New prototype. --- gcc/combine.c | 7 +++---- gcc/emit-rtl.c | 11 +++++++++++ gcc/gengenrtl.c | 1 + gcc/rtl.h | 4 ++++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gcc/combine.c b/gcc/combine.c index 60524b5..0ec7f85 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2772,10 +2772,9 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, never appear in the insn stream so giving it the same INSN_UID as I2 will not cause a problem. */ - i1 = as_a ( - gen_rtx_INSN (VOIDmode, NULL_RTX, i2, BLOCK_FOR_INSN (i2), - XVECEXP (PATTERN (i2), 0, 1), INSN_LOCATION (i2), - -1, NULL_RTX)); + i1 = gen_rtx_INSN (VOIDmode, NULL, i2, BLOCK_FOR_INSN (i2), + XVECEXP (PATTERN (i2), 0, 1), INSN_LOCATION (i2), + -1, NULL_RTX); INSN_UID (i1) = INSN_UID (i2); SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 0)); diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index e3df826..0acdd08 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -424,6 +424,17 @@ gen_rtx_INSN_LIST (enum machine_mode mode, rtx insn, rtx insn_list) insn_list)); } +rtx_insn * +gen_rtx_INSN (enum machine_mode mode, rtx_insn *prev_insn, rtx_insn *next_insn, + basic_block bb, rtx pattern, int location, int code, + rtx reg_notes) +{ + return as_a (gen_rtx_fmt_uuBeiie (INSN, mode, + prev_insn, next_insn, + bb, pattern, location, code, + reg_notes)); +} + rtx gen_rtx_CONST_INT (enum machine_mode mode ATTRIBUTE_UNUSED, HOST_WIDE_INT arg) { diff --git a/gcc/gengenrtl.c b/gcc/gengenrtl.c index 885dd20..d3eca98 100644 --- a/gcc/gengenrtl.c +++ b/gcc/gengenrtl.c @@ -125,6 +125,7 @@ special_rtx (int idx) { return (strcmp (defs[idx].enumname, "EXPR_LIST") == 0 || strcmp (defs[idx].enumname, "INSN_LIST") == 0 + || strcmp (defs[idx].enumname, "INSN") == 0 || strcmp (defs[idx].enumname, "CONST_INT") == 0 || strcmp (defs[idx].enumname, "REG") == 0 || strcmp (defs[idx].enumname, "SUBREG") == 0 diff --git a/gcc/rtl.h b/gcc/rtl.h index ddf89b0..fae3b5d 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -3089,6 +3089,10 @@ get_mem_attrs (const_rtx x) extern rtx_expr_list *gen_rtx_EXPR_LIST (enum machine_mode, rtx, rtx); extern rtx_insn_list *gen_rtx_INSN_LIST (enum machine_mode, rtx, rtx); +extern rtx_insn * +gen_rtx_INSN (enum machine_mode mode, rtx_insn *prev_insn, rtx_insn *next_insn, + basic_block bb, rtx pattern, int location, int code, + rtx reg_notes); extern rtx gen_rtx_CONST_INT (enum machine_mode, HOST_WIDE_INT); extern rtx gen_rtx_CONST_VECTOR (enum machine_mode, rtvec); extern rtx gen_raw_REG (enum machine_mode, int);