From ff81b055a503e346682be1748075be02088ab6fe Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@slava-pestovs-macbook-pro.local>
Date: Tue, 28 Jul 2009 08:47:50 -0500
Subject: [PATCH] compiler.cfg.utilities: add loop-entry? word

---
 basis/compiler/cfg/linearization/linearization.factor | 3 +--
 basis/compiler/cfg/utilities/utilities.factor         | 3 +++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/basis/compiler/cfg/linearization/linearization.factor b/basis/compiler/cfg/linearization/linearization.factor
index f9e0e54afc..cc148d34d8 100755
--- a/basis/compiler/cfg/linearization/linearization.factor
+++ b/basis/compiler/cfg/linearization/linearization.factor
@@ -26,8 +26,7 @@ M: insn linearize-insn , drop ;
     [ number>> ] bi@ 1 - = ; inline
 
 : emit-loop-entry? ( bb successor -- ? )
-    [ back-edge? not ]
-    [ nip dup predecessors>> [ swap back-edge? ] with any? ] 2bi and ;
+    [ back-edge? not ] [ nip loop-entry? ] 2bi and ;
 
 : emit-branch ( bb successor -- )
     2dup emit-loop-entry? [ _loop-entry ] when
diff --git a/basis/compiler/cfg/utilities/utilities.factor b/basis/compiler/cfg/utilities/utilities.factor
index 8cb70cc649..d242d5d90d 100644
--- a/basis/compiler/cfg/utilities/utilities.factor
+++ b/basis/compiler/cfg/utilities/utilities.factor
@@ -15,6 +15,9 @@ PREDICATE: kill-block < basic-block
 : back-edge? ( from to -- ? )
     [ number>> ] bi@ >= ;
 
+: loop-entry? ( bb -- ? )
+    dup predecessors>> [ swap back-edge? ] with any? ;
+
 : empty-block? ( bb -- ? )
     instructions>> {
         [ length 1 = ]