From 5bb235d38ff2cae5101a03bec6fe073d461f4a0f Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@slava-pestovs-macbook-pro.local>
Date: Fri, 5 Jun 2009 17:32:12 -0500
Subject: [PATCH] compiler.cfg.checker: run if a variable is set

---
 basis/compiler/cfg/checker/checker.factor     |  3 +++
 basis/compiler/cfg/optimizer/optimizer.factor | 13 ++++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/basis/compiler/cfg/checker/checker.factor b/basis/compiler/cfg/checker/checker.factor
index 4aa2088143..4f215f1dc8 100644
--- a/basis/compiler/cfg/checker/checker.factor
+++ b/basis/compiler/cfg/checker/checker.factor
@@ -16,6 +16,9 @@ ERROR: last-insn-not-a-jump insn ;
         [ ##return? ]
         [ ##callback-return? ]
         [ ##jump? ]
+        [ ##fixnum-add-tail? ]
+        [ ##fixnum-sub-tail? ]
+        [ ##fixnum-mul-tail? ]
         [ ##call? ]
     } 1|| [ drop ] [ last-insn-not-a-jump ] if ;
 
diff --git a/basis/compiler/cfg/optimizer/optimizer.factor b/basis/compiler/cfg/optimizer/optimizer.factor
index 8ceafd1693..eda55bef86 100644
--- a/basis/compiler/cfg/optimizer/optimizer.factor
+++ b/basis/compiler/cfg/optimizer/optimizer.factor
@@ -11,9 +11,19 @@ compiler.cfg.dce
 compiler.cfg.write-barrier
 compiler.cfg.liveness
 compiler.cfg.rpo
-compiler.cfg.phi-elimination ;
+compiler.cfg.phi-elimination
+compiler.cfg.checker ;
 IN: compiler.cfg.optimizer
 
+SYMBOL: check-optimizer?
+
+t check-optimizer? set-global
+
+: ?check ( cfg -- cfg' )
+    check-optimizer? get [
+        dup check-cfg
+    ] when ;
+
 : optimize-cfg ( cfg -- cfg' )
     [
         compute-predecessors
@@ -27,4 +37,5 @@ IN: compiler.cfg.optimizer
         eliminate-dead-code
         eliminate-write-barriers
         eliminate-phis
+        ?check
     ] with-scope ;