[have deadcode remove unused local functions, get rid of empty Let {} blocks.
John Meacham <john@repetae.net>**20060817020653] hunk ./Grin/DeadCode.hs 130
-                    n' <- supplyValue usedFuncs n
-                    addRule $ fn' `implies` n'
+                    --n' <- supplyValue usedFuncs n
+                    --addRule $ fn' `implies` n'
+                    return ()
hunk ./Grin/DeadCode.hs 183
-    f lt@Let { expDefs = defs }  = return lt { expDefs = [ updateFuncDefProps df { funcDefBody = margs name body } | df@FuncDef { funcDefName = name, funcDefBody = body } <- defs ] }
+    f lt@Let { expDefs = defs }  = if null defs' then return (expBody lt) else return lt { expDefs = defs' } where
+        defs' = [ updateFuncDefProps df { funcDefBody = margs name body } | df@FuncDef { funcDefName = name, funcDefBody = body } <- defs, name `Set.member` funSet ]
hunk ./Grin/Devolve.hs 31
-            return lt { expDefs = rmaps, expBody = proc body }
+            return $ if null rmaps then proc body else lt { expDefs = rmaps, expBody = proc body }
hunk ./Main.hs 786
+        x <- opt "After Devolve Optimization" x
+        x <- return $ normalizeGrin x
hunk ./Main.hs 795
+        x <- opt "After Devolve Optimization" x
+        x <- return $ normalizeGrin x