]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.cfg.dataflow-analysis: when intersecting sets, treat uninitialized sets...
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 20 Aug 2009 23:15:41 +0000 (18:15 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 20 Aug 2009 23:15:41 +0000 (18:15 -0500)
basis/compiler/cfg/dataflow-analysis/dataflow-analysis.factor

index 275a4585b001c3c050cf64e08c7c850b01312dea..dde44fd15ddcfe8306242491e040274f2fa06c0e 100644 (file)
@@ -23,7 +23,11 @@ GENERIC# compute-in-set 2 ( bb out-sets dfa -- set )
 M: kill-block compute-in-set 3drop f ;
 
 M:: basic-block compute-in-set ( bb out-sets dfa -- set )
-    bb dfa predecessors [ out-sets at ] map bb dfa join-sets ;
+    ! Only consider initialized sets.
+    bb dfa predecessors
+    [ out-sets key? ] filter
+    [ out-sets at ] map
+    bb dfa join-sets ;
 
 :: update-in-set ( bb in-sets out-sets dfa -- ? )
     bb out-sets dfa compute-in-set