projects
/
matthijs
/
master-project
/
cλash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
No longer add a top level let before normalization.
[matthijs/master-project/cλash.git]
/
cλash
/
CLasH
/
Normalize.hs
diff --git
a/cλash/CLasH/Normalize.hs
b/cλash/CLasH/Normalize.hs
index 9828d5ceea96704f92b979766dd06be5bfcc7523..6eee47b3d39bcd1391ba4d1aba49b5c0aa83ae84 100644
(file)
--- a/
cλash/CLasH/Normalize.hs
+++ b/
cλash/CLasH/Normalize.hs
@@
-107,7
+107,7
@@
castsimpl expr@(Cast val ty) = do
-- Generate a binder for the expression
id <- Trans.lift $ mkBinderFor val "castval"
-- Extract the expression
-- Generate a binder for the expression
id <- Trans.lift $ mkBinderFor val "castval"
-- Extract the expression
- change $ Let (
Rec [(id, val)]
) (Cast (Var id) ty)
+ change $ Let (
NonRec id val
) (Cast (Var id) ty)
else
return expr
-- Leave all other expressions unchanged
else
return expr
-- Leave all other expressions unchanged
@@
-280,7
+280,7
@@
scrutsimpl expr@(Case scrut b ty alts) = do
if repr
then do
id <- Trans.lift $ mkBinderFor scrut "scrut"
if repr
then do
id <- Trans.lift $ mkBinderFor scrut "scrut"
- change $ Let (
Rec [(id, scrut)]
) (Case (Var id) b ty alts)
+ change $ Let (
NonRec id scrut
) (Case (Var id) b ty alts)
else
return expr
-- Leave all other expressions unchanged
else
return expr
-- Leave all other expressions unchanged
@@
-414,7
+414,7
@@
appsimpl expr@(App f arg) = do
if repr && not local_var
then do -- Extract representable arguments
id <- Trans.lift $ mkBinderFor arg "arg"
if repr && not local_var
then do -- Extract representable arguments
id <- Trans.lift $ mkBinderFor arg "arg"
- change $ Let (
Rec [(id, arg)]
) (App f (Var id))
+ change $ Let (
NonRec id arg
) (App f (Var id))
else -- Leave non-representable arguments unchanged
return expr
-- Leave all other expressions unchanged
else -- Leave non-representable arguments unchanged
return expr
-- Leave all other expressions unchanged
@@
-587,15
+587,11
@@
normalizeExpr ::
-> TranslatorSession CoreSyn.CoreExpr -- ^ The normalized expression
normalizeExpr what expr = do
-> TranslatorSession CoreSyn.CoreExpr -- ^ The normalized expression
normalizeExpr what expr = do
- -- Introduce an empty Let at the top level, so there will always be
- -- a let in the expression (none of the transformations will remove
- -- the last let).
- let expr' = Let (Rec []) expr
-- Normalize this expression
-- Normalize this expression
- trace (what ++ " before normalization:\n\n" ++ showSDoc ( ppr expr
'
) ++ "\n") $ return ()
- expr'
' <- dotransforms transforms expr'
- trace ("\n" ++ what ++ " after normalization:\n\n" ++ showSDoc ( ppr expr'
'
)) $ return ()
- return expr'
'
+ trace (what ++ " before normalization:\n\n" ++ showSDoc ( ppr expr ) ++ "\n") $ return ()
+ expr'
<- dotransforms transforms expr
+ trace ("\n" ++ what ++ " after normalization:\n\n" ++ showSDoc ( ppr expr')) $ return ()
+ return expr'
-- | Get the value that is bound to the given binder at top level. Fails when
-- there is no such binding.
-- | Get the value that is bound to the given binder at top level. Fails when
-- there is no such binding.