Disable letmerge.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Mon, 17 Aug 2009 09:36:06 +0000 (11:36 +0200)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Mon, 17 Aug 2009 09:43:34 +0000 (11:43 +0200)
When faced with nested recursive and non-recursive lets, letmerge becomes
complicated very quickly, so we might need to rewrite it if it's really
needed. For now, just disable it to prevent it from breaking things.

cλash/CLasH/Normalize.hs

index b16eb7ae536f89e475e58851296d98af08e21c4f..192ed55cf0500c1655fb9b1adba6c3a79512d596 100644 (file)
@@ -267,6 +267,7 @@ letremoveunused expr@(Let (Rec binds) res) = do
 letremoveunused expr = return expr
 letremoveunusedtop = everywhere ("letremoveunused", letremoveunused)
 
+{-
 --------------------------------
 -- Identical let binding merging
 --------------------------------
@@ -297,7 +298,8 @@ letmerge expr@(Let _ _) = do
 -- Leave all other expressions unchanged
 letmerge expr = return expr
 letmergetop = everywhere ("letmerge", letmerge)
-    
+-}
+
 --------------------------------
 -- Function inlining
 --------------------------------
@@ -614,7 +616,7 @@ funextracttop = everywhere ("funextract", funextract)
 
 
 -- What transforms to run?
-transforms = [argproptop, funextracttop, etatop, betatop, castproptop, letremovesimpletop, letderectop, letremovetop, letsimpltop, letflattop, scrutsimpltop, casesimpltop, caseremovetop, inlinenonreptop, appsimpltop, letmergetop, letremoveunusedtop, castsimpltop, lambdasimpltop]
+transforms = [argproptop, funextracttop, etatop, betatop, castproptop, letremovesimpletop, letderectop, letremovetop, letsimpltop, letflattop, scrutsimpltop, casesimpltop, caseremovetop, inlinenonreptop, appsimpltop, letremoveunusedtop, castsimpltop, lambdasimpltop]
 
 -- | Returns the normalized version of the given function.
 getNormalized ::