[remove caf initialization from main routine, let cafs be statically initialized.
John Meacham <john@repetae.net>**20100327000012
 Ignore-this: 257f92957d68790ed69ff5e8b53d549a
] hunk ./src/Grin/DeadCode.hs 4
+import Control.Monad
hunk ./src/Grin/DeadCode.hs 6
-import Monad
hunk ./src/Grin/DeadCode.hs 42
+    forM_ (grinCafs grin) $ \ (v,NodeC t []) -> do
+        (0,fn) <- tagUnfunction t
+        v' <- supplyValue usedCafs v
+        addRule $ conditionalRule id v' $ (suspFuncs `isSuperSetOf` value (Set.singleton fn))
+        addRule $ v' `implies` (sValue usedFuncs fn)
hunk ./src/Grin/DeadCode.hs 68
-        argSet = fg ua 
+        argSet = fg ua
hunk ./src/Grin/FromE.hs 221
-        initCafs = sequenceG_ [ BaseOp Overwrite [(Var v TyINode),node] | (v,node) <- cafs ]
+        --initCafs = sequenceG_ [ BaseOp Overwrite [(Var v TyINode),node] | (v,node) <- cafs ]
+        initCafs = Return []
hunk ./src/Grin/NodeAnalyze.hs 120
+            doFunc (toAtom "@initcafs",[] :-> initCafs grin)
hunk ./src/Grin/NodeAnalyze.hs 142
+initCafs grin = f (grinCafs grin) (Return []) where
+        f ((v,node):rs) rest = BaseOp Overwrite [(Var v TyINode),node] :>>= [] :-> f rs rest
+        f [] rest = rest
+