From patchwork Fri Jan 21 19:27:39 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 79902 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 6CEC6B6F10 for ; Sat, 22 Jan 2011 06:31:32 +1100 (EST) Received: (qmail 17831 invoked by alias); 21 Jan 2011 19:30:34 -0000 Received: (qmail 17665 invoked by uid 22791); 21 Jan 2011 19:30:31 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, TW_SV, T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-yi0-f47.google.com (HELO mail-yi0-f47.google.com) (209.85.218.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 21 Jan 2011 19:30:16 +0000 Received: by yie16 with SMTP id 16so674589yie.20 for ; Fri, 21 Jan 2011 11:30:14 -0800 (PST) Received: by 10.150.215.6 with SMTP id n6mr1157626ybg.175.1295638214810; Fri, 21 Jan 2011 11:30:14 -0800 (PST) Received: from napoca ([76.233.39.4]) by mx.google.com with ESMTPS id p2sm6329660ybh.15.2011.01.21.11.30.12 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 21 Jan 2011 11:30:14 -0800 (PST) Received: by napoca (sSMTP sendmail emulation); Fri, 21 Jan 2011 13:30:11 -0600 From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: rguenther@suse.de Subject: [PATCH 20/28] Allow several reductions in a reduction PBB. Date: Fri, 21 Jan 2011 13:27:39 -0600 Message-Id: <1295638067-13460-21-git-send-email-sebpop@gmail.com> In-Reply-To: References: 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 From: spop 2011-01-17 Sebastian Pop * graphite-dependences.c (reduction_dr_1): Allow several reductions in a reduction PBB. * graphite-sese-to-poly.c (split_reduction_stmt): Do not split PBBs that have already been marked as PBB_IS_REDUCTION. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/graphite@168955 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/ChangeLog.graphite | 7 +++++++ gcc/graphite-dependences.c | 7 ++++--- gcc/graphite-sese-to-poly.c | 4 +++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2c46ab6..587518d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2011-01-21 Sebastian Pop + * graphite-dependences.c (reduction_dr_1): Allow several reductions + in a reduction PBB. + * graphite-sese-to-poly.c (split_reduction_stmt): Do not split PBBs + that have already been marked as PBB_IS_REDUCTION. + +2011-01-21 Sebastian Pop + * graphite-scop-detection.c (same_close_phi_node): New. (remove_duplicate_close_phi): New. (make_close_phi_nodes_unique): New. diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 1782e76..091bbca 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,5 +1,12 @@ 2011-01-17 Sebastian Pop + * graphite-dependences.c (reduction_dr_1): Allow several reductions + in a reduction PBB. + * graphite-sese-to-poly.c (split_reduction_stmt): Do not split PBBs + that have already been marked as PBB_IS_REDUCTION. + +2011-01-17 Sebastian Pop + * graphite-scop-detection.c (same_close_phi_node): New. (remove_duplicate_close_phi): New. (make_close_phi_nodes_unique): New. diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c index d45c7ce..b9b1d1b 100644 --- a/gcc/graphite-dependences.c +++ b/gcc/graphite-dependences.c @@ -571,10 +571,11 @@ reduction_dr_1 (poly_bb_p pbb1, poly_dr_p pdr1, poly_dr_p pdr2) poly_dr_p pdr; FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb1), i, pdr) - if (PDR_TYPE (pdr) == PDR_WRITE) - break; + if (PDR_TYPE (pdr) == PDR_WRITE + && same_pdr_p (pdr, pdr1) && same_pdr_p (pdr, pdr2)) + return true; - return same_pdr_p (pdr, pdr1) && same_pdr_p (pdr, pdr2); + return false; } /* Return true when the data dependence relation between the data diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 301fb96..a7178ef 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -2640,7 +2640,9 @@ split_reduction_stmt (scop_p scop, gimple stmt) /* Do not split basic blocks with no writes to memory: the reduction will be the only write to memory. */ - if (nb_data_writes_in_bb (bb) == 0) + if (nb_data_writes_in_bb (bb) == 0 + /* Or if we have already marked BB as a reduction. */ + || PBB_IS_REDUCTION (pbb_from_bb (bb))) return bb; e1 = split_pbb (scop, pbb, bb, stmt);