From patchwork Wed Nov 5 11:52:24 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 406954 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 983A114008C for ; Wed, 5 Nov 2014 22:52:36 +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:subject:date:message-id:mime-version:content-type; q=dns; s= default; b=BaNby+n6BvCNQLpcNkYxqaF5rx7fjv5mCHY9aAu+UDy49w7ipVdiQ OF5Bmq84aXLkbKHKX0N5zztrtVZgPCLaypfA3Jr0ayrcdVA2NREEdpPOQeP6ACq2 TnLDllGUlUyh5p0ZCy9zzrWvOlS7LWhhQSEXCHgxbfvnHW+sLW5ldM= 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:date:message-id:mime-version:content-type; s= default; bh=DAjSRTyVLSTGe9rksQUWjn+OBiY=; b=JGjcPCK3q/IMn/UzoP+i AItHv2EdkhtTDc48PfU3ZtBI1Fu24F3Brx/qOXl4jlodmqzaFvdFxN6GsXxDX8Rl lKtnOdTtkfyU2j1gFZR4yW9cayQWVNYJTrdd8kPqB6oLuFARWX7NJmNgxY+TMvPs yFB94RSXQt1QlsTD5A826JQ= Received: (qmail 5001 invoked by alias); 5 Nov 2014 11:52: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 4992 invoked by uid 89); 5 Nov 2014 11:52:29 -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, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wg0-f53.google.com Received: from mail-wg0-f53.google.com (HELO mail-wg0-f53.google.com) (74.125.82.53) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 05 Nov 2014 11:52:28 +0000 Received: by mail-wg0-f53.google.com with SMTP id b13so685641wgh.26 for ; Wed, 05 Nov 2014 03:52:25 -0800 (PST) X-Received: by 10.181.8.98 with SMTP id dj2mr5165918wid.70.1415188345562; Wed, 05 Nov 2014 03:52:25 -0800 (PST) Received: from localhost ([2.25.234.66]) by mx.google.com with ESMTPSA id cg15sm1837311wjb.34.2014.11.05.03.52.25 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Nov 2014 03:52:25 -0800 (PST) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, rdsandiford@googlemail.com Subject: [ARM] RFA: Use new rtl iterators in arm_cannot_copy_insn Date: Wed, 05 Nov 2014 11:52:24 +0000 Message-ID: <87tx2dkgp3.fsf@googlemail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Tested in the same way as the aarch-common.c patch. OK to install? Thanks, Richard gcc/ * config/arm/arm.c (arm_note_pic_base): Delete. (arm_cannot_copy_insn_p): Use FOR_EACH_SUBRTX. Index: gcc/config/arm/arm.c =================================================================== --- gcc/config/arm/arm.c 2014-11-05 11:48:55.030053470 +0000 +++ gcc/config/arm/arm.c 2014-11-05 11:48:57.406073646 +0000 @@ -13157,16 +13157,6 @@ tls_mentioned_p (rtx x) /* Must not copy any rtx that uses a pc-relative address. */ -static int -arm_note_pic_base (rtx *x, void *date ATTRIBUTE_UNUSED) -{ - if (GET_CODE (*x) == UNSPEC - && (XINT (*x, 1) == UNSPEC_PIC_BASE - || XINT (*x, 1) == UNSPEC_PIC_UNIFIED)) - return 1; - return 0; -} - static bool arm_cannot_copy_insn_p (rtx_insn *insn) { @@ -13175,7 +13165,16 @@ arm_cannot_copy_insn_p (rtx_insn *insn) if (recog_memoized (insn) == CODE_FOR_tlscall) return true; - return for_each_rtx (&PATTERN (insn), arm_note_pic_base, NULL); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, PATTERN (insn), ALL) + { + const_rtx x = *iter; + if (GET_CODE (x) == UNSPEC + && (XINT (x, 1) == UNSPEC_PIC_BASE + || XINT (x, 1) == UNSPEC_PIC_UNIFIED)) + return true; + } + return false; } enum rtx_code