From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2562 invoked by alias); 16 Jul 2010 07:05:00 -0000 Received: (qmail 2438 invoked by uid 22791); 16 Jul 2010 07:04:58 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,TW_TM,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-gy0-f175.google.com (HELO mail-gy0-f175.google.com) (209.85.160.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 16 Jul 2010 07:04:53 +0000 Received: by mail-gy0-f175.google.com with SMTP id 6so1239186gya.20 for ; Fri, 16 Jul 2010 00:04:52 -0700 (PDT) Received: by 10.101.154.30 with SMTP id g30mr787663ano.256.1279263892348; Fri, 16 Jul 2010 00:04:52 -0700 (PDT) Received: from napoca (cpe-70-120-196-107.austin.res.rr.com [70.120.196.107]) by mx.google.com with ESMTPS id q38sm21478965anh.31.2010.07.16.00.04.50 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 16 Jul 2010 00:04:51 -0700 (PDT) Received: by napoca (sSMTP sendmail emulation); Fri, 16 Jul 2010 02:04:49 -0500 From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: gcc-graphite@googlegroups.com, Sebastian Pop Subject: [PATCH 11/12] Do not rewrite out of SSA scalar phi nodes that can be scev_analyzable_p. Date: Fri, 16 Jul 2010 07:05:00 -0000 Message-Id: <1279263843-9149-12-git-send-email-sebpop@gmail.com> In-Reply-To: <1279263843-9149-1-git-send-email-sebpop@gmail.com> References: <1279263843-9149-1-git-send-email-sebpop@gmail.com> X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2010-07/txt/msg01322.txt.bz2 2010-07-15 Sebastian Pop * graphite-sese-to-poly.c (reduction_phi_p): Do not rewrite out of SSA scalar phi nodes that can be scev_analyzable_p. * gfortran.dg/graphite/id-20.f: Adjust testcase. --- gcc/ChangeLog.graphite | 7 +++++++ gcc/graphite-sese-to-poly.c | 20 ++++---------------- gcc/testsuite/gfortran.dg/graphite/id-20.f | 12 +++++++++--- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 8230d31..6600df7 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,5 +1,12 @@ 2010-07-15 Sebastian Pop + * graphite-sese-to-poly.c (reduction_phi_p): Do not rewrite out of + SSA scalar phi nodes that can be scev_analyzable_p. + + * gfortran.dg/graphite/id-20.f: Adjust testcase. + +2010-07-15 Sebastian Pop + * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Correctly handle SSA_NAME_IS_DEFAULT_DEF. diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 3d903d3..c08a4f2 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -165,8 +165,6 @@ static bool reduction_phi_p (sese region, gimple_stmt_iterator *psi) { loop_p loop; - tree scev; - affine_iv iv; gimple phi = gsi_stmt (*psi); tree res = gimple_phi_result (phi); @@ -189,11 +187,11 @@ reduction_phi_p (sese region, gimple_stmt_iterator *psi) return false; } - /* Main induction variables with constant strides in LOOP are not - reductions. */ - if (simple_iv (loop, loop, res, &iv, true)) + if (scev_analyzable_p (res, region)) { - if (integer_zerop (iv.step)) + tree scev = scalar_evolution_in_region (region, loop, res); + + if (evolution_function_is_invariant_p (scev, loop->num)) remove_invariant_phi (region, psi); else gsi_next (psi); @@ -201,16 +199,6 @@ reduction_phi_p (sese region, gimple_stmt_iterator *psi) return false; } - scev = scalar_evolution_in_region (region, loop, res); - if (chrec_contains_undetermined (scev)) - return true; - - if (evolution_function_is_invariant_p (scev, loop->num)) - { - remove_invariant_phi (region, psi); - return false; - } - /* All the other cases are considered reductions. */ return true; } diff --git a/gcc/testsuite/gfortran.dg/graphite/id-20.f b/gcc/testsuite/gfortran.dg/graphite/id-20.f index 110ae3f..795cb1b 100644 --- a/gcc/testsuite/gfortran.dg/graphite/id-20.f +++ b/gcc/testsuite/gfortran.dg/graphite/id-20.f @@ -1,4 +1,10 @@ - DO 32 MB=1,NVIRA - * PVIRA(MA,MB)*(EA(MA+NOA)+EA(MB+NOA))*PT5 - 32 CONTINUE +! { dg-options "-O3 -ffast-math" } + + DIMENSION FPQR(25,25,25) + INTEGER P,Q,R + DO 130 R=1,N4MAX,2 + IF(P.GT.1) THEN + FPQR(P,Q,R)= RM2*FPQR(P,Q,R-2)*REC(P+Q+R-2) + END IF + 130 RM2= RM2+TWO END -- 1.7.0.4