summaryrefslogtreecommitdiff
path: root/compiler/cmm/CmmSpillReload.hs
diff options
context:
space:
mode:
authordias@eecs.tufts.edu <unknown>2009-03-16 21:35:06 +0000
committerdias@eecs.tufts.edu <unknown>2009-03-16 21:35:06 +0000
commit5dc8b425443200a5160b9d1399aca1808bfcffee (patch)
tree819845f0d60cfbbee7f7aec142ac504df73ccace /compiler/cmm/CmmSpillReload.hs
parent4bc25e8c30559b7a6a87b39afcc79340ae778788 (diff)
downloadhaskell-5dc8b425443200a5160b9d1399aca1808bfcffee.tar.gz
stack overflows and out of memory's
1. Stack overflow fixed by making dataflow monad strict in the state. 2. Out of memory fixed by "forgetting" lastoutfacts in the dataflow monad where we should. We were creating an unnecessarily long list that grew exponentially...
Diffstat (limited to 'compiler/cmm/CmmSpillReload.hs')
-rw-r--r--compiler/cmm/CmmSpillReload.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/cmm/CmmSpillReload.hs b/compiler/cmm/CmmSpillReload.hs
index 085dc377db..fb6931e006 100644
--- a/compiler/cmm/CmmSpillReload.hs
+++ b/compiler/cmm/CmmSpillReload.hs
@@ -66,7 +66,7 @@ changeRegs f live = live { in_regs = f (in_regs live) }
dualLiveLattice :: DataflowLattice DualLive
dualLiveLattice =
- DataflowLattice "variables live in registers and on stack" empty add False
+ DataflowLattice "variables live in registers and on stack" empty add True
where empty = DualLive emptyRegSet emptyRegSet
-- | compute in the Tx monad to track whether anything has changed
add new old = do stack <- add1 (on_stack new) (on_stack old)