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
Make flattenExpr return signal definitions for arguments.
[matthijs/master-project/cλash.git]
/
Flatten.hs
diff --git
a/Flatten.hs
b/Flatten.hs
index 52316eca08a97dd07d0cfff45e555c3ab0c17aff..598c8c6050df46cba753bb97351aff4abf4c559a 100644
(file)
--- a/
Flatten.hs
+++ b/
Flatten.hs
@@
-44,6
+44,10
@@
data FlatFunction = FlatFunction {
type SignalUseMap = HsValueMap SignalUse
type SignalDefMap = HsValueMap SignalDef
type SignalUseMap = HsValueMap SignalUse
type SignalDefMap = HsValueMap SignalDef
+useMapToDefMap :: SignalUseMap -> SignalDefMap
+useMapToDefMap (Single (SignalUse u)) = Single (SignalDef u)
+useMapToDefMap (Tuple uses) = Tuple (map useMapToDefMap uses)
+
type SignalId = Int
data SignalUse = SignalUse {
sigUseId :: SignalId
type SignalId = Int
data SignalUse = SignalUse {
sigUseId :: SignalId
@@
-167,7
+171,8
@@
flattenExpr binds lam@(Lam b expr) = do
-- Create signal names for the binder
defs <- genSignalUses arg_ty
let binds' = (b, Left defs):binds
-- Create signal names for the binder
defs <- genSignalUses arg_ty
let binds' = (b, Left defs):binds
- flattenExpr binds' expr
+ (args, res) <- flattenExpr binds' expr
+ return ((useMapToDefMap defs) : args, res)
flattenExpr binds (Var id) =
case bind of
flattenExpr binds (Var id) =
case bind of