From patchwork Tue Jan 18 05:38:01 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 79251 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 09388B7139 for ; Tue, 18 Jan 2011 16:38:35 +1100 (EST) Received: (qmail 18672 invoked by alias); 18 Jan 2011 05:38:26 -0000 Received: (qmail 18457 invoked by uid 22791); 18 Jan 2011 05:38:24 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-yw0-f47.google.com (HELO mail-yw0-f47.google.com) (209.85.213.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 18 Jan 2011 05:38:20 +0000 Received: by ywi6 with SMTP id 6so2040523ywi.20 for ; Mon, 17 Jan 2011 21:38:18 -0800 (PST) Received: by 10.150.92.1 with SMTP id p1mr609344ybb.246.1295329098091; Mon, 17 Jan 2011 21:38:18 -0800 (PST) Received: from napoca (adsl-99-184-93-67.dsl.austtx.sbcglobal.net [99.184.93.67]) by mx.google.com with ESMTPS id q4sm2701259yba.14.2011.01.17.21.38.16 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 17 Jan 2011 21:38:17 -0800 (PST) Received: by napoca (sSMTP sendmail emulation); Mon, 17 Jan 2011 23:38:14 -0600 From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: rguenther@suse.de, gcc-graphite@googlegroups.com, Sebastian Pop Subject: [PATCH 3/5] Allow several reductions in a reduction PBB. Date: Mon, 17 Jan 2011 23:38:01 -0600 Message-Id: <1295329083-27160-4-git-send-email-sebpop@gmail.com> In-Reply-To: <1295329083-27160-1-git-send-email-sebpop@gmail.com> References: <1295329083-27160-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-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org 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. --- gcc/ChangeLog.graphite | 7 +++++++ gcc/graphite-dependences.c | 7 ++++--- gcc/graphite-sese-to-poly.c | 4 +++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 7cf92a5..0167f22 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 1820d8b..6129905 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 88eee71..c578025 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);