NCG: Do the actual reversing of SCCs
authorbenl@ouroborus.net <unknown>
Thu, 24 Jun 2010 08:27:17 +0000 (08:27 +0000)
committerbenl@ouroborus.net <unknown>
Thu, 24 Jun 2010 08:27:17 +0000 (08:27 +0000)
compiler/nativeGen/RegAlloc/Graph/Main.hs

index 6b01298..069c8c0 100644 (file)
@@ -212,8 +212,10 @@ regAlloc_spin
                        <- regSpill code_coalesced slotsFree rsSpill
 
                -- recalculate liveness
---             let code_nat    = map stripLive code_spilled
-               code_relive     <- mapM regLiveness code_spilled
+               -- NOTE: we have to reverse the SCCs here to get them back into the reverse-dependency
+               --       order required by computeLiveness. If they're not in the correct order
+               --       that function will panic.
+               code_relive     <- mapM (regLiveness . reverseBlocksInTops) code_spilled
 
                -- record what happened in this stage for debugging
                let stat        =