aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgloop.c
diff options
context:
space:
mode:
authorVladimir Kargov <kargov@gmail.com>2010-08-11 20:29:10 +0000
committerSebastian Pop <spop@gcc.gnu.org>2010-08-11 20:29:10 +0000
commitf4ce375dd84cef63084ae910367a8f32b595d8eb (patch)
tree179c0e30f56deacb4321b27a2f422431e26876a2 /gcc/cfgloop.c
parent15d17127b2a3db62eb74a39e56bd6b63b1d8ef57 (diff)
downloadgcc-f4ce375dd84cef63084ae910367a8f32b595d8eb.zip
gcc-f4ce375dd84cef63084ae910367a8f32b595d8eb.tar.gz
gcc-f4ce375dd84cef63084ae910367a8f32b595d8eb.tar.bz2
Add loop_exits_from_bb_p.
2010-07-20 Vladimir Kargov <kargov@gmail.com> Sebastian Pop <sebastian.pop@amd.com> * 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. Co-Authored-By: Sebastian Pop <sebastian.pop@amd.com> From-SVN: r163153
Diffstat (limited to 'gcc/cfgloop.c')
-rw-r--r--gcc/cfgloop.c19
1 files changed, 17 insertions, 2 deletions
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;
+}