diff options
author | Ben Gamari <ben@smart-cactus.org> | 2021-10-12 20:46:32 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2022-08-06 11:45:17 -0400 |
commit | c0348865ff8b9100a8ec54be03e375c3dddc8900 (patch) | |
tree | 72196c15585254eb672b787e04bf6d01144f9adc | |
parent | f8bec4e37827bc8ff77a00773692fea4e7193af4 (diff) | |
download | haskell-c0348865ff8b9100a8ec54be03e375c3dddc8900.tar.gz |
compiler: Eliminate two uses of foldr in favor of foldl'
These two uses constructed maps, which is a case where foldl' is
generally more efficient since we avoid constructing an intermediate
O(n)-depth stack.
-rw-r--r-- | compiler/GHC/Cmm/DebugBlock.hs | 2 | ||||
-rw-r--r-- | compiler/GHC/Cmm/Sink.hs | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/compiler/GHC/Cmm/DebugBlock.hs b/compiler/GHC/Cmm/DebugBlock.hs index b4528ae301..977ab271f7 100644 --- a/compiler/GHC/Cmm/DebugBlock.hs +++ b/compiler/GHC/Cmm/DebugBlock.hs @@ -121,7 +121,7 @@ cmmDebugGen modLoc decls = map (blocksForScope Nothing) topScopes | otherwise = panic "findP impossible" #endif - scopeMap = foldr (uncurry insertMulti) Map.empty childScopes + scopeMap = foldl' (\acc (key, scope) -> insertMulti key scope acc) Map.empty childScopes -- This allows us to recover ticks that we lost by flattening -- the graph. Basically, if the parent is A but the child is diff --git a/compiler/GHC/Cmm/Sink.hs b/compiler/GHC/Cmm/Sink.hs index 84f9317f21..68b20fd307 100644 --- a/compiler/GHC/Cmm/Sink.hs +++ b/compiler/GHC/Cmm/Sink.hs @@ -268,7 +268,7 @@ findJoinPoints blocks = mapFilter (>1) succ_counts all_succs = concatMap successors blocks succ_counts :: LabelMap Int - succ_counts = foldr (\l -> mapInsertWith (+) l 1) mapEmpty all_succs + succ_counts = foldl' (\acc l -> mapInsertWith (+) l 1 acc) mapEmpty all_succs -- -- filter the list of assignments to remove any assignments that |