From patchwork Wed Mar 13 17:07:54 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bill Schmidt X-Patchwork-Id: 227309 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]) by ozlabs.org (Postfix) with SMTP id A0B3F2C0091 for ; Thu, 14 Mar 2013 04:08:32 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1363799313; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:Received:Received:Message-ID:Subject:From:To: Cc:Date:Content-Type:Content-Transfer-Encoding:Mime-Version: Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:Sender:Delivered-To; bh=3w+Fg4zd5iDFdArp7SXs 3HQMe1E=; b=c7WjWWI8jp1lXDOUeg48wfFpMEUxtYJffe5O3OIl3D3hcdcTi405 O6lE6yWjpfw+Nui7ckzzYccxpsz7qPN7XcWbrwlhW6/UH4NIRTSLAJG5CdJdIKh5 pP/9e7sxVAd69LwZQP/3lVOkmj+rx6OudpWljzw6u5ekGD9Xpqzp370= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Received:Received:Received:Message-ID:Subject:From:To:Cc:Date:Content-Type:Content-Transfer-Encoding:Mime-Version:X-TM-AS-MML:X-Content-Scanned:x-cbid:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=B42g9YFhbKYiFAshfUga/w89nS/hR8Dlh58cERD/Z8pU4OnkrBEwHkAH0GPV4X vE+iISV9IXn04+SuM9cEuryIUEoHYbk+bmezdWSA7Cvxxxk8mrRKCDIf5yl0X9mN MtTpwiyL5mRsKzy9cRiJdwL32fGs+HBosUvbgJYficypI=; Received: (qmail 10273 invoked by alias); 13 Mar 2013 17:08:25 -0000 Received: (qmail 10251 invoked by uid 22791); 13 Mar 2013 17:08:24 -0000 X-SWARE-Spam-Status: No, hits=-4.1 required=5.0 tests=AWL, BAYES_00, KHOP_SPAMHAUS_DROP, RCVD_VIA_APNIC, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from e28smtp02.in.ibm.com (HELO e28smtp02.in.ibm.com) (122.248.162.2) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 13 Mar 2013 17:08:19 +0000 Received: from /spool/local by e28smtp02.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 13 Mar 2013 22:34:17 +0530 Received: from d28dlp01.in.ibm.com (9.184.220.126) by e28smtp02.in.ibm.com (192.168.1.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 13 Mar 2013 22:34:15 +0530 Received: from d28relay02.in.ibm.com (d28relay02.in.ibm.com [9.184.220.59]) by d28dlp01.in.ibm.com (Postfix) with ESMTP id A0D9BE0050; Wed, 13 Mar 2013 22:39:33 +0530 (IST) Received: from d28av04.in.ibm.com (d28av04.in.ibm.com [9.184.220.66]) by d28relay02.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r2DH81EG22741184; Wed, 13 Mar 2013 22:38:10 +0530 Received: from d28av04.in.ibm.com (loopback [127.0.0.1]) by d28av04.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r2DH7wro028879; Thu, 14 Mar 2013 04:07:59 +1100 Received: from [9.65.100.128] (sig-9-65-100-128.mts.ibm.com [9.65.100.128]) by d28av04.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id r2DH7qdu028349; Thu, 14 Mar 2013 04:07:54 +1100 Message-ID: <1363194474.4027.12.camel@gnopaine> Subject: [PATCH] Fix PR56605 From: Bill Schmidt To: gcc-patches@gcc.gnu.org Cc: bergner@vnet.ibm.com, steven@gcc.gnu.org Date: Wed, 13 Mar 2013 12:07:54 -0500 Mime-Version: 1.0 X-TM-AS-MML: No X-Content-Scanned: Fidelis XPS MAILER x-cbid: 13031317-5816-0000-0000-00000711B4F7 X-IsSubscribed: yes 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 This patch (suggested by Steven B) removes some redundant loop assertions that are currently being missed, resulting in redundant branches appearing prior to many loops on powerpc64. Bootstrapped and tested with no new regressions on powerpc64-unknown-linux-gnu. Ok for trunk? Thanks, Bill gcc: 2013-03-13 Bill Schmidt Steven Bosscher PR rtl-optimization/56605 * loop-iv.c (implies_p): Handle equal RTXs and subregs. gcc/testsuite: 2013-03-13 Bill Schmidt wschmidt@linux.vnet.ibm.com> PR rtl-optimization/56605 * gcc.target/powerpc/pr56605.c: New. Index: gcc/testsuite/gcc.target/powerpc/pr56605.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr56605.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/pr56605.c (revision 0) @@ -0,0 +1,13 @@ +/* PR rtl-optimization/56605 */ +/* { dg-do compile { target { powerpc64-*-* && lp64 } } } */ +/* { dg-options "-O3 -mvsx -mcpu=power7 -fno-unroll-loops -fdump-rtl-loop2_doloop" } */ + +void foo (short* __restrict sb, int* __restrict ia) +{ + int i; + for (i = 0; i < 4000; i++) + ia[i] = (int) sb[i]; +} + +/* { dg-final { scan-rtl-dump-times "\\\(compare:CC \\\(subreg:SI \\\(reg:DI" 1 "loop2_doloop" } } */ +/* { dg-final { cleanup-rtl-dump "loop2_doloop" } } */ Index: gcc/loop-iv.c =================================================================== --- gcc/loop-iv.c (revision 196633) +++ gcc/loop-iv.c (working copy) @@ -1496,19 +1496,26 @@ implies_p (rtx a, rtx b) rtx op0, op1, opb0, opb1, r; enum machine_mode mode; + if (rtx_equal_p (a, b)) + return true; + if (GET_CODE (a) == EQ) { op0 = XEXP (a, 0); op1 = XEXP (a, 1); - if (REG_P (op0)) + if (REG_P (op0) + || (GET_CODE (op0) == SUBREG + && REG_P (SUBREG_REG (op0)))) { r = simplify_replace_rtx (b, op0, op1); if (r == const_true_rtx) return true; } - if (REG_P (op1)) + if (REG_P (op1) + || (GET_CODE (op1) == SUBREG + && REG_P (SUBREG_REG (op1)))) { r = simplify_replace_rtx (b, op1, op0); if (r == const_true_rtx)