[fix bug where Grin.DeadCode would sometimes rename some variables non-uniquely
John Meacham <john@repetae.net>**20090901052849
 Ignore-this: 9ad87b77ba99445b2f75f69eb30f0732
] hunk ./src/Grin/DeadCode.hs 71
-    newFuncs <- flip mconcatMapM (grinFuncs grin) $ \ (x,y) -> do
-        if not $ x `Set.member` funSet then tick stats "Optimize.dead-code.func" >> return [] else do
-        r <- runStatIO stats $ removeDeadArgs postInline funSet directFuncs cafSet argSet (x,y)
-        return [r]
+    let f ((x,y):xs) rs ws = do
+            if not $ x `Set.member` funSet then tick stats "Optimize.dead-code.func" >> f xs rs ws else do
+            (ws',r) <- runStatIO stats $ removeDeadArgs postInline funSet directFuncs cafSet argSet (x,y) ws
+            f xs (r:rs) ws'
+        f [] rs _ = return rs
+    newFuncs <- f (grinFuncs grin) [] whizState
+    --newFuncs <- flip mconcatMapM (grinFuncs grin) $ \ (x,y) -> do
hunk ./src/Grin/DeadCode.hs 120
-                addRule (mconcatMap doConst vs)
+                addRule (mconcatMap doNode vs)
hunk ./src/Grin/DeadCode.hs 169
-removeDeadArgs :: MonadStats m => Bool -> Set.Set Atom -> Set.Set Atom -> (Set.Set Var) -> (Set.Set (Atom,Int)) -> (Atom,Lam) -> m (Atom,Lam)
-removeDeadArgs postInline funSet directFuncs usedCafs usedArgs (a,l) =  whizExps f (margs a l) >>= return . (,) a where
+removeDeadArgs :: MonadStats m => Bool -> Set.Set Atom -> Set.Set Atom -> (Set.Set Var) -> (Set.Set (Atom,Int)) -> (Atom,Lam) -> WhizState -> m (WhizState,(Atom,Lam))
+removeDeadArgs postInline funSet directFuncs usedCafs usedArgs (a,l) whizState =  whizExps f (margs a l) >>= \(l,ws) -> return (ws,(a,l)) where
+    whizExps f l = whiz (\_ x -> x) (\(p,e) -> f e >>= \e' -> return  (Just (p,e'))) f whizState l
hunk ./src/Grin/NodeAnalyze.hs 24
+import Grin.Lint
hunk ./src/Grin/NodeAnalyze.hs 127
-    --(rm,res) <- solve (const (return ())) cs
-    (rm,res) <- solve putStrLn cs
+    (rm,res) <- solve (const (return ())) cs
+    --(rm,res) <- solve putStrLn cs
hunk ./src/Grin/NodeAnalyze.hs 149
-            tell $ Left (fa name i vt) `equals` Left (vr v vt)
+            tell $ cAnnotate "FunArg" $ Left (fa name i vt) `equals` Left (vr v vt)
hunk ./src/Grin/NodeAnalyze.hs 157
-    zVar v TyNode = tell $ Left (vr v TyNode) `equals` Right (N WHNF Top)
-    zVar v t = tell $ Left (vr v t) `equals` Right top
+    zVar s v TyNode = tell $ cAnnotate ("zVar - tynode " ++ s) $ Left (vr v TyNode) `equals` Right (N WHNF Top)
+    zVar s v t = tell $ cAnnotate ("zVar - inode " ++ s) $ Left (vr v t) `equals` Right top
hunk ./src/Grin/NodeAnalyze.hs 172
-            forM_ (Set.toList $ freeVars v) $ \ (v,vt) -> zVar v vt
+            forM_ (Set.toList $ freeVars v) $ \ (v,vt) -> zVar "Bind" v vt
hunk ./src/Grin/NodeAnalyze.hs 177
-    isfn (Todo True  _) x y = Left x `equals` y
+    isfn (Todo True  _) x y = cAnnotate "isfn True" $ Left x `equals` y
hunk ./src/Grin/NodeAnalyze.hs 189
-            forM_ (Set.toList $ freeVars v) $ \ (v,vt) -> zVar v vt
+            forM_ (Set.toList $ freeVars v) $ \ (v,vt) -> zVar "Alt" v vt
hunk ./src/Grin/Whiz.hs 1
-module Grin.Whiz(whiz, fizz, whizState, normalizeGrin,normalizeGrin', applySubstE, applySubst, whizExps) where
+module Grin.Whiz(whiz, fizz, WhizState, whizState, normalizeGrin,normalizeGrin', applySubstE, applySubst, whizExps) where
hunk ./src/Util/UnionSolve.hs 8
+    cAnnotate,
hunk ./src/Util/UnionSolve.hs 54
-data CL l v = (Either v l) `Clte` (Either v l) | (Either v l) `Cset` (Either v l)
+data CL l v = (Either v l) `Clte` (Either v l) | (Either v l) `Cset` (Either v l) | CLAnnotate String (CL l v)
hunk ./src/Util/UnionSolve.hs 57
+cAnnotate :: String -> C l v -> C l v
+cAnnotate s (C seq set) = C (fmap (CLAnnotate s) seq) set
+
hunk ./src/Util/UnionSolve.hs 107
+collectVars (CLAnnotate s x:xs) = collectVars (x:xs)
hunk ./src/Util/UnionSolve.hs 127
-    let prule (Left x `Clte` Left y) = ans where
+    let prule (CLAnnotate s cr) =  putLog s >> prule cr
+        prule (Left x `Clte` Left y) = ans where