[make specialization in the type analysis pass optional, don't specialize til after class methods have been generated.
John Meacham <john@repetae.net>**20060406000209] hunk ./E/TypeAnalysis.hs 50
-typeAnalyze :: Program -> IO (Program,Bool)
-typeAnalyze prog = do
+typeAnalyze :: Bool -> Program -> IO Program
+typeAnalyze doSpecialize prog = do
hunk ./E/TypeAnalysis.hs 74
-    unusedRules <- supplyReadValues ur >>= return . fsts . filter (not . snd)
-    unusedValues <- supplyReadValues uv >>= return . fsts . filter (not . snd)
-    let (prog',stats) = runStatM $ specializeProgram (Set.fromList unusedRules) (Set.fromList unusedValues) prog
-    prog <- annotateProgram mempty lamdel (\_ -> return) (\_ -> return) prog'
-    --when (stats /= mempty) $ printStat "TypeAnalysis" stats
-    return (prog { progStats = progStats prog `mappend` stats },stats /= mempty)
+    if doSpecialize then do
+        unusedRules <- supplyReadValues ur >>= return . fsts . filter (not . snd)
+        unusedValues <- supplyReadValues uv >>= return . fsts . filter (not . snd)
+        let (prog',stats) = runStatM $ specializeProgram (Set.fromList unusedRules) (Set.fromList unusedValues) prog
+        prog <- annotateProgram mempty lamdel (\_ -> return) (\_ -> return) prog'
+        return prog { progStats = progStats prog `mappend` stats }
+     else return prog
hunk ./Main.hs 299
-        mprog <- transformProgram "typeAnalyze" (dump FD.Pass) (fmap fst . typeAnalyze) mprog
+        mprog <- transformProgram "typeAnalyze" (dump FD.Pass) (typeAnalyze True) mprog
hunk ./Main.hs 421
-    (prog,didSomething) <- if (fopts FO.TypeAnalysis) then do typeAnalyze prog else return (prog,False)
+    --prog <- if (fopts FO.TypeAnalysis) then do typeAnalyze True prog else return prog
+    prog <- transformProgram "typeAnalyze" True (typeAnalyze True) prog
hunk ./Main.hs 425
-    prog <- if didSomething then do
+    prog <- if True then do
hunk ./Main.hs 500
-    (prog,_) <- if (fopts FO.TypeAnalysis) then do typeAnalyze prog else return (prog,False)
+    prog <- if (fopts FO.TypeAnalysis) then do typeAnalyze False prog else return prog
hunk ./Main.hs 524
+
hunk ./Main.hs 535
+    --prog <- if (fopts FO.TypeAnalysis) then do typeAnalyze True prog else return prog
+    prog <- transformProgram "typeAnalyze" True (typeAnalyze True) prog