From patchwork Sat Oct 25 09:58:25 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 403018 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 BCF0E140077 for ; Sat, 25 Oct 2014 20:58:37 +1100 (AEDT) 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:mime-version:content-type; q=dns; s=default; b=OtyHAlUN5bC4EhOPfoYMDotWloqUe1TYk/QFC+7KUeNzaRO50M EeWxOO0n7uMr5xBvskYoEU7H3jhoeV9OEj+5rpkp4B11fJkcyQgB3Ow+bj4jGARR wNOr3OZGXJ1ymWk6b2qy6dG2Og/bqpiieP/EIOb+XNbErYkrf6laM+SPA= 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:mime-version:content-type; s= default; bh=yzL+/6JJPLUHuDdzyj0Ild/ehBA=; b=augiasSpeDySpn4eNXHi ihBll8greiyxgfZbI5Oc2Hax7wU/vjbFxjaFU8WL0lxbO2eUSIQcRfnGH9G3JwvS 1TXhhp6g5JRYaNlIV2tHWykykW57eRsX8l+vcG67yzJ/gGtCdYxjM8dkvQ4Jpz6P gnivNxSzjcmbw2jQ8k2i1LU= Received: (qmail 11576 invoked by alias); 25 Oct 2014 09:58:30 -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 11564 invoked by uid 89); 25 Oct 2014 09:58:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wg0-f46.google.com Received: from mail-wg0-f46.google.com (HELO mail-wg0-f46.google.com) (74.125.82.46) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sat, 25 Oct 2014 09:58:29 +0000 Received: by mail-wg0-f46.google.com with SMTP id l18so2613479wgh.5 for ; Sat, 25 Oct 2014 02:58:26 -0700 (PDT) X-Received: by 10.194.158.4 with SMTP id wq4mr10859585wjb.58.1414231106394; Sat, 25 Oct 2014 02:58:26 -0700 (PDT) Received: from localhost ([95.144.14.167]) by mx.google.com with ESMTPSA id p3sm8287817wjf.49.2014.10.25.02.58.25 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Oct 2014 02:58:26 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, joern.rennecke@embecosm.com, rdsandiford@googlemail.com Cc: joern.rennecke@embecosm.com Subject: [ARC] RFA: Use new rtl iterators in arc_write_ext_corereg Date: Sat, 25 Oct 2014 10:58:25 +0100 Message-ID: <8738acwjwe.fsf@googlemail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 This is part of a series to remove uses of for_each_rtx from the ports. Tested by making sure there were no code changes for gcc.dg, gcc.c-torture and g++.dg for arc-elf. OK to install? Thanks, Richard gcc/ * config/arc/arc.c (write_ext_corereg_1): Delete. (arc_write_ext_corereg): Use FOR_EACH_SUBRTX. Index: gcc/config/arc/arc.c =================================================================== --- gcc/config/arc/arc.c 2014-10-25 09:51:26.279890977 +0100 +++ gcc/config/arc/arc.c 2014-10-25 09:51:26.656894338 +0100 @@ -8423,34 +8423,30 @@ arc_predicate_delay_insns (void) be hoisted out into a delay slot, a basic block can also be emptied this way, and branch and/or fall through targets be redirected. Hence we don't want such writes in a delay slot. */ -/* Called by arc_write_ext_corereg via for_each_rtx. */ - -static int -write_ext_corereg_1 (rtx *xp, void *data ATTRIBUTE_UNUSED) -{ - rtx x = *xp; - rtx dest; - - switch (GET_CODE (x)) - { - case SET: case POST_INC: case POST_DEC: case PRE_INC: case PRE_DEC: - break; - default: - /* This is also fine for PRE/POST_MODIFY, because they contain a SET. */ - return 0; - } - dest = XEXP (x, 0); - if (REG_P (dest) && REGNO (dest) >= 32 && REGNO (dest) < 61) - return 1; - return 0; -} /* Return nonzreo iff INSN writes to an extension core register. */ int arc_write_ext_corereg (rtx insn) { - return for_each_rtx (&PATTERN (insn), write_ext_corereg_1, 0); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, PATTERN (insn), NONCONST) + { + const_rtx x = *iter; + switch (GET_CODE (x)) + { + case SET: case POST_INC: case POST_DEC: case PRE_INC: case PRE_DEC: + break; + default: + /* This is also fine for PRE/POST_MODIFY, because they + contain a SET. */ + continue; + } + const_rtx dest = XEXP (x, 0); + if (REG_P (dest) && REGNO (dest) >= 32 && REGNO (dest) < 61) + return 1; + } + return 0; } /* This is like the hook, but returns NULL when it can't / won't generate