Skip to content

Commit 267199b

Browse files
committed
less likely to duplicate work
1 parent 452c5b5 commit 267199b

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

clash-lib/src/Clash/Normalize.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import qualified Control.Lens as Lens
2626
import Control.Monad (when, unless)
2727
import qualified Control.Monad.IO.Class as Monad (liftIO)
2828
import Control.Monad.State.Strict (State)
29-
import Data.Bifunctor (bimap)
29+
import Data.Bifunctor (first, second)
3030
import Data.Default (def)
3131
import Data.Either (lefts,partitionEithers)
3232
import Data.Foldable (traverse_)
@@ -170,8 +170,10 @@ normalizeStep q binds = do
170170
Just id' -> do
171171
(bound, _) <- MVar.readMVar binds
172172
unless (id' `elemVarSet` bound) $ do
173+
-- immediately mark this work as being done
174+
MVar.modifyMVar_ binds (pure . first (`extendVarSet` id'))
173175
pair <- normalize' id' q
174-
MVar.modifyMVar_ binds (pure . bimap (`extendVarSet` id') (pair:))
176+
MVar.modifyMVar_ binds (pure . second (pair:))
175177
normalizeStep q binds
176178
Nothing -> pure ()
177179

0 commit comments

Comments
 (0)