Made sure that channels are usage checked (by counting them as written variables)

This commit is contained in:
Neil Brown 2009-02-09 10:30:44 +00:00
parent 938ceaf12f
commit 48b107b099
2 changed files with 5 additions and 2 deletions

View File

@ -110,7 +110,8 @@ checkArrayUsage (m,p) = mapM_ (checkIndexes m) $ Map.toList $
-- Returns (array name, list of written-to indexes, list of read-from indexes)
groupArrayIndexes :: ParItems (BK, Vars) -> Map.Map String (ParItems (BK, [A.Expression], [A.Expression]))
groupArrayIndexes = filterByKey . fmap
(\(bk,vs) -> zipMap (join bk) (makeList $ Map.keysSet $ writtenVars vs) (makeList $ readVars vs))
(\(bk,vs) -> zipMap (join bk) (makeList $ (Map.keysSet $ writtenVars vs)
`Set.union` (usedVars vs)) (makeList $ readVars vs))
where
join :: b -> Maybe [a] -> Maybe [a] -> Maybe (b, [a],[a])
join k x y = Just (k, fromMaybe [] x, fromMaybe [] y)

View File

@ -211,7 +211,9 @@ checkPlainVarUsage (m, p) = check p
where
addBK :: BK -> Vars -> VarsBK
addBK bk vs = VarsBK (Map.fromAscList $ zip (Set.toAscList $ readVars vs) (repeat bk))
(Map.map (\me -> (maybeToList me, bk)) $ writtenVars vs)
((Map.map (\me -> (maybeToList me, bk)) $ writtenVars vs)
`Map.union` Map.fromAscList (zip (Set.toAscList $ usedVars
vs) (repeat ([], bk))))
reps (RepParItem r p) = r : reps p
reps (SeqItems _) = []