Normalize all used global binders.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Mon, 13 Jul 2009 07:43:31 +0000 (09:43 +0200)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Mon, 13 Jul 2009 07:43:31 +0000 (09:43 +0200)
Previously, only function-typed binders were normalized (not necessarily
limited to global ones!).

Adders.hs
Normalize.hs

index f0987fdad484611e70e3f7495b44efaf5a0e668d..a281ea63467780d4f7e6b7b9a32cfae58061ff22 100644 (file)
--- a/Adders.hs
+++ b/Adders.hs
@@ -181,6 +181,9 @@ xand a b = hwand a b
 functiontest :: TFVec D3 (TFVec D4 Bit) -> TFVec D12 Bit
 functiontest = \v -> let r = concat v in r
 
+functiontest2 :: SizedInt D8 -> SizedInt D8
+functiontest2 = \a -> let r = a + 1 in r
+
 xhwnot x = hwnot x
 
 maptest :: TFVec D4 Bit -> TFVec D4 Bit
index fe544ede09973302e85921b7975a3616e0d1cdc4..d5b993acd298cb8b7c2ee05c015f22c06ec522bf 100644 (file)
@@ -514,7 +514,8 @@ normalizeBind bndr =
                 -- Find all vars used with a function type. All of these should be global
                 -- binders (i.e., functions used), since any local binders with a function
                 -- type should have been inlined already.
-                let used_funcs_set = CoreFVs.exprSomeFreeVars (\v -> (Type.isFunTy . snd . Type.splitForAllTys . Id.idType) v) expr'
+                bndrs <- getGlobalBinders
+                let used_funcs_set = CoreFVs.exprSomeFreeVars (\v -> not (Id.isDictId v) && v `elem` bndrs) expr'
                 let used_funcs = VarSet.varSetElems used_funcs_set
                 -- Process each of the used functions recursively
                 mapM normalizeBind used_funcs