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
Correctly treat errors as a nested list in mkTyConHType.
[matthijs/master-project/cλash.git]
/
Flatten.hs
diff --git
a/Flatten.hs
b/Flatten.hs
index 74b3232a338640a1372d120ce164b6b388be6b12..d25ef73aceabb2feec43007b1a469b267a72ce09 100644
(file)
--- a/
Flatten.hs
+++ b/
Flatten.hs
@@
-54,11
+54,10
@@
markSignal use id = markSignals use [id]
-- | Flatten a haskell function
flattenFunction ::
HsFunction -- ^ The function to flatten
-- | Flatten a haskell function
flattenFunction ::
HsFunction -- ^ The function to flatten
- ->
CoreBind
-- ^ The function value
+ ->
(CoreBndr, CoreExpr)
-- ^ The function value
-> FlatFunction -- ^ The resulting flat function
-> FlatFunction -- ^ The resulting flat function
-flattenFunction _ (Rec _) = error "Recursive binders not supported"
-flattenFunction hsfunc bind@(NonRec var expr) =
+flattenFunction hsfunc (var, expr) =
FlatFunction args res defs sigs
where
init_state = ([], [], 0)
FlatFunction args res defs sigs
where
init_state = ([], [], 0)
@@
-268,11
+267,12
@@
flattenExpr binds expr@(Case scrut b _ alts) = do
-- TODO: Special casing for higher order functions
-- Flatten the scrutinee
(_, res) <- flattenExpr binds scrut
-- TODO: Special casing for higher order functions
-- Flatten the scrutinee
(_, res) <- flattenExpr binds scrut
+ -- Put the scrutinee in the BindMap
+ let binds' = (b, Left res) : binds
case alts of
case alts of
- -- TODO include b in the binds list
- [alt] -> flattenSingleAltCaseExpr binds res b alt
+ [alt] -> flattenSingleAltCaseExpr binds' res b alt
-- Reverse the alternatives, so the __DEFAULT alternative ends up last
-- Reverse the alternatives, so the __DEFAULT alternative ends up last
- otherwise -> flattenMultipleAltCaseExpr binds res b (reverse alts)
+ otherwise -> flattenMultipleAltCaseExpr binds
'
res b (reverse alts)
where
flattenSingleAltCaseExpr ::
BindMap
where
flattenSingleAltCaseExpr ::
BindMap