From patchwork Mon Aug 2 20:20:22 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 60647 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 A7B9EB70AA for ; Tue, 3 Aug 2010 06:28:23 +1000 (EST) Received: (qmail 1618 invoked by alias); 2 Aug 2010 20:24:23 -0000 Received: (qmail 1374 invoked by uid 22791); 2 Aug 2010 20:24:20 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, TW_CF, TW_SV, T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-gx0-f175.google.com (HELO mail-gx0-f175.google.com) (209.85.161.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 02 Aug 2010 20:24:14 +0000 Received: by gxk2 with SMTP id 2so1547705gxk.20 for ; Mon, 02 Aug 2010 13:24:12 -0700 (PDT) Received: by 10.101.148.37 with SMTP id a37mr6847563ano.210.1280780652833; Mon, 02 Aug 2010 13:24:12 -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 w6sm10331093anb.23.2010.08.02.13.24.10 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 02 Aug 2010 13:24:12 -0700 (PDT) Received: by napoca (sSMTP sendmail emulation); Mon, 02 Aug 2010 15:24:09 -0500 From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: Tobias Grosser , gcc-graphite Subject: [PATCH 49/65] Add loop_exits_from_bb_p. Date: Mon, 2 Aug 2010 15:20:22 -0500 Message-Id: <1280780438-17543-50-git-send-email-sebpop@gmail.com> In-Reply-To: <1280780438-17543-1-git-send-email-sebpop@gmail.com> References: <1280780438-17543-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 From: spop 2010-07-20 Vladimir Kargov Sebastian Pop * cfgloop.c (is_loop_exit): Renamed loop_exits_to_bb_p. (loop_exits_from_bb_p): New. * cfgloop.h (is_loop_exit): Renamed loop_exits_to_bb_p. (loop_exits_from_bb_p): Declared. * graphite-scop-detection.c (scopdet_basic_block_info): Call loop_exits_to_bb_p. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/graphite@162353 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++++ gcc/ChangeLog.graphite | 10 ++++++++++ gcc/cfgloop.c | 19 +++++++++++++++++-- gcc/cfgloop.h | 3 ++- gcc/graphite-scop-detection.c | 2 +- 5 files changed, 40 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1fa3f50..7064ecc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2010-08-02 Vladimir Kargov + Sebastian Pop + + * cfgloop.c (is_loop_exit): Renamed loop_exits_to_bb_p. + (loop_exits_from_bb_p): New. + * cfgloop.h (is_loop_exit): Renamed loop_exits_to_bb_p. + (loop_exits_from_bb_p): Declared. + * graphite-scop-detection.c (scopdet_basic_block_info): Call + loop_exits_to_bb_p. + 2010-08-02 Sebastian Pop * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Add an diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index e4d59ce..96034ad 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,4 +1,14 @@ 2010-07-20 Vladimir Kargov + Sebastian Pop + + * cfgloop.c (is_loop_exit): Renamed loop_exits_to_bb_p. + (loop_exits_from_bb_p): New. + * cfgloop.h (is_loop_exit): Renamed loop_exits_to_bb_p. + (loop_exits_from_bb_p): Declared. + * graphite-scop-detection.c (scopdet_basic_block_info): Call + loop_exits_to_bb_p. + +2010-07-20 Vladimir Kargov * refined-regions.c: Include tree-pass.h, cfgloop.h, gimple.h, and tree-data-ref.h. diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c index 24f0ebc..d114563 100644 --- a/gcc/cfgloop.c +++ b/gcc/cfgloop.c @@ -1620,10 +1620,10 @@ single_exit (const struct loop *loop) return NULL; } -/* Returns true when BB has an edge exiting LOOP. */ +/* Returns true when BB has an incoming edge exiting LOOP. */ bool -is_loop_exit (struct loop *loop, basic_block bb) +loop_exits_to_bb_p (struct loop *loop, basic_block bb) { edge e; edge_iterator ei; @@ -1634,3 +1634,18 @@ is_loop_exit (struct loop *loop, basic_block bb) return false; } + +/* Returns true when BB has an outgoing edge exiting LOOP. */ + +bool +loop_exits_from_bb_p (struct loop *loop, basic_block bb) +{ + edge e; + edge_iterator ei; + + FOR_EACH_EDGE (e, ei, bb->succs) + if (loop_exit_edge_p (loop, e)) + return true; + + return false; +} diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index 1f0e3ca..722aa33 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -232,7 +232,8 @@ extern int num_loop_insns (const struct loop *); extern int average_num_loop_insns (const struct loop *); extern unsigned get_loop_level (const struct loop *); extern bool loop_exit_edge_p (const struct loop *, const_edge); -extern bool is_loop_exit (struct loop *, basic_block); +extern bool loop_exits_to_bb_p (struct loop *, basic_block); +extern bool loop_exits_from_bb_p (struct loop *, basic_block); extern void mark_loop_exit_edges (void); /* Loops & cfg manipulation. */ diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index baa4c34..07d94d0 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -594,7 +594,7 @@ scopdet_basic_block_info (basic_block bb, loop_p outermost_loop, { /* Ignore loop exits. They will be handled after the loop body. */ - if (is_loop_exit (loop, e->dest)) + if (loop_exits_to_bb_p (loop, e->dest)) { result.exits = true; continue;