From 285f404a1d7c8026aeb6e52f4ec78be905dd9c74 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Mon, 17 Aug 2009 11:42:37 +0200 Subject: [PATCH] Revert "Limit flattenLets to non-recursive lets only." This reverts commit de2b45772572a90429ffe41a86a7ba08e7de6d4b. --- "c\316\273ash/CLasH/Utils/Core/CoreTools.hs" | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git "a/c\316\273ash/CLasH/Utils/Core/CoreTools.hs" "b/c\316\273ash/CLasH/Utils/Core/CoreTools.hs" index 3ba2622..094b702 100644 --- "a/c\316\273ash/CLasH/Utils/Core/CoreTools.hs" +++ "b/c\316\273ash/CLasH/Utils/Core/CoreTools.hs" @@ -299,17 +299,19 @@ hasStateType expr = case getType expr of Just ty -> isStateType ty --- | Flattens nested non-recursive lets into a single list of bindings. The --- expression passed does not have to be a let expression, if it isn't an --- empty list of bindings is returned. +-- | Flattens nested lets into a single list of bindings. The expression +-- passed does not have to be a let expression, if it isn't an empty list of +-- bindings is returned. flattenLets :: CoreSyn.CoreExpr -- ^ The expression to flatten. -> ([Binding], CoreSyn.CoreExpr) -- ^ The bindings and resulting expression. -flattenLets (CoreSyn.Let (CoreSyn.NonRec bndr expr) res) = - ((bndr, expr):bindings, res') +flattenLets (CoreSyn.Let binds expr) = + (bindings ++ bindings', expr') where -- Recursively flatten the contained expression - (bindings, res') = flattenLets res + (bindings', expr') =flattenLets expr + -- Flatten our own bindings to remove the Rec / NonRec constructors + bindings = CoreSyn.flattenBinds [binds] flattenLets expr = ([], expr) -- | Create bunch of nested non-recursive let expressions from the given -- 2.30.2